グリニッジ恒星時と地方恒星時

グリニッジ恒星時の計算方法

 グリニッジ恒星時(ST)はユリウス日(JD)と世界標準時(UTC)を利用して以下の公式で計算することができる。

T = (JD - 2451545.0) / 36525.0
グリニッジ恒星時 = 6.697374558 + 1.0027379093*UTC + 2400.051336*T + 0.000025862*T*T


 UTCは以下の式によって数値に変換したものを用いる。
UTC = nHour + nMin/24.0 + nSec/(24.0*60.0)


地方恒星時の計算方法

 地方恒星時は恒星時および観察場所の経度を利用して以下の公式で計算することができる。

地方恒星時=恒星時 + 経度 / 15.0

 ここで経度は東経を正の値、西経を負の値として代入する。


ソースコード

//
//	グリニッジ恒星時の取得
//
//	世界標準時からグリニッジ恒星時を取得する。
//	計算結果は時単位であり、ラジアン単位ではないことに注意
//
double	GetGreenwichSiderealTime(int nYear,int nMonth,int nDay,int nHour,int nMin,int nSec)
{
	double	dJD;
	double	dT;
	double	dUT;
	double	ret;

	GetJD(dJD,nYear,nMonth,nDay,nHour,nMin,nSec);
	dT = (dJD - 2451545.0) / 36525.0;
	dUT = nHour + (double)nMin/24.0 + (double)nSec/(24.0*60.0);
	ret = 6.697374558 + 1.0027379093*dUT + 2400.051336*dT + 0.000025862*dT*dT;

	if(ret > 24)
		ret = ret - ((int)(ret/24)) * 24;

	return	ret;
}


//
//	地方恒星時の取得
//
//	dSiderealTimeは恒星時を渡す
//	dLongitudeは観察場所の経度を渡す。東経135度なら135、西経20度なら-20とする。
//
double	GetLocalSiderealTime(double dSiderealTime,double dLongitude)
{
	return	dSiderealTime + dLongitude / 15.0;
}


カテゴリー「VC++ TIPS」 のエントリー