Учитывая широту / долготу двух точек на Луне (lat1, lon1)
и (lat2, lon2)
вычислите расстояние между двумя точками в километрах, используя любую формулу, которая дает тот же результат, что и формула haversine.
вход
- Четыре целых значения
lat1, lon1, lat2, lon2
в градусах (углах) или - четыре десятичных значения
ϕ1, λ1, ϕ2, λ2
в радианах.
Выход
Расстояние в километрах между двумя точками (десятичное с любой точностью или округленное целое число).
Формула Haversine
где
r
- радиус сферы (предположим, что радиус Луны составляет 1737 км),ϕ1
широта точки 1 в радианахϕ2
широта точки 2 в радианахλ1
долгота точки 1 в радианахλ2
долгота точки 2 в радианахd
круговое расстояние между двумя точками
(источник: https://en.wikipedia.org/wiki/Haversine_formula )
Другие возможные формулы
d = r * acos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1))
формула @ миль .d = r * acos(cos(ϕ1 - ϕ2) + cos ϕ1 cos ϕ2 (cos(λ2 - λ1) - 1))
@Neil формула «ы .
Пример, где входные данные представляют собой градусы, а выходные данные - округленное целое число
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
правила
- Вход и выход могут быть предоставлены в любом удобном формате .
- Укажите в ответе, являются ли входные данные в градусах или радианах .
- Нет необходимости обрабатывать неверные значения широты / долготы
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
d = r * acos( sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 - λ1) )
гдеr = 1737