public void DistanceTest() { // expected distances takes from: //1. Lowrance HDS7 Gen3 //2. http://edwilliams.org/gccalc.htm var basePoint = new CoordinatePoint(new Latitude(60, 07.328), new Longitude(32, 18.719)); var two = new CoordinatePoint(new Latitude(60, 12.324), new Longitude(32, 15.530)); //Lowrance HDS7 Gen3 Assert.AreEqual(9710, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 5); Assert.AreEqual(9710, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 26); //edwilliams.org Assert.AreEqual(9735.229, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 25); Assert.AreEqual(9735.229, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 0.01d); //great accuracy two = new CoordinatePoint(new Latitude(57, 36.631), new Longitude(29, 44.306)); //Lowrance HDS7 Gen3 Assert.AreEqual(315800, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 200); Assert.AreEqual(315800, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 1000); //edwilliams.org Assert.AreEqual(316682.824, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 700); Assert.AreEqual(316682.824, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 10); two = new CoordinatePoint(new Latitude(51, 11.377), new Longitude(44, 14.519)); Assert.AreEqual(1239000, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 700); Assert.AreEqual(1239000, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 5000); two = new CoordinatePoint(new Latitude(60, 07.317), new Longitude(32, 18.822)); //Lowrance HDS7 Gen3 Assert.AreEqual(97.3d, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 0.1d); Assert.AreEqual(97.3d, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 0.4d); //edwilliams.org Assert.AreEqual(97.598, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 0.4d); Assert.AreEqual(97.598, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 0.01d); two = new CoordinatePoint(new Latitude(60, 07.330), new Longitude(32, 18.716)); Assert.AreEqual(5.1d, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 0.5d); Assert.AreEqual(5.1d, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 0.5d); //too poor accuracy with flat method Assert.AreEqual(5.1d, CoordinatePoint.GetDistanceBetweenPointsOnTheFlat(basePoint, two).GetMeters(), 2); two = new CoordinatePoint(new Latitude(60, 07.374), new Longitude(32, 18.754)); Assert.AreEqual(90.6d, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 1); Assert.AreEqual(90.6d, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 0.8d); two = new CoordinatePoint(new Latitude(60, 07.318), new Longitude(32, 18.734)); Assert.AreEqual(23.2d, CoordinatePoint.GetDistanceBetweenPointsWithHaversine(basePoint, two).GetMeters(), 1); Assert.AreEqual(23.2d, CoordinatePoint.GetDistanceBetweenPointsOnAnEllipsoid(basePoint, two).GetMeters(), 0.01d); }