Biorąc pod uwagę szerokość / długość geograficzną dwóch punktów na Księżycu (lat1, lon1)
i (lat2, lon2)
oblicz odległość między dwoma punktami w kilometrach, używając dowolnej formuły, która daje taki sam wynik jak formuła haverine.
Wejście
- Cztery wartości całkowite
lat1, lon1, lat2, lon2
w stopniach (kąt) lub - cztery wartości dziesiętne
ϕ1, λ1, ϕ2, λ2
w radianach.
Wynik
Odległość w kilometrach między dwoma punktami (dziesiętna z dowolną precyzją lub zaokrąglona liczba całkowita).
Formuła Haversine
gdzie
r
jest promieniem kuli (załóżmy, że promień Księżyca wynosi 1737 km),ϕ1
szerokość geograficzna punktu 1 w radianachϕ2
szerokość geograficzna punktu 2 w radianachλ1
długość punktu 1 w radianachλ2
długość punktu 2 w radianachd
jest kołową odległością między dwoma punktami
(źródło: https://en.wikipedia.org/wiki/Haversine_formula )
Inne możliwe formuły
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))
@miles wzór " .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))
@Neil wzór jest .
Przykład, w którym dane wejściowe to stopnie, a dane wyjściowe jako zaokrąglona liczba całkowita
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
Zasady
- Dane wejściowe i wyjściowe można podawać w dowolnym dogodnym formacie .
- W odpowiedzi określ, czy dane wejściowe są w stopniach, czy radianach .
- Nie ma potrzeby obsługi niepoprawnych wartości szerokości i długości geograficznej
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )
tamr = 1737