Dada la latitud / longitud de dos puntos en la Luna (lat1, lon1)y (lat2, lon2), calcule la distancia entre los dos puntos en kilómetros, usando cualquier fórmula que dé el mismo resultado que la fórmula de Haversine.
Entrada
- Cuatro valores enteros
lat1, lon1, lat2, lon2en grados (ángulo) o - cuatro valores decimales
ϕ1, λ1, ϕ2, λ2en radianes.
Salida
Distancia en kilómetros entre los dos puntos (decimal con cualquier precisión o número entero redondeado).
Fórmula de Haversine
dónde
res el radio de la esfera (suponga que el radio de la Luna es de 1737 km),ϕ1latitud del punto 1 en radianesϕ2latitud del punto 2 en radianesλ1longitud del punto 1 en radianesλ2longitud del punto 2 en radianesdes la distancia circular entre los dos puntos
(fuente: https://en.wikipedia.org/wiki/Haversine_formula )
Otras posibles fórmulas
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))fórmula de @miles .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))La fórmula de @Neil .
Ejemplo donde las entradas son grados y la salida como entero redondeado
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
Reglas
- La entrada y la salida se pueden dar en cualquier formato conveniente .
- Especifique en la respuesta si las entradas están en grados o radianes .
- No es necesario manejar valores de latitud / longitud no válidos
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )donder = 1737

