오전과 오후에 길이가 같아진 그림자의 끝점을 연결하면 동서 방향의 기준선을 얻을 수 있습니다. 로마 위도에서 1년 치를 계산해 보니 이 방법 자체의 오차는 0.1°도 되지 않았고, 정확도를 좌우한 것은 그림자 끝을 얼마나 또렷하게 읽느냐였습니다. 핵심은 그림자 하나가 가리키는 쪽을 믿는 것이 아니라, 같은 조건의 관측 두 개를 짝짓는 데 있습니다. 다만 이는 하루 동안 태양의 남북 위치 변화가 작다는 근사를 이용하므로, 언제 어디서나 오차 없이 정동·정서를 찾는 방법은 아닙니다.
비트루비우스의 《건축십서》에는 수평면 위에 그림자를 만드는 막대인 그노몬을 세우고, 원을 이용해 남북선을 작도하는 설명이 남아 있습니다. 여기서는 그 작도에서 동서선이 어떻게 나오는지 거꾸로 풀어보겠습니다. 원전 I.6.6~7이 설명하는 것은 방향 기준의 설정이지, 모든 고대 건물이 같은 절차로 배치되었다는 사실은 아닙니다.
그림자 끝 두 개에 ‘같은 길이’라는 조건을 걸기
먼저 바닥이 수평이고 막대가 수직이라고 생각해 보겠습니다. 막대 밑동을 O, 오전 그림자 끝을 P로 정합니다. O를 중심으로 OP 길이를 반지름으로 삼은 원을 그립니다. 오후에는 그림자 끝이 다시 이 원에 닿는 순간의 위치를 Q로 잡습니다. 원 위의 점이므로 OP와 OQ는 같습니다.
이 조건은 단순히 시간을 띄워 점 두 개를 찍는 것과 다릅니다. 같은 높이의 수직 막대에서 그림자 길이가 같다는 것은 태양의 고도, 즉 지평선 위로 올라온 각도가 같다는 뜻입니다. ‘오전 10시와 오후 2시’처럼 시계 숫자를 맞출 필요도 없습니다. 원이 길이 비교의 기준을 대신합니다.
원을 그렸는데 왜 방향을 알 수 있을까?
태양의 하루 경로가 남북을 지나는 수직면을 기준으로 대칭이라고 놓으면, 같은 고도의 오전·오후 태양은 그 면의 양쪽에 대응합니다. 그림자도 서로 대칭입니다. 따라서 두 끝점의 남북 위치는 같고 동서 위치만 달라집니다. P와 Q를 잇는 선은 동서선이 됩니다.
원전은 두 점을 중심으로 같은 반지름의 호를 그려 만나는 점을 찾고, 그 교점과 O를 잇습니다. 현대 기하 용어로 보면 PQ의 수직이등분선을 찾는 것입니다. 이 선이 남북선이고, 여기에 직각인 PQ가 동서 방향을 보여줍니다. 관측한 것은 P와 Q 두 점이며, 남북선은 그 점들에서 작도한 결과입니다.
그림자 하나는 왜 부족할까요? 아무 때의 그림자는 그 순간 태양의 반대쪽일 뿐입니다. 원 위에서 두 점을 고르는 일은 관측 수만 늘리는 것이 아니라 같은 태양 고도라는 비교 조건을 만드는 일입니다. 저는 막대의 단순함보다 이 조건에 주목합니다. 무엇을 같게 맞추었는지 알아야 두 관측을 함께 쓸 수 있습니다.
점 하나를 2cm 잘못 찍으면
작도의 원리가 맞아도 표시가 흐리면 선의 방향은 달라집니다. 이를 분리해서 보기 위해 실제 고대 측량값이 아닌 가상 예를 계산하겠습니다. 한 끝점은 정확하고 다른 끝점만 기준선에 수직인 방향으로 2cm 벗어났다고 가정합니다. 원래 두 점 사이의 동서 간격은 1m로 유지합니다.
먼저 긴 선의 한쪽 끝만 옆으로 조금 밀었다고 생각해 보세요. 선이 짧을수록 방향이 더 많이 돌아갑니다. 아래의 arctan은 옆으로 벗어난 길이÷기준선 길이에 대응하는 각을 찾는 연산입니다. 함수를 몰라도 같은 2cm가 1m 선과 2m 선에서 만드는 차이를 비교하면 뜻을 읽을 수 있습니다.
표시 오차 = 2cm = 0.02m
동서 간격 = 1m
방향 차이 = arctan(0.02 ÷ 1)
≈ 1.15°
같은 2cm 오차를 두고 간격만 2m로 늘리면 방향 차이는 약 0.57°가 됩니다. 소수 둘째 자리까지 반올림한 값입니다. 이 비교는 점을 잇는 선이 짧을수록 같은 표시 흔들림에 민감하다는 것을 보여줍니다. 고대인이 실제로 이 정도 틀렸다는 뜻도, 막대를 높이면 언제나 정확해진다는 뜻도 아닙니다. 그림자 끝 자체가 더 흐려지는 경우까지 포함한 계산은 아니기 때문입니다.
표시를 정교하게 해도 남는 오차
더 근본적인 문제는 태양 경로의 대칭이 완벽하지 않다는 점입니다. 태양의 적위는 하늘의 적도를 기준으로 한 남북 각도이며, 계절에 따라 연속적으로 변합니다. 오전과 오후 사이에도 조금 달라지므로 같은 길이의 그림자가 정확한 대칭 위치에 놓인다고 보장할 수 없습니다.
과학사 연구자 Michio Yano는 산스크리트 건축 문헌의 방향 결정법을 분석하며 이 적위 변화와 보정 문제를 다룹니다. 논문의 원 작도·보정 논의(PDF 1~4쪽)는 간단한 원 작도에 천문학적 한계가 있음을 확인하는 근거입니다. 다만 논문이 분석하는 중세 인도 문헌의 보정법을 비트루비우스도 그대로 썼다고 옮겨 말할 수는 없습니다.
직접 계산해 보니: 해의 남북 이동이 만드는 오차는 0.1°도 안 됐습니다
그렇다면 이 천문학적 오차는 실제로 얼마나 클까요? 로마(북위 41.9°)에 1m 막대를 세우고, 해가 남중하기 3시간 전 그림자 끝과 그 뒤 같은 길이가 되는 오후 그림자 끝을 이었다고 놓고 2026년 1년 동안 하루씩 계산했습니다. 오전과 오후 사이에 해가 실제로 남북으로 움직이는 만큼을 그대로 반영한 결과입니다.

| 날짜(2026년) | 오전 태양 고도 | 1m 막대 그림자 길이 | 동서선 어긋남 | 10m 벽 끝에서 |
|---|---|---|---|---|
| 3월 20일 (춘분 무렵) | 31.7° | 1.62m | −0.09° | 약 1.6cm |
| 5월 5일 | 43.8° | 1.04m | −0.07° | 약 1.2cm |
| 6월 21일 (하지) | 48.5° | 0.89m | 0.00° | 0cm |
| 8월 7일 | 43.9° | 1.04m | +0.07° | 약 1.2cm |
| 9월 23일 (추분 무렵) | 31.6° | 1.62m | +0.09° | 약 1.6cm |
| 12월 21일 (동지) | 12.6° | 4.49m | 0.00° | 0cm |
결과는 예상보다 작았습니다. 해의 남북 위치가 가장 빠르게 변하는 춘분·추분 무렵에도 어긋남은 0.1°에 못 미쳤고, 해의 남북 이동이 거의 멈추는 하지와 동지에는 사실상 0이었습니다. 남중 2시간 전이나 4시간 전으로 바꿔 계산해도 최대값은 0.09°와 0.10°로 거의 같았습니다.
오히려 더 큰 문제는 그림자 끝 자체였습니다. 해는 점이 아니라 지름 약 0.53°의 원반이라서 막대 끝 그림자는 칼로 자른 듯 끝나지 않고 가장자리가 번집니다. 1m 막대에서 이 번짐의 폭을 계산하면 춘분 무렵 약 1.8cm, 하지 약 1.2cm, 동지 약 4.3cm였습니다. 한쪽 끝점만 이만큼 잘못 읽어도 동서선은 0.37~0.41° 돌아갑니다. 해의 남북 이동이 만드는 오차의 네 배가 넘습니다.
그래서 직접 해 본다면 날짜보다 그림자 끝을 또렷하게 만드는 쪽이 효과가 큽니다. 막대 끝에 작은 구멍이 뚫린 판이나 구슬을 달아 빛점이나 둥근 그림자의 중심을 표시하면 번짐을 줄일 수 있습니다. 춘분·추분 무렵에 한다면 오전과 오후 측정 간격을 너무 벌리지 않는 것도 도움이 됩니다. 앞의 2cm 계산과 이 결과를 함께 보면, 비트루비우스식 원 작도의 정확도를 결정하는 것은 하늘의 기하보다 땅 위의 표시였다고 정리할 수 있습니다.
이 차이를 구별하면 결과를 점검하는 순서도 분명해집니다. 수평면과 수직 막대가 맞는지, 두 표시가 정말 같은 원 위인지 먼저 확인하고, 그다음 대칭을 가정할 수 있는 정밀도인지 따져야 합니다. 그림자로 방향을 찾는 지혜는 단순한 도구가 마법처럼 정확하다는 데 있지 않습니다. 움직이는 자연에서 비교 가능한 순간을 고르고, 그 비교가 어디까지 유효한지 묻는 데 있습니다.
계산 방법과 참고 자료
위 표와 그래프는 정보호수가 직접 계산한 값입니다. 천문 계산 라이브러리 PyEphem 4.2.1로 로마(북위 41.90°, 동경 12.50°)에서 날마다 남중 시각과 해의 고도·방위를 구하고, 오전과 같은 고도가 되는 오후 시각을 수치 계산으로 찾았습니다. 바닥은 완전한 수평, 막대는 완전한 수직으로 두었고 대기굴절은 넣지 않았습니다. 굴절은 같은 고도의 오전·오후에 거의 똑같이 작용해 동서선 방향에는 영향이 작습니다.
- Vitruvius, 《건축십서》 I.6.6~7 (Gwilt 영역): 그노몬과 원을 이용한 방향 작도
- Michio Yano (1986), 산스크리트 문헌의 방향 결정법 연구(PDF): 원 작도의 천문학적 한계와 보정
- PyEphem 공식 문서: 해의 위치 계산에 사용한 라이브러리



