별자리판이란 관측하고 싶은 날짜와 시각에 눈금을 맞춤으로써
그때의 별자리 배치를 쉽게 알 수 있도록 한 기구이다.
내가 우주와 별들에 대해 관심을 가지게 되고 나서 제일 먼저 해보고 싶은 던 일이다.
나라는 티끌같은 존재는 도대체 이 광막한 우주 어디에 살아가고 있는 것인가?
우선 내가 밟고 있는 이곳과 여기서 관찰할 수 있는 자연현상을 알아야 한다.
그래서 물론 굉장히 단순화하고 대략적이긴 하지만,
해와 달 그리고 무수한 별들이 뜨고 지는 반복적인 자연의 현상을 그래픽으로 구현해 보고 싶었다!
나 같이 일반인도 쉽게 이해할 수 있을 정도의 수준(고등학교 수학)으로
내가 파이썬을 활용하여 공부한 별자리 원리와 구현을 여러분과 공유해 보고자 한다.
1. 기본적인 수식
ㅇ 회전변환행렬 : [[cos(th), -sin(th)], [sin(th), cos(th)]]
ㅇ 구좌표계 : [r, theta, phi]
ㅇ 적도좌표계 : [right ascension(적경 h), declination(적위 °)]
2. 단순화 및 가정
ㅇ 먼 우주에서 지구를 봤을때, 지구의 자전축 연장선에서 북극성이 있는 위쪽을 z축방향으로 한다
ㅇ 태양은 고정이고, 지구는 z축에 반시계방향으로 자전과 공전을 한다
ㅇ 지구 자전축의 세차운동은 없다고 가정한다
ㅇ 춘분점에서 태양->지구 연장벡터가 x축, z축에 수직하고 x축을 90° 회전한 벡터가 y축이다
(즉 x축의 적경은 12h 이고 y축의 적경은 6h이다.)
ㅇ 별들은 지구에서 아스라이 멀리 떨어져있다
ㅇ 별들이 뜨는 곳이 동쪽이고 지는 곳이 서쪽이다
3. 프로세스 해석
ㅇ 예시로 천정을 내가 살고 있는 오송 위도(36.63°)에서 적위, 시리우스(6h45')가 남중하는 때의 적경으로 잡는다
(즉 내가 살고 있는 곳에서 시리우스가 남중한 때 별자리판을 보게될 것이다)
ㅇ 천정에서 90° 차이나는 별자리들만 추려서 이 별들을
z축으로 적경만큼, y축으로 적위만큼 순서대로 역회전을 잡아돌린다
그러면 천정은 z축으로 이동하고 별들도 천정을 중심으로 반구가 그대로 이동된다
ㅇ 이렇게 이동하게 된 별자리들 x, y, z 좌표로 부터 우리는 지평좌표계(고도, 방위각)을 얻을 수 있다.
ㅇ z 좌표를 버리고 x, y 좌표를 가지고 그래픽으로 뿌리면 두둥~ 별자리판 완성!!!
ㅇ 단 plot 할때 지구에서 우주를 바라보는 시점으로 바꿔야하므로 가로축은 반전!!!
화려하진 않지만 시리우스가 포함된 겨울철 육각형이 똭!ㅎㅎㅎ
스텔라리움와 유사한 것으로 셀프검증을 마친다.
소스코드는 첨부물을 참고하시기를,,,
조금 더 응용하면 별자리판 애니메이션과 태양, 행성들을 추가해 넣을 수도 있고
(아직 보완해서 나중에 2편을 쓸 예정이다)
심화응용하면 image solver도 어설프게 가능할 것 같다.
아~ 내가 조물주가 된 것 마냥 우주를 동작시키다니,,,ㅎㅎㅎ
'파이썬' 카테고리의 다른 글
GPIB를 이용한 네트워크 분석기 활용 (0) | 2022.05.08 |
---|---|
파이썬 GUI 실행파일 만들기(전력변환기) (0) | 2021.12.03 |
구면삼각법과 적도좌표계 (0) | 2020.04.01 |
이심률과 기하학 (0) | 2020.02.09 |
스크린 캡쳐 프로그램 (0) | 2019.09.22 |