지구에서 두 곳의 위치 사이의 중간지점을 구하는 방법을 알아보도록 합시다.

중간 지점
아래의 공식은 대원 (大圓) 에서 좌표로 이루어진 두 곳의 위치 사이의 중간지점을 도출해내는 공식입니다.
Bx = cos φ2 × cos Δλ By = cos φ2 × sin Δλ φm = atan2( sin φ1 + sin φ2, √(cos φ1 + Bx)² + By² ) λm = λ1 + atan2(By, cos(φ1) + Bx)
소스 코드
Dim latx As Double = Val(X_Latitude.Text)
Dim lngx As Double = Val(X_Longitude.Text)
Dim laty As Double = Val(Y_Latitude.Text)
Dim lngy As Double = Val(Y_Longitude.Text)
Dim pi1 As Double = latx * Math.PI / 180
Dim pi2 As Double = laty * Math.PI / 180
Dim lambda1 As Double = lngx * Math.PI / 180
Dim lambda2 As Double = lngy * Math.PI / 180
Dim Bx As Double = Math.Cos(pi2) * Math.Cos(lambda2 - lambda1)
Dim By As Double = Math.Cos(pi2) * Math.Sin(lambda2 - lambda1)
Dim pi3 As Double = Math.Atan2(Math.Sin(pi1) + Math.Sin(pi2),
Math.Sqrt((Math.Cos(pi1) + Bx) * (Math.Cos(pi1) + Bx) + By * By))
Dim lambda3 As Double = lambda1 + Math.Atan2(By, Math.Cos(pi1) + Bx)
Dim lat3 As Double = pi3 * 180 / Math.PI
Dim lng3 As Double = lambda3 * 180 / Math.PI
lng3 = (lng3 + 540) Mod 360 - 180
MessageBox.Show(lat3 & ", " & lng3)
초기 방위각이 최종 방위각과 일치하지 않는 것과 마찬가지로, 위도에 따라 왜곡률의 값이 변화하므로 중간 지점은 위도와 경도 사이의 중간 지점에 위치하지 않을 수 있습니다.
추가 링크
라디안
https://en.wikipedia.org/wiki/Radian
대원
https://en.wikipedia.org/wiki/Great_circle