접속: 곧음을 정하는 규칙
자가 있으면 '크기’를 잴 수 있다. 그런데 '방향’은? 그리고 가장 짧은 길 말고, '곧은 길’은 무엇일까?
서울의 북쪽, 부산의 북쪽 — 방향은 옮겨야 비교된다
서울에서 "북쪽"이라고 하면 종로 방향이다. 부산에서 "북쪽"이라고 하면 대구 방향이다. 둘 다 "북쪽"인데, 지구본 위에서 보면 두 화살표는 같은 방향이 아니다. 곡면 위에서는 떨어진 두 점의 방향을 직접 비교할 수 없다.
비교하려면 하나의 화살표를 곡면을 따라 조심스럽게 옮겨와야 한다. 매 걸음 "방향을 바꾸지 않는다"는 것이 무엇인지 정해 주는 규칙, 그것이 접속이다. 접속을 따라 옮기는 것을 평행이동(parallel transport)이라 부른다. 그래프를 모양 그대로 밀어 옮기는 것과 달리, 곡면 위에서 방향을 지키며 옮기는 것이다.
옮기는 길에 따라 결과가 다르다
지구본 위에서 직접 해 보자. 적도 위의 한 점에서 북쪽을 가리키는 화살표를 든다. 경선을 따라 북극까지 올라간다. 화살표는 계속 진행 방향, 북쪽을 가리킨다. 북극에서 화살표 방향을 그대로 두고, 경도가 90도 다른 경선을 따라 적도로 내려온다. 이번에는 화살표가 진행 방향의 옆을 가리킨 채 내려온다. 적도를 따라 처음 자리로 돌아온다.
화살표는 처음보다 90도 돌아가 있다. 한 번도 “돌리지” 않았는데.
평면에서는 이런 일이 없다. 어느 고리를 돌아도 화살표는 제자리다. 원기둥도 마찬가지다. 안에서는 평평하니까. 구면에서는 돌아온 각이 고리가 감싼 넓이에 곡률을 곱한 값과 같다. 북극과 적도의 두 점이 만든 삼각형은 구 전체 넓이의 8분의 1, 곧 반지름이 1이면 π/2다. 그래서 90도다. 이것이 곡률을 안에서 재는 첫째 방법, 평행이동의 불일치(홀로노미)다.
불러오는 중…
파이썬
지구본 실험을 계산으로 한다. 대원 호를 따라가는 평행이동은 그 대원의 축을 중심으로 한 회전이다.
import numpy as np
def to_xyz(lat, lon):
la, lo = np.radians(lat), np.radians(lon)
return np.array([np.cos(la) * np.cos(lo), np.cos(la) * np.sin(lo), np.sin(la)])
def transport(v, P, Q):
"""대원 호 P→Q 를 따라 접벡터 v 를 평행이동: 호의 축을 중심으로 한 회전"""
k = np.cross(P, Q); s = np.linalg.norm(k); k /= s
ang = np.arctan2(s, P @ Q)
Kx = np.array([[0, -k[2], k[1]], [k[2], 0, -k[0]], [-k[1], k[0], 0]])
return (np.eye(3) + np.sin(ang) * Kx + (1 - np.cos(ang)) * Kx @ Kx) @ v
def excess(A, B, C): # 내각의 합 − 180°
def angle(P, Q, R):
u, w = Q - (Q @ P) * P, R - (R @ P) * P
return np.arccos(u @ w / np.linalg.norm(u) / np.linalg.norm(w))
return np.degrees(angle(A, B, C) + angle(B, C, A) + angle(C, A, B)) - 180
N = np.array([0.0, 0.0, 1.0])
for dlon in [90, 60, 30]:
A, B = to_xyz(0, 0), to_xyz(0, dlon) # 적도 위 두 점, 꼭짓점 하나는 북극
v0 = N - (N @ A) * A # A 에서 북쪽을 가리키는 화살표
v = transport(transport(transport(v0, A, N), N, B), B, A)
turn = np.degrees(np.arccos(np.clip(v @ v0, -1, 1)))
print(f"경도차 {dlon:2d}° 화살표 회전 {turn:5.1f}° 내각합−180° {excess(A, N, B):5.1f}°")
# 경도차 90° 화살표 회전 90.0° 내각합−180° 90.0°
# 경도차 60° 화살표 회전 60.0° 내각합−180° 60.0°
# 경도차 30° 화살표 회전 30.0° 내각합−180° 30.0°
돌아간 각, 내각이 180도를 넘는 양, 반지름 1인 구 위의 넓이(라디안). 셋이 같은 수다. 안에서 재는 서로 다른 두 실험이 같은 곡률을 가리킨다.
곧은 길 — 측지선의 두 번째 얼굴
앞에서 측지선을 "가장 짧은 길"로 만났다. 측지선에는 얼굴이 하나 더 있다. 자기 진행 방향을 평행이동하며 가는 길, 곧 한 번도 방향을 틀지 않는 길이다.
Γ가 모두 0이면 좌표 위의 직선이다. Γ가 무엇이냐에 따라 "곧다"의 뜻이 달라진다. 이 식은 Γ, 곧 접속이 주어져야 비로소 의미를 가진다. 평면조차 극좌표로 적으면 Γ가 0이 아니다. 그 값과 뜻은 아래 문제 13에서 직접 확인한다.
리만 기하학은 여기서 관례 하나를 둔다. 자를 옮겨도 자가 망가지지 않고(평행이동이 길이와 각을 지킨다), 비틀림(작은 평행사변형을 옮겨 그렸을 때 닫히지 않고 벌어지는 정도)이 없는 접속은 딱 하나뿐이다. 레비-치비타 접속이다. 이 접속을 고르면 "곧은 길"과 "가장 짧은 길"이 일치한다. 구면의 대원은 둘 다다.
그러나 이 접속을 고르는 것은 정리가 아니라 선택이다.
수확
“접속은 화살표를 옮길 때 무엇을 '방향을 바꾸지 않았다’로 칠지 정하는 규칙이다. 곡면에서는 그 규칙대로 고리를 한 바퀴 돌아도 화살표가 돌아가 있고, 돌아간 각이 곡률을 잰다. 레비-치비타 접속을 고르면 방향을 틀지 않는 곧은 길과 가장 짧은 길이 같아진다.”
문제 12. 정동쪽으로 출발해 핸들을 놓으면
서울(북위 37.57°, 동경 126.98°)에서 비행기가 정확히 정동쪽을 보고 출발한다. 그 뒤로는 방향을 한 번도 틀지 않는다(대원을 따라간다). 이런 대원 위에서는 출발점과의 경도 차가 Δλ일 때 위도 ψ(프사이)가 tan ψ = tan 37.57° × cos Δλ를 따른다. (가) 하와이의 경도(서경 155.6°)와 샌프란시스코의 경도(서경 122.4°)를 지날 때 위도는 각각 얼마인가? (나) 북위 37.57° 위도선을 따라 늘 정동쪽을 보며 날려면 조종사는 무엇을 해야 하는가? (다) 적도에서 정동쪽으로 출발해 핸들을 놓으면 어떻게 되는가?
함께 풀기

동쪽으로 곧장 가면 위도는 그대로겠죠. 샌프란시스코가 북위 37.8°니까 거의 샌프란시스코에 닿을 거예요. 그래도 식에 넣어 볼게요.

하와이 경도는 Δλ = 77.4°라서 위도가 북위 9.5°, 샌프란시스코 경도는 Δλ = 110.6°라서 남위 15.1°예요. 적도를 넘어 남반구로 내려가 버렸어요.

출발할 때는 분명 정동쪽이었어요. 어디서부터 동쪽이 아니게 됐을까요?

비행기는 방향을 안 바꿨어요. 바뀐 건 "동쪽"이에요. 서울의 동쪽과 하와이 경도의 동쪽은 지구본 위에서 같은 화살표가 아니에요. 서울의 북쪽과 부산의 북쪽이 다른 것처럼요.

(나)는 위도선을 따라가야 하는데, 북위 37.57° 위도선은 중심이 지구 중심이 아닌 작은 원이라 대원이 아니에요. 그 선을 따라가려면 계속 북쪽으로, 곧 왼쪽으로 핸들을 꺾어야 해요. (다)의 적도는 그 자체가 대원이라 핸들을 놓아도 적도를 따라 돌아요.

그래요. "방향을 바꾸지 않는다"는 말은 무엇을 기준으로 안 바꾸는지 정해야 뜻이 생겨요. 지도의 "동쪽"을 지키는 것과 비행기 앞쪽을 지키는 것은 다른 규칙이에요.

과제 요구 사항을 "처음 공지대로"만 지키면 중간에 조교님 공지가 바뀌었을 때 엉뚱한 데로 가는 거랑 같네요. 같은 말을 따랐는데 가리키는 게 달라졌어요.
문제 13. 극좌표의 Γ
평면을 극좌표 (r, φ)로 적으면 곧은 길 식의 Γ 가운데 0이 아닌 것은 Γrφφ = −r, Γφrφ = Γφφr = 1/r이고, 곧은 길 식은 두 줄이 된다: r‘’ − r(φ‘)² = 0, φ’’ + (2/r)r‘φ’ = 0(작은따옴표는 시간 t로 미분한 것). (가) 직선 x = 1을 y = t로 따라가면 r = √(1 + t²), φ = arctan t이다. 두 식을 만족하는가? (나) 반지름 1인 원을 φ = t로 도는 길은 곧은 길인가? (다) Γ가 0이 아니면 공간이 휘었다고 할 수 있는가?
함께 풀기

Γ가 0이 아니니까 이 좌표에서는 곧은 길이 휘겠죠. 그러면 평면도 극좌표로 보면 휜 공간인 셈이고요.

(가)부터 해 볼게. r’ = t/√(1 + t²), r‘’ = 1/(1 + t²)3/2. φ’ = 1/(1 + t²)라서 r(φ‘)² = √(1 + t²)/(1 + t²)² = 1/(1 + t²)3/2. 첫 식이 0이에요. 둘째 식도 φ’’ = −2t/(1 + t²)²이고 (2/r)r‘φ’ = 2t/(1 + t²)²라서 0이에요.

직선이 Γ가 있는 식을 그대로 만족하네요. Γ는 휜 길을 만드는 게 아니라, 좌표선이 휜 만큼을 되돌려 주는 거였어요.

(나)는요?

r = 1, φ’ = 1이면 첫 식이 0 − 1 = −1이라 0이 아니에요. 원을 돌려면 안쪽으로 계속 끌어당겨야 하니까 곧은 길이 아니에요. 좌표로는 r가 그대로라 제일 “곧아” 보이는데요.

그럼 (다)요. 같은 평면을 x, y 좌표로 적으면 Γ는요?

전부 0이에요. 같은 평면인데 좌표에 따라 Γ가 있다가 없어지니까, Γ만 보고는 휘었다고 못 해요. 한 점에서 자의 1차 미분까지 지울 수 있었던 것처럼 Γ도 한 점에서는 늘 지울 수 있고, 곡률은 그걸로 안 지워지는 데서 나와야 해요.

그래요. 레비-치비타 접속의 Γ는 자의 1차 미분으로 만들어져요. 그래서 한 점에서는 지울 수 있어요. 곡률은 Γ가 곳에 따라 어떻게 변하는지, 곧 자의 2차 미분에서 나와요.

과제 코드에서 단위를 cm로 받아 m로 바꾸는 줄이 있다고 코드가 틀린 게 아닌 거랑 같네요. 바꾸는 줄은 적는 방식 때문에 있는 거고요.