マイコン宇宙講座-南中している天体の赤経計算

地方恒星時を計算します。恒星時とは春分点が南中してから再び南中するまでの時間を1恒星日といい、これを24時間で割って1時間、さらに60分で割って1分というように表したものです。恒星時には歳差運動だけを考慮した平均恒星時と歳差と章動を考慮した視恒星時があります。実際は、南中する時刻は地方によって異なるために、これらの恒星時に地方の経度を加えて算出したものが地方恒星時となります。

地方恒星時計算するサブルーチンを作成します。サブルーチンは2つ作成します。1950年分点に準拠した恒星時と平均恒星時です。

サブルーチン siderealtime

※サブルーチンはlib.pyに記述してください。

# KOUSEI-JI
# 1950.0分点に準拠した地方恒星時
def siderealtime_1950(r1, r2):
    r3 = 0.6705199 + 1.002737803 * (r1 - 40000.0) + r2 / (2.0 * math.pi)
    r3 = r3 - int(r3)
    r3 = 2.0 * math.pi * r3

    return r3


# KOUSEI-JI
# 平均春分点に準拠した地方恒星時
def siderealtime_date(r1, r2):
    r3 = 0.671262 + 1.002737909 * (r1 - 40000.0) + r2 / (2.0 * math.pi)
    r3 = r3 - int(r3)
    r3 = 2.0 * math.pi * r3

    return r3

メインルーチン m25.py

# m25.py
# マイコン宇宙講座
# 2-5 南中している天体の赤経計算プログラム
import lib


lg = 139.745 / lib.K[3]
obs = '東京'

print()
std = input('DATE AND TIME(JST) ? ')
dy, dt = std.split(',')
dy = float(dy)
dt = float(dt)

jd, yy, mm, dd, hh, ms, ss = lib.mjd(dy, dt)

r1 = jd
r2 = lg

s1 = lib.siderealtime_date(r1, r2)

s1 *= lib.K[3] / 15.0
rh = int(s1)
rs = 60.0 * (s1 - rh)
rm = int(rs)
rs = 60.0 * (rs - rm)

print()
print('%4d 年 %2d 月 %2d 日 %2d 時 %2d 分 %3.1f 秒(JST)' % (yy, mm, dd, hh, ms, ss))
print(obs + 'の恒星時')
print()
print('     %2dh %2dm %2ds(DATE)' % (rh, rm, rs))
print()

s1 = lib.siderealtime_1950(r1, r2)

s1 *= lib.K[3] / 15.0
rh = int(s1)
rs = 60.0 * (s1 - rh)
rm = int(rs)
rs = 60.0 * (rs - rm)

print('     %2dh %2dm %2ds(1950)' % (rh, rm, rs))
print()

例題 1981年1月1日0時00分00秒(JST) 東京における恒星時(南中している天体の赤経)を求めてみよう。

DATE AND TIME(JST) ? 19810101,000000

1981 年  1 月  1 日  0 時  0 分 0.0 秒(JST)
東京の恒星時

      6h 59m 44s(DATE)
      6h 57m 58s(1950)