
Ich versuche, den Winkel zwischen zwei Breiten- und Längengraden zu berechnen, erhalte aber atan2(X,Y)
bei Verwendung in Excel ein falsches Ergebnis.
β = atan2(X,Y) = atan2(0.05967668696, -0.00681261948)
Es sollte 1,68 Radiant (96,51°) sein, aber in Excel wird -0,113666736 (-6,512624235°) angezeigt.
β = atan2(X,Y),
wobei X und Y zwei Größen sind und wie folgt berechnet werden können:
- X =
cos θb * sin ∆L
Y =
cos θa * sin θb – sin θa * cos θb * cos ∆L
Breitengrad/Längengrad(1): (Lat1,Lon1)= 39.099912, -94.581213
Breitengrad/Längengrad(2): (Lat2,Lon2)= 38.627089, -90.200203
‘L’ be the longitude, ‘∆L=lon2-lon1’ be the difference of longitude, ‘θ’ be latitude, ‘β‘ be Bearing
Antwort1
Das Problem besteht darin, dass Excel die Funktion Atan2( verwendet.j,X) statt (x, y). In C verwendet Atan2 die Parameter (X,j), wodurch Sie die erwartete Antwort erhalten. Ändern Sie einfach Ihre Parameter.
Die Antwort kommt gut sechs Jahre zu spät, aber hoffentlich findet das jemand nützlich, lol.
Antwort2
Mit der Funktion in Excel ist alles in Ordnung
atan2(X,Y)
: Der von Ihnen angegebene Punkt '(0,05967668696, -0,00681261948)' liegt im vierten Quadranten, d. h. sein Winkel beträgt tatsächlich '-6,51°'.Wenn Sie jedoch einen „absoluten“ Winkelwert zwischen zwei geografischen Punkten berechnen möchten, sollten Sie die absolute Differenz zwischen den Koordinaten verwenden:
β=ATAN2(ABS(0.05967668696), ABS(-0.00681261948))
Bedenken Sie, dass diese Berechnung auf einer Kugel (Erde) nur eine Annäherung ist, da es sich um ein kreisförmiges Dreieck handelt. Bei kleinen Winkeln ist das in Ordnung.