Étant donné la latitude / longitude de deux points sur la Lune (lat1, lon1)
et (lat2, lon2)
, calculez la distance entre les deux points en kilomètres, en utilisant n'importe quelle formule qui donne le même résultat que la formule haversine.
Contribution
- Quatre valeurs entières
lat1, lon1, lat2, lon2
en degrés (angle) ou - quatre valeurs décimales
ϕ1, λ1, ϕ2, λ2
en radians.
Production
Distance en kilomètres entre les deux points (décimale avec n'importe quelle précision ou entier arrondi).
Formule Haversine
où
r
est le rayon de la sphère (supposons que le rayon de la Lune est de 1737 km),ϕ1
latitude du point 1 en radiansϕ2
latitude du point 2 en radiansλ1
longitude du point 1 en radiansλ2
longitude du point 2 en radiansd
est la distance circulaire entre les deux points
(source: https://en.wikipedia.org/wiki/Haversine_formula )
Autres formules possibles
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))
Formule de @miles .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))
La formule de @Neil .
Exemple où les entrées sont des degrés et la sortie sous forme d'entier arrondi
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
Règles
- L'entrée et la sortie peuvent être données dans n'importe quel format pratique .
- Spécifiez dans la réponse si les entrées sont en degrés ou en radians .
- Pas besoin de gérer des valeurs de latitude / longitude invalides
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )
oùr = 1737