public float Distance(IMBP point1, IMBP point2) { if (point1.Coordinates.Length != 2 && point2.Coordinates.Length != 2) throw new Exception("The points are not in geo space"); var currentRPointStart = point1.Coordinates; var currentRPointEnd = point2.Coordinates; var longitudeStart = currentRPointStart[1] * Math.PI / 180; var latitudueStart = currentRPointStart[0] * Math.PI / 180; var longitudeEnd = currentRPointEnd[1] * Math.PI / 180; var latitudeEnd = currentRPointEnd[0] * Math.PI / 180; var cl1 = Math.Cos(latitudueStart); var cl2 = Math.Cos(latitudeEnd); var sl1 = Math.Sin(latitudueStart); var sl2 = Math.Sin(latitudeEnd); var delta = longitudeEnd - longitudeStart; var cdelta = Math.Cos(delta); var sdelta = Math.Sin(delta); var y = Math.Sqrt(Math.Pow(cl2 * sdelta, 2) + Math.Pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2)); var x = sl1 * sl2 + cl1 * cl2 * cdelta; var angelDifference = Math.Atan2(y, x); float currentDistance = (float)angelDifference * RadiusOfEarth; return currentDistance; }
public float Distance(IMBP point1, IMBP point2) { if (point1.Coordinates.Length != 2 && point2.Coordinates.Length != 2) { throw new Exception("The points are not in geo space"); } var currentRPointStart = point1.Coordinates; var currentRPointEnd = point2.Coordinates; var longitudeStart = currentRPointStart[1] * Math.PI / 180; var latitudueStart = currentRPointStart[0] * Math.PI / 180; var longitudeEnd = currentRPointEnd[1] * Math.PI / 180; var latitudeEnd = currentRPointEnd[0] * Math.PI / 180; var cl1 = Math.Cos(latitudueStart); var cl2 = Math.Cos(latitudeEnd); var sl1 = Math.Sin(latitudueStart); var sl2 = Math.Sin(latitudeEnd); var delta = longitudeEnd - longitudeStart; var cdelta = Math.Cos(delta); var sdelta = Math.Sin(delta); var y = Math.Sqrt(Math.Pow(cl2 * sdelta, 2) + Math.Pow(cl1 * sl2 - sl1 * cl2 * cdelta, 2)); var x = sl1 * sl2 + cl1 * cl2 * cdelta; var angelDifference = Math.Atan2(y, x); float currentDistance = (float)angelDifference * RadiusOfEarth; return(currentDistance); }
public void DistanceUnitTest() { Assert.Inconclusive("TODO"); IMetric target = CreateIMetric(); // TODO: Initialize to an appropriate value IMBP myPoint1 = null; // TODO: Initialize to an appropriate value IMBP myPoint2 = null; // TODO: Initialize to an appropriate value float expected = 0F; // TODO: Initialize to an appropriate value float actual; actual = target.Distance(myPoint1, myPoint2); Assert.AreEqual(expected, actual); }
public float Distance(IMBP point1, IMBP point2) { float currentDistance = 0.0f; if (point1.Coordinates.Length != point2.Coordinates.Length && point1.Coordinates.Length != 0) throw new Exception("The points are in different space or space not exist "); var currentRPointStart = point1.Coordinates; var currentRPointEnd = point2.Coordinates; for (int i = 0; i < point1.Coordinates.Length; i++) { currentDistance += (currentRPointStart[i] - currentRPointEnd[i]) * (currentRPointStart[i] - currentRPointEnd[i]); } currentDistance = (float)Math.Sqrt(currentDistance); return currentDistance; }
public float Distance(IMBP point1, IMBP point2) { float currentDistance = 0.0f; if (point1.Coordinates.Length != point2.Coordinates.Length && point1.Coordinates.Length != 0) { throw new Exception("The points are in different space or space not exist "); } var currentRPointStart = point1.Coordinates; var currentRPointEnd = point2.Coordinates; for (int i = 0; i < point1.Coordinates.Length; i++) { currentDistance += (currentRPointStart[i] - currentRPointEnd[i]) * (currentRPointStart[i] - currentRPointEnd[i]); } currentDistance = (float)Math.Sqrt(currentDistance); return(currentDistance); }