惑星と小天体の軌道を求める方法を説明します。
観測時刻を定義する
ガウス引力定数を求める
1天文単位 AU = 149597870691[m] とする。
太陽中心重力定数 GM_Sun[m^3*s^-2] は、
万有引力定数G[m^3*kg^-1*s^-2]と太陽の質量M_Sun[kg]の積である。
したがって、GM_Sun = 1.32712440018e+20
ガウス引力定数 K0 は、太陽を回る天体の軌道長半径[au]の1.5乗と平均運動n[rad/day]の積となる。
したがって、K0 = sqrt(GM_Sun / (AU * AU * AU)) * 86400 = 0.01720209895
近日点引数を求める (惑星のみ)
時刻 T_eph[JED] における近日点引数 omega[rad] は、
近日点引数 omega[rad] = 近日点経度 varpi[rad] - 昇交点経度 Omega[rad]
2000年1月1日正午を起点としたユリウス世紀
T[century] = (T_eph - 2451545.0) / 36525
近日点経度 varpi[rad]
= 近日点経度 varpi0[rad] + 近日点経度 varpi_dot[rad/century] * T[century]
昇交点経度 Omega[rad]
= 昇交点経度 Omega0[rad] + 昇交点経度 Omega_dot[rad/century] * T[century]
軌道面座標を黄道面座標に変換するための行列を求める
軌道面座標を黄道面座標に変換するための行列 Matrix は、
Matrix = (M11 M12), (M21 M22), (M31 M32)
cos_I = cos(I)
sin_I = sin(I)
cos_Omega = cos(Omega)
sin_Omega = sin(Omega)
cos_omega = cos(omega)
sin_omega = sin(omega)
M11 = cos_omega * cos_Omega - sin_omega * sin_Omega * cos_I
M12 = -sin_omega * cos_Omega - cos_omega * sin_Omega * cos_I
M21 = cos_omega * sin_Omega + sin_omega * cos_Omega * cos_I
M22 = -sin_omega * sin_Omega + cos_omega * cos_Omega * cos_I
M31 = sin_omega * sin_I
M32 = cos_omega * sin_I
平均運動を求める
小天体の平均運動 n[rad/day] は、
楕円軌道のとき (離心率e < 1)
n = K0 / (a * sqrt(a))
楕円軌道のときは軌道短半径b[au]も求める
b = a * sqrt(1 - e * e)
双曲線軌道のとき (離心率e > 1)
n = K0 / (-a * sqrt(-a))
平均近点角を求める
時刻 T_eph[JED] における平均近点角 M[rad] は、
惑星のとき
2000年1月1日正午を起点としたユリウス世紀
T[century] = (T_eph - 2451545.0) / 36525
平均経度 L[rad] = 平均経度 L0[rad] + 平均経度 L_dot[rad/century] * T[century]
M[rad] = 平均経度 L[rad] - 近日点経度 varpi[rad]
小天体のとき
M[rad] = M0 + n * (T_eph - Epoch)
離心近点角を求める
平均近点角が M[rad] のとき、離心近点角 E[rad] は、ケプラーの運動方程式を解いて、
(1) E0 = M
(2) delta_E = (M - E0 + e * sin(E0)) / (1 - e * cos(E0))
(3) E = E0 + delta_E
(4) E0 = E
delta_E->0(delta_Eの絶対値が0.000001未満)になるまで(2)から(4)を繰り返す。
日心軌道面座標を求める
近日点方向をx_prime軸とする日心軌道面座標 r_prime[au,au,0] は、
x_prime = a * (cos(E) - e)
y_prime = b * sin(E)
r_prime = (x_prime y_prime 0)
日心黄道座標を求める
春分点方向をx軸とする黄道面上の日心黄道座標 r_ecl[au,au,au] は、
r_ecl = Matrix * r_prime
x = M11 * x_prime + M12 * y_prime
y = M21 * x_prime + M22 * y_prime
z = M31 * x_prime + M32 * y_prime
r_ecl = (x y z)
黄道傾斜角を求める
時刻 T_eph[JED] における黄道傾斜角 epsilon[rad] は、
2000年1月1日正午を起点としたユリウス世紀
T[century] = (T_eph - 2451545.0) / 36525
epsilon[deg] = (84381.406 - 46.836769 * T - 0.00059 * T^2 + 0.001813 * T^3) / 3600
epsilon[rad] = epsilon[deg] * PI / 180
ただし、歳差運動を考慮しないJ2000.0のときはT=0となるので、 84381.406 / 3600 [deg] とする。
赤道座標を求める
赤道座標を求める天体の日心黄道座標を r_ecl = (x y z)、
地球の日心黄道座標を r_ecl_earth = (x0 y0 z0) とすると、
その天体の赤道座標である赤経 RA[rad] と 赤緯 Dec[rad] は、
x1 = x - x0
y1 = (y - y0) * cos(epsilon) - (z - z0) * sin(epsilon)
z1 = (y - y0) * sin(epsilon) + (z - z0) * cos(epsilon)
RA = atan(y1 / x1)
Dec = atan(z1 / sqrt(x1^2 + y1^2))
x1 > 0 かつ y1 < 0 のとき
RA = RA + PI * 2
x1 < 0 のとき
RA = RA + PI
以上でJ2000.0の赤道座標を求めることができます。
歳差運動を考慮する場合は、この結果を補正する必要があります。