public void Planimeter0() { // Check fix for pole-encircling bug found 2011-03-16 var pa = new double[][] { new double[] { 89, 0 }, new double[] { 89, 90 }, new double[] { 89, 180 }, new double[] { 89, 270 } }; PolygonResult a = Planimeter(pa); AssertEquals(a.Perimeter, 631819.8745, 1e-4); AssertEquals(a.Area, 24952305678.0, 1); var pb = new double[][] { new double[] { -89, 0 }, new double[] { -89, 90 }, new double[] { -89, 180 }, new double[] { -89, 270 } }; a = Planimeter(pb); AssertEquals(a.Perimeter, 631819.8745, 1e-4); AssertEquals(a.Area, -24952305678.0, 1); var pc = new double[][] { new double[] { 0, -1 }, new double[] { -1, 0 }, new double[] { 0, 1 }, new double[] { 1, 0 } }; a = Planimeter(pc); AssertEquals(a.Perimeter, 627598.2731, 1e-4); AssertEquals(a.Area, 24619419146.0, 1); var pd = new double[][] { new double[] { 90, 0 }, new double[] { 0, 0 }, new double[] { 0, 90 } }; a = Planimeter(pd); AssertEquals(a.Perimeter, 30022685, 1); AssertEquals(a.Area, 63758202715511.0, 1); a = PolyLength(pd); AssertEquals(a.Perimeter, 20020719, 1); Assert.True(IsNaN(a.Area)); }
public void Planimeter12() { // Area of arctic circle (not really -- adjunct to rhumb-area test) double[][] points = new double[][] { new double[] { 66.562222222, 0 }, new double[] { 66.562222222, 180 } }; PolygonResult a = Planimeter(points); Assert.Equal(10465729, a.Perimeter, 0); Assert.Equal(0, a.Area, 0); }
public void Planimeter5() { // Check fix for Planimeter pole crossing bug found 2011-06-24 var points = new double[][] { new double[] { 89, 0.1 }, new double[] { 89, 90.1 }, new double[] { 89, -179.9 } }; PolygonResult a = Planimeter(points); AssertEquals(539297, a.Perimeter, 1); AssertEquals(12476152838.5, a.Area, 1); }
public void Planimeter13() { // Check encircling pole twice double[][] points = new double[][] { new double[] { 89, -360 }, new double[] { 89, -240 }, new double[] { 89, -120 }, new double[] { 89, 0 }, new double[] { 89, 120 }, new double[] { 89, 240 } }; PolygonResult a = Planimeter(points); AssertEquals(1160741, a.Perimeter, 1); AssertEquals(32415230256.0, a.Area, 1); }
static PolygonResult STPolygonResult(Geometry instance, bool IsLine) { Geodesic g = Geodesic.WGS84; var line = new GeographicLib.PolygonArea(g, IsLine); int points = NTSGeographyWrapper.STNumPoinst(instance); for (int i = 1; i < points; i++) { Coordinate currentPoint = NTSGeographyWrapper.STPoints(instance)[i]; line.AddPoint(currentPoint.Y, currentPoint.X); } PolygonResult r = line.Compute(); return(r); }
public static void main(string[] args) { PolygonArea p = new PolygonArea(Geodesic.WGS84, false); try { var inp = (from arg in args select double.Parse(arg)).GetEnumerator(); while (inp.MoveNext()) { double lat = inp.Current; inp.MoveNext(); double lon = inp.Current; p.AddPoint(lat, lon); } } catch (Exception e) { } PolygonResult r = p.Compute(); Console.WriteLine(r.Num + " " + r.Perimeter + " " + r.Area); }
public void Planimeter6() { // Check fix for Planimeter lon12 rounding bug found 2012-12-03 var pa = new double[][] { new double[] { 9, -0.00000000000001 }, new double[] { 9, 180 }, new double[] { 9, 0 } }; PolygonResult a = Planimeter(pa); AssertEquals(a.Perimeter, 36026861, 1); AssertEquals(a.Area, 0, 1); var pb = new double[][] { new double[] { 9, 0.00000000000001 }, new double[] { 9, 0 }, new double[] { 9, 180 } }; a = Planimeter(pb); AssertEquals(a.Perimeter, 36026861, 1); AssertEquals(a.Area, 0, 1); var pc = new double[][] { new double[] { 9, 0.00000000000001 }, new double[] { 9, 180 }, new double[] { 9, 0 } }; a = Planimeter(pc); AssertEquals(a.Perimeter, 36026861, 1); AssertEquals(a.Area, 0, 1); var pd = new double[][] { new double[] { 9, -0.00000000000001 }, new double[] { 9, 0 }, new double[] { 9, 180 } }; a = Planimeter(pd); AssertEquals(a.Perimeter, 36026861, 1); AssertEquals(a.Area, 0, 1); }
internal static double STArea(object instance) { PolygonResult r = STPolygonResult((Geometry)instance, false); return(r.Area); }