Haversine 거리 계산

위도와 경도로 주어진 두 지점 간의 구체상 거리를 Haversine 공식을 사용해 계산한다.

Haversine 공식은 Wikipedia에서 확인할 수 있다.

Haversine 거리 계산은 클래스로 구현하기에는 과할 수 있으므로 함수로 구현한다.

haversineDistance(la1: Double, lo1: Double, la2: Double, lo2: Double, radius: Double = 6367444.7) -> Double

이 함수는 코드의 가독성을 높이고 위키피디아 페이지에 제시된 Haversine 공식과 비교하기 쉽도록 3개의 클로저를 포함한다.

  1. haversine은 Haversine 삼각 함수를 구현한다.
  2. ahaversine은 Haversine의 역함수를 구현한다.
  3. dToR은 도(degree)를 라디안(radian)으로 변환하는 클로저이다.

haversineDistance의 결과는 미터 단위로 반환된다.

Swift Algorithm Club을 위해 Jaap Wijnen이 작성함.