달 (lat1, lon1)
과 위의 두 점의 위도 / 경도가 주어지면 , 허세 인 공식과 동일한 결과를 제공하는 공식 을 (lat2, lon2)
사용하여 두 지점 사이의 거리를 킬로미터 단위로 계산하십시오 .
입력
lat1, lon1, lat2, lon2
도 (각도)의 4 개의 정수 값 또는ϕ1, λ1, ϕ2, λ2
라디안으로 된 소수점 이하 4 자리 .
산출
두 점 사이의 거리 (킬로미터) (정밀도 또는 반올림 된 정수로 10 진수).
Haversine 공식
어디
r
구의 반경입니다 (달의 반경이 1737km라고 가정).ϕ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