2010-01-11 6 views

Antwort

13

Wenn Sie eine Konstante Lager wollen Sie den kürzesten (großer Kreis) Pfad eine Linie Rhumb wollen wollen nicht folgen

Umwandlung der Movable Type Scripts für die

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); 
+0

schließlich ein guter Grund, System.Math zu verwenden. Oh sicher, viele Leute tun jeden Tag, aber es ist wirklich nie hoch gekommen. Vielen Dank. – tsilb

Verwandte Themen