한 번 보면 계속 신경 쓰이는 현상
해 질 무렵 하늘을 보면 서쪽엔 해가 지고 있고, 동쪽이나 남쪽 하늘엔 반달이 떠 있을 때가 있어요. 그런데 달의 밝은 쪽을 자세히 보면 이상한 점이 보여요. 달은 햇빛을 받아서 빛나니까 밝은 면이 당연히 해를 향해야 하잖아요. 그런데 눈으로 보면 밝은 면이 해보다 한참 위쪽 허공을 가리키는 것처럼 보여요. 마치 해가 아니라 다른 뭔가에 비춰지고 있는 것처럼요.
이걸 달 명암 경계선 역설(Lunar Terminator Paradox), 또는 '달 기울기 착시(Moon tilt illusion)'라고 불러요. 여기서 명암 경계선(terminator)은 달의 밝은 부분과 어두운 부분이 나뉘는 선을 말해요. 이번 글은 이 현상을 다룬 블로그 글을 계기로, 이게 왜 생기는지 개발자 관점에서 풀어볼게요. 알고 보면 이건 천문학 문제라기보다 좌표계와 투영(projection) 문제거든요.
물리적으로는 아무 문제가 없어요
먼저 짚고 갈 것. 달의 밝은 면은 실제로 정확히 태양 쪽을 향하고 있어요. 빛은 직진하니까 당연하죠. 문제는 '향한다'는 걸 우리가 어떤 좌표계에서 판단하느냐예요.
하늘을 거대한 공 안쪽 면이라고 생각해 보세요. 천문학에서는 이걸 '천구'라고 불러요. 달과 해는 이 공의 안쪽 면 위의 두 점이에요. 달에서 해로 가는 '직선 방향'은 이 구면 위에서 보면 대원(great circle)을 따라가요. 대원이 뭐냐면, 공의 중심을 지나는 평면으로 공을 잘랐을 때 생기는 가장 큰 원이에요. 지구 위에서 두 도시를 잇는 최단 경로가 대원이듯이요.
비행기 항로가 휘어 보이는 것과 같은 원리
인천에서 뉴욕 가는 비행기 항로를 평평한 지도에서 보면 이상하게 북쪽으로 크게 휘어져 있잖아요. 실제로는 그게 최단 경로(대원)인데, 둥근 지구를 평평한 지도(메르카토르 도법)에 펴면서 휘어 보이는 거예요.
달 착시도 똑같아요. 우리는 하늘을 볼 때 무의식적으로 지평선을 기준으로 한 평평한 좌표계를 써요. 머리를 이쪽저쪽 돌려가며 '위는 위, 옆은 옆'이라고 판단하죠. 그런데 달에서 해로 가는 대원은 하늘 높이 크게 솟았다가 서쪽 지평선으로 내려오는 곡선이에요. 달 근처에서 그 곡선의 '시작 방향'만 보면 비스듬히 위를 향하고 있어서, 우리 뇌는 '해는 저 아래 있는데 달은 왜 위를 보지?'라고 느끼는 거예요.
카메라로 찍으면 어떻게 될까
여기서 컴퓨터 비전을 해본 분이라면 재밌는 포인트가 있어요. 일반적인 카메라 렌즈는 핀홀(원근) 투영을 따르는데, 이 투영은 공간의 직선을 사진에서도 직선으로 보존해요. 그리고 천구의 대원은 관측자 위치를 지나는 평면 위에 있기 때문에, 핀홀 투영으로 찍으면 직선으로 찍혀요.
그러니까 이론적으로는 해와 달이 한 장에 담길 만큼 넓은 화각의 핀홀 사진을 찍으면, 사진 속에서 달의 밝은 면 방향을 쭉 연장한 선이 해를 정확히 지나가요. 문제는 해와 달 사이 각도가 90도 이상 벌어지면 일반 렌즈 한 장에 담기가 사실상 불가능하다는 거예요. 어안 렌즈나 파노라마로 찍으면 투영 방식이 달라져서 다시 선이 휘어 보이고요. 결국 '어떤 투영을 쓰느냐'에 따라 같은 하늘이 전혀 다르게 보이는 거죠.
개발자에게 이게 왜 흥미로울까
이 현상은 사실 여러 개발 분야에서 매일 부딪히는 문제의 축소판이에요.
- 지도·GIS 개발: 위경도 좌표를 화면 픽셀로 바꿀 때 어떤 투영을 쓰느냐에 따라 거리와 방향이 왜곡돼요. 지도 위에 두 지점을 잇는 선을 그릴 때 직선으로 그릴지 대원으로 그릴지 결정해야 하죠.
- 3D 그래픽스·게임: 카메라 FOV를 넓히면 화면 가장자리 물체가 늘어나 보이는 것도 같은 원리예요.
- 컴퓨터 비전·자율주행: 광각이나 어안 카메라 영상을 쓸 때 렌즈 왜곡 모델과 카메라 캘리브레이션이 필수인 이유예요. 투영 모델을 잘못 잡으면 '직선이어야 할 것'이 휘어서 인식 정확도가 떨어지거든요.
- AR/VR: 가상 물체를 실제 하늘이나 공간에 정확히 겹치려면 좌표 변환 체인을 정확히 이해해야 해요.
직접 확인해 보는 방법
다음에 해 질 녘 반달이 보이면 이렇게 해보세요. 팔을 뻗어서 긴 끈이나 막대를 달의 밝은 면 방향에서 해 쪽으로 팽팽하게 대 보는 거예요. 머리를 움직이지 않고 끈을 팽팽히 당기면, 끈이 실제로 달과 해를 동시에 잇는다는 걸 확인할 수 있어요. 착시가 한순간에 풀리는 경험이에요.
마무리
한 줄 정리: 달은 언제나 정확히 해를 향하고 있어요. 어긋나 보이는 건 둥근 하늘을 평평하게 해석하는 우리 뇌의 투영 방식 때문이에요.
여러분은 개발하면서 좌표계나 투영 때문에 고생해 본 경험이 있나요? 지도, 그래픽스, 카메라 등 '분명 맞게 짰는데 휘어 보이는' 버그 이야기를 들려주세요!
🔗 출처: Hacker News