구면상 두 지점간의 최단거리 및 방향
거리를 코사인법칙, 각을 사인법칙으로 구하기 때문에 두 법칙을 먼저 평면상에서 살펴보면:
B /|\ / | \ c / | \ a / h| \ / | \ / b1 | b2 \ A ------------- C b h = csinA = asinC = a/sinA = c/sinC b1 = b - b2 = ccosA b2 = b - b1 = acosC c^2 = b1^2 + h^2 = (b - b2)^2 + h^2 = (b - acosC)^2 + h^2 = (b^2 - 2abcosC + a^2cos^2C) + h^2 = b^2 - 2abcosC + a^2cos^2C + a^2sin^2C = b^2 - 2abcosC + a^2(cos^2C + sin^2C) = a^2 + b^2 - 2abcosC
위 공식이 구면상에서는 다음과 같이 도출된다:
오른쪽 그림과 같이 한 지점을 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))
추가적으로 오른쪽 그림에서 구면상 코사인법칙을 유도하면:
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) h^2 = y^2 + z^2 r^2sin^2(c) = r^2cos^2(a)sin^2(b) + r^2sin^2(a) sin^2(c) = cos^2(a)sin^2(b) + sin^2(a) 1 - cos^2(c) = cos^2(a)(1 - cos^2(b)) + sin^2(a) = cos^2(a) - cos^2(a)cos^2(b) + sin^2(a) = sin^2(a) + cos^2(a) - cos^2(a)cos^2(b) = 1 - cos^2(a)cos^2(b) cos^2(c) = cos^2(a)cos^2(b) cos(c) = cos(a)cos(b) 따라서 왼쪽 그림의 구면 삼각형에 대입하면, cos(c) = cos(h)cos(b1) cos(a) = cos(h)cos(b2) => cos(h) = cos(a)/cos(b2) cos(c) = cos(a)cos(b1)/cos(b2) cos(b1) = cos(b - b2) = cos(b)cos(b2) + sin(b)sin(b2) cos(c) = cos(a)(cos(b)cos(b2) + sin(b)sin(b2)) / cos(b2) = cos(a)cos(b) + cos(a)sin(b)tan(b2) = cos(a)cos(b) + cos(a)sin(b)cosC(sin(a)/cos(a)) = cos(a)cos(b) + sin(a)sin(b)cos(C)
다음식의 전개도 증명할 것
- cos(b1) = cos(b - b2) = cos(b)cos(b2) + sin(b)sin(b2)
- tan(b2) = cos(C)tan(a) = cos(C)sin(a)/cos(a)