TECH 으로 돌아가기
TECH HACKER NEWS 2026.10.30 21:59 7분 읽기 26 READS

터미널에 밤하늘을 띄워주는 C 플라네타리움 'astroterm'

터미널에 밤하늘을 띄워주는 C 플라네타리움 'astroterm'
SOURCE IMAGE · HACKER NEWS
터미널에 밤하늘을 띄워주는 C 플라네타리움 'astroterm'

터미널에 펼쳐지는 밤하늘

개발자에게 터미널은 일하는 곳이면서 노는 곳이기도 하죠. cmatrix로 매트릭스 비를 내리거나, asciiquarium으로 물고기를 키우거나, curl wttr.in으로 날씨를 확인하는 것처럼요. astroterm은 여기에 천체투영관(플라네타리움)을 하나 더해요. 내 위치와 현재 시각을 기준으로, 지금 머리 위 하늘에 떠 있는 별과 행성, 달을 터미널 문자로 실시간으로 그려주는 프로그램이에요. C로 작성된 오픈소스 프로젝트이고, 겉보기에는 장난감 같지만 안을 들여다보면 천문 좌표 계산과 TUI 렌더링이 알차게 들어 있어서 소개해보려고 해요.

무엇을 보여주나요

주요 기능을 정리하면 이래요.

위도와 경도를 지정하면 그 장소의 하늘을, 날짜와 시각을 지정하면 과거나 미래의 하늘을 볼 수 있어요. 서울을 기준으로 실행하면 대략 아래와 같은 모습이에요. 옵션 이름은 버전마다 다를 수 있으니 --help로 꼭 확인하세요.

astroterm --latitude 37.57 --longitude 126.98 --color --constellations

어떻게 동작할까: 하늘 좌표를 화면 좌표로 바꾸기

이 프로젝트에서 가장 재미있는 부분은 좌표 변환이에요. 별 카탈로그에는 별의 위치가 적경과 적위(Right Ascension, Declination)로 적혀 있어요. 지구의 위도와 경도를 하늘에 그대로 옮겨 놓은 '하늘의 주소'라고 생각하면 돼요. 이 주소는 별마다 거의 바뀌지 않기 때문에 카탈로그로 정리해둘 수 있어요.

그런데 우리가 실제로 보는 하늘은 지구가 자전하니까 계속 돌아가요. 그래서 관측자를 기준으로 한 좌표인 고도와 방위각(지평선에서 얼마나 높이, 어느 방향에 있는지)으로 바꿔야 해요. 이 변환에는 관측자의 위도와 항성시(별을 기준으로 잰 시간)가 필요해요. 현재 시각을 천문학에서 쓰는 연속 날짜 번호인 율리우스일로 바꾸고, 여기서 항성시를 구한 다음, 삼각함수로 좌표를 변환하는 흐름이에요.

마지막으로 반구 모양의 하늘을 평평한 터미널 화면에 펼쳐야 해요. 지도를 만들 때처럼 투영법을 써서 머리 바로 위(천정)를 화면 가운데에, 지평선을 원의 테두리에 놓고 그려요. 밝은 별은 더 눈에 띄는 문자로, 어두운 별은 작은 점으로 표현하고요. 행성은 별과 달리 하늘에서 계속 움직이기 때문에 궤도 요소를 이용해서 날짜마다 위치를 따로 계산해야 해요.

업계 맥락: TUI가 다시 뜨고 있어요

천체 소프트웨어로는 Stellarium 같은 본격적인 GUI 플라네타리움이 이미 있어요. 사실적인 그래픽과 방대한 데이터가 필요하면 그쪽을 쓰는 게 맞아요. astroterm의 장점은 다른 데 있어요. 가볍고, SSH로 접속한 서버에서도 돌아가고, 코드 규모가 작아서 처음부터 끝까지 읽어볼 수 있다는 점이에요.

최근 몇 년 사이 터미널 UI(TUI)는 다시 활발한 분야가 됐어요. Go의 Bubble Tea, Rust의 Ratatui, Python의 Textual 같은 프레임워크 덕분에 btop, lazygit, k9s처럼 세련된 터미널 도구가 많이 나왔죠. astroterm은 이런 프레임워크 대신 C와 ncurses라는 고전적인 조합으로 만들어졌어요. 그래서 프레임워크가 감춰주는 화면 갱신이나 문자 단위 렌더링이 실제로 어떻게 이루어지는지 직접 볼 수 있어요.

한국 개발자에게 주는 시사점

당장 실무에 쓸 도구는 아니지만, 사이드 프로젝트 교재로는 아주 좋아요. 첫째, 좌표계 변환은 게임 개발, 지도와 GIS, AR, 드론처럼 현실 세계의 위치를 화면으로 옮기는 모든 분야의 기본이에요. 천문 좌표는 그 원리를 연습하기 좋은 소재예요. 둘째, 공개 데이터셋(별 카탈로그)을 읽어서 의미 있는 결과물로 시각화하는 과정을 처음부터 끝까지 경험할 수 있어요. 셋째, C 프로젝트가 빌드 설정, 데이터 파일, 렌더링 루프를 어떻게 나눠 구성하는지 작은 규모로 살펴볼 수 있어요. 이 프로젝트를 Rust나 Go로 포팅해보는 것도 좋은 주말 프로젝트가 될 거예요. 서울은 광공해 때문에 별을 보기 어렵지만, 터미널에서는 오리온자리 정도는 선명하게 볼 수 있어요.

마무리

astroterm은 천문 좌표 계산과 고전적인 TUI를 작고 읽기 쉬운 C 코드에 담은, 배우는 재미가 큰 프로젝트예요. 여러분 터미널에는 쓸데없지만 아끼는 도구가 뭐가 있나요? 추천하고 싶은 TUI 프로그램이 있다면 댓글로 공유해주세요!


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/da-luce/astroterm
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...