283 번 글: [misc] 천문계산 - 각도변환, 시간변환, 좌표계변환 |
글쓴이: 산이
[홈페이지]
|
글쓴날: 2012년 01월 15일 02:03:06 일(새벽) |
조회: 5939 |
[misc] 천문계산 - 각도변환, 시간변환, 좌표계변환
1. 각도 변환
- 각도, 시분초, 도분초, 시간(h)
- 각도 <-> 시분초
- 각도 <-> 도분초
- 각도 <-> 시간
- 시분초 <-> 도분초
- 시분초 <-> 시간
- 도분초 <-> 시간
- deg2hms(deg) <-> hms2deg(hms)
- deg2dms(deg) <-> dms2deg(dms)
- deg2h(deg) <-> h2deg(h)
- hms2dms(hms) <-> dms2hms(dms)
- hms2h(hms) <-> h2hms(h)
- dms2h(dms) <-> h2dms(h)
2. 시간 체계
UT = TT - dT
DT = 역학시
TDT(Terrestrial Dynamical Time) = DT(Dynamical Time) = TT(Terrestrial Time)
- local = time(),date()
- JD = GMT 12:00:00 기준 이므로 local 속성
- UT = gmtime(),gmdate() or local-time_offset
- TT = UT + dT // 각종 천체 운행에 사용
- JD <-> UT <-> GST <-> LST
<------------->
<------------->
<-------------------->
- JD2UT(JD,-time_offset) <-> UT2JD(ut,+time_offset)
- UT2GST(ut) <-> GST2UT(gst) // 아래 함수
- GST2LST(gst,+lon_offset) <-> LST2GST(lst,-lon_offset)
*함수출처) http://astronote.org/
double UTToGST(double ut)
{
double gst_time, ut_date, ut_time, t, t0;
ut_date = time_get_date(ut);
ut_time = time_get_time(ut);
t = (ut_date - 2451545.0) / 36525.0; // d0 /36525
t0 = 6.697374558 + (2400.051336 * t) + (0.000025862 * t * t);
t0 = util_norm(t0, 0, 24);
gst_time = ut_time * 1.00273790935 + t0;
gst_time = util_norm(gst_time, 0, 24);
return ut_date + gst_time / 24.0;
}
TIME UTToGST(TIME ut)
{
double t = (GetJD0(ut)-2451545.0)/36525;
t0 = 280.46061837 + 360.98564736629 (ut - 2451545.0) + (0.000387933 -
t/38710000)*t*t;
return ut*1.00273790935+t0;
}
## JD to Local/Greenwich Sidreal Time
## http://www.jgiesen.de/astro/astroJS/sunriseJS/index.htm // in
rsTL.js
##
function jd2lst($JD, $longitude=0)
{
$MJD = $JD - 2400000.5;
$MJD0 = floor($MJD);
$ut = ($MJD - $MJD0) * 24.0;
$t = ($MJD0 - 51544.5) / 36525.0;
$gst = 6.697374558 + (1.00273790935*$ut) + (8640184.812866 +
(0.093104-0.0000062*$t)*$t) * $t/3600.0;
$gst = ($gst>=0) ? fmod($gst,24.0) : fmod($gst,24.0) + 24.0; // to 24hours unit
$lst = fmod($gst+$longitude/15.0,24.0); // to 24hours unit
return $lst; // 24hours unit (hour angle)
}
double GSTToUT(double gst)
{
double gst_date, gst_time, t, t0, ut_time;
gst_date = time_get_date(gst);
gst_time = time_get_time(gst);
t = (gst_date - 2451545.0) / 36525.0;
t0 = 6.697374558 + (2400.051336 * t) + (0.000025862 * t * t);
t0 = util_norm(t0, 0, 24);
ut_time = (gst_time - t0);
ut_time = util_norm(ut_time, 0, 24);
// 이 계산 때문에 하루치가 달라질 수 있으며 하루에 두개가
생길 수 도 있음
ut_time *= 0.9972695663;
return gst_date + ut_time / 24.0;
}
- LST = Ha(시간각) + RA(적경)
- Ha = LST - RA (적경과 항성시가 같으면 시간각=0)
- RA = LST - Ha
3. 좌표변환
*출처) http://blueedu.dothome.co.kr/
황도좌표
- 황경(L), lon
- 황위(B), lat
- 황도경사각(e)
적도좌표
- 적경(RA)
- 적위(dec)
- 시간각(Ha): 남중시각에서 서쪽으로 잰 시간각
지구좌표
- 경도(Lon), lon
- 위도(Lat), lat
지평좌표
- 방위각(A), Az
- 고도(h), Alt, alt
- 항성시(Lst)
1) 항성시 계산
JDTT = JD of TT
UT1 = r' * 항성시
T = (JDTT - 2451545.0) / 36525
IAU1980/1982
r' = 1.002737909350795 + 5.90060*T/10^11 - 5.90000*T^2/10^15
IAU2000
r' = 1.00273790934498694 + 5.90107*T/10^11 - 5.92187*T^2/10^15 + 1.59032*T^3/10^15
IAU2006
r' = 1.00273790934496866 + 5.87954*T/10^11 - 2.78538*T^2/10^17 - 2.53133*T^3/10^15 -
3.88654*T^4/10^18
2-1) 황도좌표 to 적도좌표
sin(dec) = sin(B)*cos(e) + cos(B)*sin(e)*sin(L)
tan(RA) = (sin(L)*cos(e) - tan(B)*sin(e)) / cos(L) = x/y
RA = atan2(x,y)
황도경사각
cos(e) = (sin(dec)*tan(dec) - tan(L)*cos(RA)*cos(B)*sin(L)) / (sin(B)*tan(dec) -
sin(RA)*cos(B)*sin(L))
2-2) 적도좌표 to 황도좌표
sin(B) = sin(dec)*cos(e) - cos(dec)*sin(e)*sin(RA)
tan(L) = (sin(RA)*cos(e) + tan(dec)*sin(e)) / cos(RA) = x/y
L = atan2(x,y)
3-1) 적도좌표 to 지평좌표
sin(h) = sin(dec)*sin(Lat) + cos(dec)*cos(Lat)*cos(Ha)
tan(A) = -cos(dec)*sin(Ha) / (sin(dec)*cos(Lat) - cos(dec)*sin(Lat)*cos(Ha)) = x/y
A = atan2(x,y)
3-2) 지평좌표 to 적도좌표
sin(dec) = sin(h)*sin(Lat) + cos(h)*cos(Lat)*cos(A)
tan(Ha) = -cos(h)*sin(A) / (sin(h)*cos(Lat) - cos(h)*sin(Lat)*cos(A)) = x/y
Ha = atan2(x,y)
RA = LST - Ha
|
이전글 : [misc] 개략적인 천문박명 시간 알아보기
다음글 : [misc] 프로그램 디렉토리별 분류
|
from 211.212.225.115
JS(Redhands)Board 0.4 +@
|
|