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

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