계산 방법
사주는 해석이기 이전에 계산이다. 이 페이지는 이 계산기가 무엇을 어떤 순서로 계산하는지, 그리고 어디서부터 확실하지 않은지를 밝힌다.
출생 시각은 네 단계 보정을 거친다
시계 시각은 태양의 위치가 아니다. 둘을 잇는 데 네 단계가 필요하고, 각 단계는 사주의 서로 다른 기둥에 적용된다.
| 단계 | 무엇에서 | 무엇으로 | 근거 |
|---|---|---|---|
| 1 | 출생지 | 위경도와 시간대 | GeoNames |
| 2 | 현지 시계 시각 | UTC | IANA tzdata |
| 3 | UTC | 지방 평균 태양시 | 경도 ÷ 15 |
| 4 | 지방 평균 태양시 | 지방 진태양시 | 균시차 |
균시차는 시계상의 정오와 태양이 실제로 가장 높이 뜨는 순간의 차이다. 일 년에 걸쳐 대략 ±16분을 오간다.
네 단계를 네 기둥에 모두 적용하지 않는다. 전부 적용하는 것이 이 계산에서 가장 흔한 오류다.
- 년주와 월주는 두 절대 시각을 견주는 일이라 2단계에서 멈춘다. 절입은 전 지구가 공유하는 한 순간이고, 출생 시각도 UTC로 바꿔 같은 프레임에서 비교한다.
- 일주와 시주는 태양이 그 하늘의 어디에 있었는지를 묻는 일이라 네 단계를 모두 쓴다.
각 기둥이 바뀌는 지점
년주
사주의 해는 입춘(태양 황경 315°)에 바뀐다. 1월 1일도 설날도 기준이 아니다. 양력 1월 20일에 태어난 사람은 아직 전년도 년주다.
차이가 아주 작을 수 있다. 2021년 입춘은 자정 56초 전이었고, 그날의 약 0.1%만 새 년주를 가졌다.
월주
월주는 열두 개의 절(節)을 따른다 — 입춘·경칩·청명·입하·망종·소서· 입추·백로·한로·입동·대설·소한. 우수나 춘분 같은 중기(中氣)는 월주를 옮기지 않는다. 달력의 월은 아예 쓰지 않는다.
일주
일주는 절기와 무관한 순수한 60일 주기다:
(율리우스 적일 + 49) mod 60. 이 상수는 1900년부터 2049년까지
80개 표본을 한국천문연구원 음양력 정보와 대조해 정했다. 모든 표본을
만족하는 값은 단 하나였다.
날짜 경계는 시계 자정이 아니라 진태양시 자정이다. 서울은 그 시각이 00:32 부근이라, 시계로 00:15에 태어났다면 아직 전날의 일주다. 한국 출생자의 약 2.5%가 이 구간에 들어가 국내 만세력과 일주가 갈린다. 어느 한쪽이 틀린 것이 아니라 밝혀 둔 방법론 선택의 결과다.
시주
시주는 진태양시를 두 시간 단위로 나눈 구간이다. 자정 대신 23시에 하루를 시작하는 야자시 방식도 선택할 수 있는데, 그 23시 역시 진태양시다 — 시계의 23시가 아니다.
절기는 미리 계산해 둔다
1899년부터 2101년까지의 절입 시각을 미리 계산해 4,872건으로 저장해 둔다. 실행 중에는 천문 계산을 전혀 하지 않고 그 표를 이진탐색한다.
위치 계산은 astronomy-engine(MIT 라이선스)을 쓴다. 공표된 분점·지점 시각 여섯 건과 대조했을 때 최대 오차는 0.7분이었고, 공표값 자체가 분 단위 반올림이다. 표는 한국천문연구원의 공표 절기 시각과 대조했으며, 발견된 몇 건의 불일치는 덮지 않고 결함 목록으로 기록해 두었다.
장소
도시 정보는 GeoNames에서 가져온다. 인구 약 500명 이상 235,046곳이며 각각 자기 IANA 시간대를 갖고 있다. 작은 도시가 중요하다 — 사주는 부모·조부모의 차트를 보는 일이 잦고, 그 세대는 도시 밖에서 태어난 비율이 높다.
같은 이름의 도시가 둘이면 되묻는다. 대신 골라주지 않는다. 미국 일리노이의 스프링필드와 매사추세츠의 스프링필드는 하루의 약 9%에서 일주나 시주가 갈린다.
알 수 없는 것
1970년 이전 시간대는 보증되지 않는다. IANA 시간대 데이터베이스는 1970년 이후 일치했는지를 기준으로 존을 나눈다. 그 이전에 달랐던 곳들은 한 존에 묶여 있다. 1955년 뉴욕은 4월부터 10월까지 서머타임을 썼고 디트로이트는 쓰지 않았지만 둘 다 미 동부다. 별도 존이 있는 곳만 그 차이가 남는다.
이것은 기반 데이터의 한계이지 계산기가 고칠 수 있는 문제가 아니다. 1970년 이전 해외 출생이라면 시주는 나머지보다 덜 확실하다고 보는 편이 맞다.
다음 두 가지도 밝혀 둔다.
- 1962년 이전 한국 기록은 적힌 시각이 당대 지방시인지 현대 표준시인지가 불분명하다. 차이는 30분에서 한 시간인데, 하필 월 경계를 뒤집기 딱 좋은 크기다.
- 표준시 도입 이전에는 지방 평균시로 되돌아간다. 서울은 1908년 이전 날짜에 +8:27:52를 돌려준다. 그 시대에 대해서는 정상 동작이며 버그가 아니다.
같은 입력은 언제나 같은 결과를 낸다
무작위 요소가 없고 즉석에서 지어내는 값도 없다. 같은 생년월일시는 오늘도 내년에도 같은 차트, 같은 신호, 같은 문장을 돌려준다.
모든 응답에 엔진 버전과 사용한 규칙표의 내용 해시가 실려 있어, 어떤 풀이든 그것을 만든 규칙까지 거슬러 확인할 수 있다. 결과 화면에는 표시하지 않지만 API 응답에는 그대로 들어 있다.
해석은 계산과 분리돼 있다. 차트·강약·신호는 버전이 붙은 규칙이 만든다. 언어 모델은 그 규칙이 이미 고른 문장을 잇고 다듬는 일만 한다 — 사주를 다시 계산하거나 판단을 바꾸거나 입력에 없던 주장을 넣을 수 없다. 검증을 통과하지 못하면 고정된 규칙 문장이 대신 나간다.
이 계산기가 하지 않는 것
사건을 예측하지 않고, 결과의 날짜를 짚지 않으며, 의료·재무·법률 자문을 하지 않는다. 구조를 보고하고 경향을 근거와 함께 설명할 뿐이다. 해석 규칙은 이 서비스의 자체 휴리스틱이며 전문가 합의나 실제 결과 데이터로 교정되지 않았다. 그 사실은 모든 풀이에 함께 표시한다.