Направление между 2 точками широты/долготы в С# У меня есть 2 координаты в формате Lat Long. Как определить из точки A (например, Нью-Йорк 37.149472, -95.509544) направление в градусах к точке B (например, Торонто 40.714269, -74.005973) Я ищу значение типа "340 градусов" В С# Ответ 1 Если вы хотите, чтобы постоянное следование следовали за вами, вам не нужен путь кратчайшего (большого круга), который вам нужен для линии Rhumb Преобразование скриптов Movable Type для этого static double DegreeBearing( double lat1, double lon1, double lat2, double lon2) { var dLon = ToRad(lon2-lon1); var dPhi = Math.Log( Math.Tan(ToRad(lat2)/2+Math.PI/4)/Math.Tan(ToRad(lat1)/2+Math.PI/4)); if (Math.Abs(dLon) > Math.PI) dLon = dLon > 0 ? -(2*Math.PI-dLon) : (2*Math.PI+dLon); return ToBearing(Math.Atan2(dLon, dPhi)); } public static double ToRad(double degrees) { return degrees * (Math.PI / 180); } public static double ToDegrees(double radians) { return radians * 180 / Math.PI; } public static double ToBearing(double radians) { // convert radians to degrees (as bearing: 0...360) return (ToDegrees(radians) +360) % 360; } // verify against the website example DegreeBearing(50.36389,-4.15694,42.35111,-71.04083); Ответ 2 если вы посмотрите http://www.movable-type.co.uk/scripts/latlong.html, у него есть javascript, который вы можете переписать на С#.
Ответ 1 Если вы хотите, чтобы постоянное следование следовали за вами, вам не нужен путь кратчайшего (большого круга), который вам нужен для линии Rhumb Преобразование скриптов Movable Type для этого static double DegreeBearing( double lat1, double lon1, double lat2, double lon2) { var dLon = ToRad(lon2-lon1); var dPhi = Math.Log( Math.Tan(ToRad(lat2)/2+Math.PI/4)/Math.Tan(ToRad(lat1)/2+Math.PI/4)); if (Math.Abs(dLon) > Math.PI) dLon = dLon > 0 ? -(2*Math.PI-dLon) : (2*Math.PI+dLon); return ToBearing(Math.Atan2(dLon, dPhi)); } public static double ToRad(double degrees) { return degrees * (Math.PI / 180); } public static double ToDegrees(double radians) { return radians * 180 / Math.PI; } public static double ToBearing(double radians) { // convert radians to degrees (as bearing: 0...360) return (ToDegrees(radians) +360) % 360; } // verify against the website example DegreeBearing(50.36389,-4.15694,42.35111,-71.04083);
Ответ 2 если вы посмотрите http://www.movable-type.co.uk/scripts/latlong.html, у него есть javascript, который вы можете переписать на С#.