É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, lon2en degrés (angle) ou - quatre valeurs décimales
ϕ1, λ1, ϕ2, λ2en radians.
Production
Distance en kilomètres entre les deux points (décimale avec n'importe quelle précision ou entier arrondi).
Formule Haversine
où
rest le rayon de la sphère (supposons que le rayon de la Lune est de 1737 km),ϕ1latitude du point 1 en radiansϕ2latitude du point 2 en radiansλ1longitude du point 1 en radiansλ2longitude du point 2 en radiansdest 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

