Направление между 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);