Data la latitudine / longitudine di due punti sulla Luna (lat1, lon1)
e (lat2, lon2)
, calcola la distanza tra i due punti in chilometri, usando qualsiasi formula che dia lo stesso risultato della formula haversine.
Ingresso
- Quattro valori interi
lat1, lon1, lat2, lon2
in gradi (angolo) o - quattro valori decimali
ϕ1, λ1, ϕ2, λ2
in radianti.
Produzione
Distanza in chilometri tra i due punti (decimale con precisione o numero intero arrotondato).
Formula di Haversine
dove
r
è il raggio della sfera (supponiamo che il raggio della Luna sia di 1737 km),ϕ1
latitudine del punto 1 in radiantiϕ2
latitudine del punto 2 in radiantiλ1
longitudine del punto 1 in radiantiλ2
longitudine del punto 2 in radiantid
è la distanza circolare tra i due punti
(fonte: https://en.wikipedia.org/wiki/Haversine_formula )
Altre possibili formule
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))
formula di @miles .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))
Formula di @Neil .
Esempio in cui gli input sono gradi e output come numero intero arrotondato
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
Regole
- L'input e l'output possono essere forniti in qualsiasi formato conveniente .
- Specificare nella risposta se gli ingressi sono in gradi o radianti .
- Non è necessario gestire valori di latitudine / longitudine non validi
- È accettabile un programma completo o una funzione. Se una funzione, è possibile restituire l'output anziché stamparlo.
- Se possibile, includi un collegamento a un ambiente di test online in modo che altre persone possano provare il tuo codice!
- Sono vietate le scappatoie standard .
- Si tratta di code-golf, quindi si applicano tutte le normali regole del golf e vince il codice più breve (in byte).
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )
dover = 1737