Files
sunrise/docs/superpowers/plans/2026-10-29-dem-terrain.md
T

31 lines
2.9 KiB
Markdown

# 관악산 Copernicus 지형 적용 계획
**Goal:** 공개 30m급 두 타일을 보존하고 관악산 주변 DSM을 기존 고정 시점 시뮬레이터에 적용한다.
**Architecture:** Python 오프라인 전처리 → 정적 float32 높이 격자·메타데이터 → 기존 Three.js 장면의 지형 메시. 브라우저 GIS 의존성/백엔드는 추가하지 않는다.
## 범위와 결정
- 원본 N37 E126/E127을 data/raw/copernicus에 보관하고 SHA256/출처를 기록한다.
- 원본 WGS84 경위도와 EGM2008 높이를 확인한 후 관측점 중심 AEQD(m) 좌표로 변환한다.
- 초기 영역은 동서·남북 24km, 30m 간격(801×801). 원본보다 정밀하다는 의미가 아니다.
- +X 동, +Y 위, -Z 북. 구면 지구 곡률 하강을 근사 반영한다. 지상 대기굴절은 미반영.
- 임시 수동 해발고도 629m 대신 해당 임시 좌표의 DSM 표면+눈높이에 카메라를 둔다. 계산에도 같은 DSM 고도를 사용하고 화면에 명시한다. DSM은 수목·구조물을 포함하므로 실측 관측점이 아니다.
- 가상 0° 지평선의 불투명 하반구는 해발고도에 따른 단순 해수면 지평선으로 낮추고 선/방위 표시는 유지한다. 영역 밖 실제 능선은 미반영임을 명시한다. 태양 원반은 지형보다 멀리 배치해 깊이 버퍼로 가린다. 0° 아래 일괄 숨김은 지형 모드에서 제거한다.
- 일출/일몰 숫자는 계속 천문 계산값이며 능선 위 첫 관측 시각을 새로 계산하지 않는다.
- 지형 다운로드 실패 시 빈 성공 화면 대신 오류를 표시한다.
## 작업 및 검증
- [x] 다운로드·메타데이터·결측값·관측점 표면고도 검사, 재현 가능한 전처리 스크립트 및 출처 파일.
- [x] 격자 정합/방위/보간/곡률/실데이터 범위 검증 테스트 후 지형 생성.
- [x] 기존 world/sun/horizon/main/UI에 지형 통합, 로딩/실패 처리와 출처 표시.
- [x] 전체 테스트·빌드, 일출 전후/낮 브라우저 검증, 독립 코드 리뷰, 문서 갱신.
## 검증 기록
- 원본 합계 79,266,369 bytes. 가공 높이 격자 2,566,404 bytes / 801² 표본 / 결측 0.
- 관측점 표면 606.906372m, 격자 범위 1.314315~618.474609m. 실측 고도가 아니며 원본의 표면 높이를 그대로 사용.
- 새 테스트 4개 포함 전체 22개. 실제 03-20 06:40/06:50 태양 중심의 차폐/통과를 확인.
- 독립 리뷰: important issue 없음. 지형 로딩/렌더링 오류 없음. 내장 브라우저의 Pointer Lock 거부는 재현되었으며 오류 안내가 표시됨.
- 일반 브라우저 Pointer Lock 수동 조작은 이전 단계 미검증 상태 유지(컨트롤 코드 변경 없음).
## 검토 초점
북쪽 뒤집힘, 경도127° 타일 경계, DSM/수동 표고 불일치, 지형보다 가까운 태양, 0° 강제 차폐, 큰 정적 파일 배포 누락.