public ProcessedCacheData Process(CacheData cacheData) { var startPoint = new Point(cacheData.OriginalCoords.Lat, cacheData.OriginalCoords.Lng); var destinationPoint = calculator.CalculateOrthodromicLine(startPoint, cacheData.Bearing, cacheData.Distance).Coordinate2; return(new ProcessedCacheData(cacheData, new LatLng(destinationPoint.Latitude, destinationPoint.Longitude))); }
public void CalculateOrthodromicDestination(double lat1, double lon1, double angle, double distance, double lat2, double lon2) { var calculator = new SpheroidCalculator(Spheroid.Wgs84); var result = calculator.CalculateOrthodromicLine(new Point(lat1, lon1), angle, new Distance(distance, DistanceUnit.Nm).SiValue); Assert.That(result.Coordinate2.Latitude, Is.EqualTo(lat2).Within(Millionth)); Assert.That(result.Coordinate2.Longitude, Is.EqualTo(lon2).Within(Millionth)); }
public void CalculateOrthodromicCourse(double lat1, double lon1, double lat2, double lon2, double c12, double c21) { var calculator = new SpheroidCalculator(Spheroid.Wgs84); var result = calculator.CalculateOrthodromicLine(new Point(lat1, lon1), new Point(lat2, lon2)); Assert.That(result.Bearing12, Is.EqualTo(c12).Within(Millionth)); Assert.That(result.Bearing21, Is.EqualTo(c21).Within(Millionth)); }
public void Bug7(double lat1, double lon1, double lat2, double lon2) { var calculator = new SpheroidCalculator(Spheroid.Wgs84); var result = calculator.CalculateOrthodromicLine(new Point(lat1, lon1), new Point(lat2, lon2)); Console.WriteLine(result.Distance); Console.WriteLine(result.Bearing12); Console.WriteLine(result.Bearing21); }