총 게시물 103건, 최근 0 건
   
MatriXsLib 1.0
글쓴이 : 이형철 날짜 : 2003-06-15 (일) 02:02 조회 : 22044
MatriXsLib은 천문학 프로그래밍을 위한 많은 함수들을 구현해놓은 C++ 라이브러리 입니다. 먼저 여기 에서 MatriXsLib 1.0 Source code를 다운로드 받으세요.

각 class에 대한 설명

시간 관련 class
class 이름 설명
Date
날짜를 나타낸다.
내부적으로 저장되는 변수의 값은 자정의 Julian day 값이 저장되므로 반드시 .5로 끝나야 한다.
Time
시간을 나타낸다.
DateTime
Date와 Time class를 묶은 class이다.
어떤 지역의 어떤 시간(LCT, UT, LST, GST)인지는 상관하지 않으며 단지 어떤 한 순간만을 나타낸다. 이 클래스는 사실 천문학적으로는 JD를 나타내는 class이다.
LCT : DateTime
Local Civil Time
UT : DateTime
Universal Time
GST : DateTime
Greenwich Sidreal Time
LST : DateTime
Local Sidreal Time

좌표계 관련 class
class 이름 설명
Vector
3차원 벡터를 나타낸다.
주로 Coordinate가 변환되어 사용되므로 크기는 1이 될 것이다.
Coordinate
2차원 구면 좌표상의 좌표이다.
Horizon : Coordinate
지평 좌표계
Equatorial : Coordinate
적도 좌표계
Ecliptic : Coordinate
황도 좌표계
Galactic : Coordinate
은하 좌표계
Matrix
3차원 벡터와의 곱이 가능한 Matrix이다.
천문학 적인 좌표 변환은 모두 이 class를 이용해 이루어진다.

천문학적인 위치 계산을 위한 class
class 이름 설명
Sun
태양의 위치 계산
Moon
달의 위치 계산
Planet
행성의 위치 계산
데이터 from http://ssd.jpl.nasa.gov
계산 방법은 from http://home.tiscali.se/~pausch
밝기와 반지름에 관한 정보는 practical astronomy with your calculator
Mercury : Planet
수성의 위치 계산
Venus : Planet
금성의 위치 계산
Earth : Planet
지구의 위치 계산
Mars : Planet
화성의 위치 계산
Jupiter : Planet
목성의 위치 계산
Saturn : Planet
토성의 위치 계산
Uranus : Planet
천왕성의 위치 계산
Neptune : Planet
해왕성의 위치 계산
Pluto : Planet
명왕성의 위치 계산
Comet : Planet
혜성의 위치 계산
Asteroid : Planet
소행성의 위치 계산

기타 class
class 이름 설명
Util
계산에 필요한 각종 static 함수들을 집어 넣어둔다.
예를 들어 sqrt, cbrt, normalize, ftoi, rad2deg, deg2rad 등이 들어있다.

사용법 및 예제

모든 헤더 파일은 MatriXsLib.h 안에 들어있습니다.
우리 라이브러리 사용하실 분들은
#include MatriXsLib.h
하신 다음 그냥 각종 클래스들을 사용하시면 됩니다.(쉬워요!)

다운로드 받으셔서 Visual C++에서 연 다음에
MatriXsLib.cpp 파일에 있는 main()
함수를 띄워서 예제를 보시면 됩니다.

Visual C++에서 관련된 class를 누르시면 함수와 멤버들을 확인할 수 있습니다.
우리 프로젝트도 이파일을 기준으로 해서 확장하도록 하죠

그럼 소스 코드 나갑니다.

#include "MatriXsLib.h"
 
void main()
{

  
   DateTime dt(2003, 7, 10, 6, 0, 0);
   double jd = dt.GetJD();
 
  
   // LCT를 하나 선언
   LCT lct(2003, 7, 10, 6, 0, 0);
   // GST를 하나 선언함, 위에서 구한 jd를 사용
   GST gst(jd);
 
  
   // 위치를 하나 선언
   Location loc(Util::deg2rad(127.0), Util::deg2rad(37.0), +9.0);
   // LCT로부터 UT를 구함
   // 이 때 GMT와의 차이가 필요한데 위에서 선언한 loc 변수를 사용함

   UT ut(lct, loc.m_dgmt);
   // UT로부터 GST를 구함
   GST gst2(ut);
   LST lst(gst, loc.m_lon);
   // 이 모든 것을 한 줄로 할 수 도 있음
   LST lst2(lct, loc.m_dgmt, loc.m_lon);
 
  
   // 고도 방위각으로부터 직접 horizon coordinates를 선언

   Horizon hor(Util::deg2rad(6.0), Util::deg2rad(0));
   // 적경, 적위값으로부터 직접 equatorial coordinates를 선언
   Equatorial equ(Util::deg2rad(6.0), Util::deg2rad(0));
   // 황경, 황위로부터 직접 ecliptic coordinates를 선언
   Ecliptic ecl(Util::deg2rad(6.0), Util::deg2rad(0));
   // 은경, 은위로부터 직접 galactic coordinates를 선언
   Galactic gal(Util::deg2rad(6.0), Util::deg2rad(0));
 
  
   // 적도 좌표계로부터 지평 좌표계를 얻어옴

   Equatorial equ2(hor, lst, loc.m_lat);
   // euqatorial 좌표계에서 세차를 보정하는 방법
   equ2.CorrectPrecession(2000, 1875);
 
  
   // 변환 행렬을 얻어옴

   Matrix mat1 = Matrix::Ecl2Equ(ut);
   Matrix mat2 = Matrix::Equ2Hor(lst, loc.m_lat);
   // 합성 변환을 만듬
   Matrix mat = mat1 * mat2;
   // 드디어 변환
   Horizon hor3 = mat * equ;
 
  
   // 특정 시간의 태양을 생성, 모든 계산은 이 때 행해짐

   Sun sun(ut);
   // 지구 중심의 위치를 얻어옴, 즉, 현재 지구의 위치를 계산해서 뺌
   Vector pos = sun.GetPositionG();
   // 태양 중심의 위치를 얻어옴(항상 0, 0, 0)
   Vector pos2 = sun.GetPositionH();
   // GetPositionG와 GetPositionH 등의 함수는
   // 제가 잘못 생각하고 설계한 것입니다.
   // 모든 위치는 자신이 공전하고 있는 것을 중심으로 계산하는게 좋을 듯 합니다.
 
  
   // 특정 시간의 달을 생성, 모든 계산은 이 때 행해짐

   Moon moon(ut);
   // 지구 중심의 위치를 얻어옴
   Vector pos3 = moon.GetPositionG();
}

지도리 2003-06-18 (수) 04:04
정말 보기좋게 프로그래밍 해
댓글주소
2003-09-08 (월) 20:20
ㅋㅋ
댓글주소
허승재 2003-10-23 (목) 14:14
수고 많으셨습니다. 기회가 된다면 직접 참여하고 싶군요.
내공을 더욱 쌓고 참여하도록 하겠습니다.
댓글주소
조용재 2004-01-23 (금) 13:13
죽인다 저도 내공을 좀더 쌓은 담에 ...
댓글주소
남준모 2006-10-04 (수) 14:14
뭔말인지 하나도
댓글주소
황태욱 2007-12-07 (금) 19:19
행성 위치
계산 방법은 from http://home.tiscali.se/~pausch
부분에서
사이트가
http://stjarnhimlen.se/comp/ppcomp.html
로 바뀌었네요.^^
댓글주소
정재원 2009-06-12 (금) 13:13
이소스가 라이브러리 최종번전 인가요?
댓글주소
   

총 게시물 103건, 최근 0 건
번호 제목 글쓴이 날짜 조회 추천
 MatriXsLib 1.0 +7 이형철 06-15 22045 670
 MatriXsLib 예제 프로그램을 올립니다. +2 이형철 07-02 9681 32
103  MatriXsLib 1.0 +7 이형철 06-15 22045 670
102  별볼일 있는 세상을 만드는 MatriXs Project +7 지용호 08-21 19092 516
101  MatriXsLib 예제 프로그램을 올립니다. +2 이형철 07-02 9681 32
100  점찍기를 사용한 캐드 삼차원 지도 작업의 소… +1 이수욱 10-29 8224 146
99  matrix2 컴파일 실행 에러 문의입니다. +5 황태욱 01-08 8181 129
98  안녕들하세요~^^ +1 이도원 06-22 7747 137
97  이렇게 좋은 소스가..^^ +2 황태욱 01-07 7399 109
96  요즘 다들 머하시나요? +5 이도원 12-10 7180 122
95  Astronomical Algorithm.. +4 김창환 10-31 7155 122
94  우리 별자리선 자료 파일 김창환 09-17 7139 47
93  첫모임~~~~ 이도원 06-08 7109 25
92  비공개 개시판에 우리 별자리선 자료 파일을 … +2 김창환 09-17 6939 127
91  c 를 공부하다가 +5 이도원 11-13 6832 114
90  프로그램이 돌아가지 않을때 이파일을 받으… +2 이도원 09-16 6829 123
89  침체기 같네요... +3 이도원 09-22 6528 106
 1  2  3  4  5  6  7  맨끝
 
Since 2001.2.7 과학기술정보통신부 등록 비영리민간단체 천문노트. Copyright All rights reserved.
단체명 : 천문노트  |    고유번호 : 101-82-15888  |    대표자명 : 김태욱, 조우성  |    주소 : 138-804 서울특별시 송파구 가락동 93 금강빌딩 7층 710호  |    전화 : 02-543-3295  |    Fax : 02-6918-6888  |    통신판매신고번호 : 종로 제01-5696호  |    개인정보관리책임자 및 사이트관리자 : 지용호