위도와 경도로 주어진 두 지점 간의 구체상 거리를 Haversine 공식을 사용해 계산한다.
Haversine 공식은 Wikipedia에서 확인할 수 있다.
Haversine 거리 계산은 클래스로 구현하기에는 과할 수 있으므로 함수로 구현한다.
haversineDistance(la1: Double, lo1: Double, la2: Double, lo2: Double, radius: Double = 6367444.7) -> Double
la1
은 첫 번째 지점의 위도(도 단위)이다.lo1
은 첫 번째 지점의 경도(도 단위)이다.la2
는 두 번째 지점의 위도(도 단위)이다.lo2
는 두 번째 지점의 경도(도 단위)이다.radius
는 구체의 반지름(미터 단위)이며, 기본값은 지구의 평균 반지름이다(WolframAlpha 참조).이 함수는 코드의 가독성을 높이고 위키피디아 페이지에 제시된 Haversine 공식과 비교하기 쉽도록 3개의 클로저를 포함한다.
haversine
은 Haversine 삼각 함수를 구현한다.ahaversine
은 Haversine의 역함수를 구현한다.dToR
은 도(degree)를 라디안(radian)으로 변환하는 클로저이다.haversineDistance
의 결과는 미터 단위로 반환된다.
Swift Algorithm Club을 위해 Jaap Wijnen이 작성함.