Geben Sie bei gegebener Breite / Länge von zwei Punkten auf dem Mond (lat1, lon1)
und (lat2, lon2)
der Entfernung zwischen den beiden Punkten in Kilometern eine beliebige Formel an , die das gleiche Ergebnis wie die Haversine-Formel liefert.
Eingang
- Vier ganzzahlige Werte
lat1, lon1, lat2, lon2
in Grad (Winkel) oder - vier Dezimalwerte
ϕ1, λ1, ϕ2, λ2
im Bogenmaß.
Ausgabe
Abstand in Kilometern zwischen den beiden Punkten (Dezimalzahl mit beliebiger Genauigkeit oder gerundeter Ganzzahl).
Haversine Formel
wo
r
ist der Radius der Kugel (angenommen, der Radius des Mondes beträgt 1737 km),ϕ1
Breitengrad von Punkt 1 im Bogenmaßϕ2
Breitengrad von Punkt 2 im Bogenmaßλ1
Länge von Punkt 1 im Bogenmaßλ2
Länge von Punkt 2 im Bogenmaßd
ist der kreisförmige Abstand zwischen den beiden Punkten
(Quelle: https://en.wikipedia.org/wiki/Haversine_formula )
Andere mögliche Formeln
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))
@ Meilen 'Formel .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))
@Neils Formel .
Beispiel, bei dem Eingaben Grad sind und Ausgaben als gerundete Ganzzahl ausgegeben werden
42, 9, 50, 2 --> 284
50, 2, 42, 9 --> 284
4, -2, -2, 1 --> 203
77, 8, 77, 8 --> 0
10, 2, 88, 9 --> 2365
Regeln
- Die Eingabe und Ausgabe kann in jedem geeigneten Format erfolgen .
- Geben Sie in der Antwort an, ob die Eingaben in Grad oder Bogenmaß erfolgen .
- Keine Notwendigkeit, ungültige Breiten- / Längengrade zu verarbeiten
- Entweder ein vollständiges Programm oder eine Funktion sind akzeptabel. Wenn es sich um eine Funktion handelt, können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Wenn möglich, fügen Sie bitte einen Link zu einer Online-Testumgebung hinzu, damit andere Personen Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Code-Golf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Bytes) gewinnt.
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )
wor = 1737