public static GeoClass.Coord PointAtDistance(GeoClass.Coord startPoint, double initialBearingRadians, double distanceKilometres) { double num1 = distanceKilometres / 6371.01; double num2 = Math.Sin(num1); double num3 = Math.Cos(num1); double rad1 = GeoClass.ToRad(startPoint.lat); double rad2 = GeoClass.ToRad(startPoint.lon); double num4 = Math.Cos(rad1); double num5 = Math.Sin(rad1); double num6 = Math.Asin(num5 * num3 + num4 * num2 * Math.Cos(initialBearingRadians)); double radians = rad2 + Math.Atan2(Math.Sin(initialBearingRadians) * num2 * num4, num3 - num5 * Math.Sin(num6)); return(new GeoClass.Coord() { lat = GeoClass.ToDeg(num6), lon = GeoClass.ToDeg(radians) }); }
public static double ToBearing(double radians) { return((GeoClass.ToDeg(radians) + 360.0) % 360.0); }