구면상 두 지점간의 최단거리 및 방향

constraints

오른쪽 그림과 같이 한 지점을 xy축(혹은 경위도) 성분으로 구분하면 다음과 같은 성질을 찾을 수 있다:

	* b는 주어진 lon과 같다
	* a는 주어진 lat과 같다
	(여기서 a, b, c는 각 A, B, C의 대변)

	z = rsin(a)
	d = rcos(a)
	x = dcos(b) = rcos(a)cos(b) = rcos(c)
	y = dsin(b) = rcos(a)sin(b)
	h = rsin(c)

	sin(A) = z/h = rsin(a)/rsin(c) = sin(a)/sin(c)

이를 이용하여 왼쪽 그림의 sin(A)와  sin(C)를 구하면,

	sin(A) = sin(h)/sin(c), sin(C) = sin(h)/sin(a)
	sin(h) = sin(A)sin(c) = sin(C)sin(a)
	sin(A)/sin(a) = sin(C)/sin(c)

왼쪽 그림과 같이 두 지점 중 한 지점을 X축(혹은 본초 자오선)에 두고 보조 꼭지점 C를 Z축(경선 90도)에 둔다면, 각 변과 라디안 값은 다음과 같다:

	a = PI/2 - lat2
	b = PI/2 - lat1
	d = rcos(lat2) = rsin(a)

	Ax = rcos(lat1) = rsin(b)
	Ay = 0
	Az = rsin(lat1) = rcos(b)

	Bx = dcos(lon2) = rcos(lat2)cos(lon2) = rsin(a)cos(C)
	By = dsin(lon2) = rcos(lat2)sin(lon2) = rsin(a)sin(C)
	Bz = rsin(lat2) = rcos(a)

	A dot product B = sin(b)sin(a)sin(C) + cos(b)cos(a)
	                = cos(a)cos(b) + sin(a)sin(b)cos(C) = cos(c)

	distance = acos(cos(a)cos(b) + sin(a)sin(b)cos(C))

	sin(A)/sin(a) = sin(C)/sin(c)
	sin(A) = sin(a)sin(C)/sin(c)

	bearing = asin(sin(a)sin(C)/sin(c))