マイコン宇宙講座-月の高度・方位角計算

天体の位置は、赤経・赤緯で表す赤道座標系と高度・方位角で表す地平座標系の2つになります。観測では望遠鏡は赤道儀架台にマウントされていますので、赤道座標系が用いられますが、一般的には地平座標系のほうがわかりやすいものとなります。たとえば、北の方角から時計回りで180°、地平線から高度が45°と表現したほうが、目的の天体を見つけやすいからです。

とはいえ、月くらいに大きな天体になると、地平上に出ていればすぐに見つけられますので、あまり座標系にこだわらなくてもよいのですが、肉眼や双眼鏡で見える比較的明るい天体は、やはり高度・方位角を知っておくと、あそこに見えている天体は?という疑問について簡単に知ることができます。

赤道座標系から地平座標系の変換は、「天体の位置計算 増補版」に計算式が掲載されていますので、関数電卓があれば簡単に求めることができます。プログラムは、「マイコン宇宙講座」第3章の太陽系天体の高度・方位角計算で呼び出したサブルーチン altitude_directionを利用して、月の視位置から求めています。このサブルーチンは月や太陽系天体以外の恒星の高度・方位角計算でも使用することができます。

メインルーチン m56.py

プログラムへの入力は日付と時刻および計算間隔(分単位)で行います。

# m56.py
# マイコン宇宙講座
# 月の高度・方位計算プログラム
import math
import lib

M2PI = 2.0 * math.pi

lg = 139.745 / lib.K[3]
la = 35.654 / lib.K[3]
obs = 'Tokyo'

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)

iv = input('INTERVAL(UNIT OF MINUTE) ? ')
iv = float(iv)

ii = 0
yz = 0
mt = 0

print()
print('%-s (経度:%5.3f 緯度:%3.3f)' % (obs, lg * lib.K[3], la * lib.K[3]))
print('  Date (JST)                R.A.      Decl.         方位        高度      距離')
print('--------------------------------------------------------------------------------')
print('     年  月  日  時  分      h  m       。 ,           。         。         Km')

while ii < 32:
    t0 = (jd - 15019.5) / 36525.0

    a, b, c, d, e, g, j, l, m, n, v, w = lib.argument(t0)
    mx, my, mz = lib.moon(t0, a, b, d, e, n, g, w)

    r0 = c
    r1 = mx
    r2 = my
    r3 = mz

    ra, dc, dl = lib.positions(r0, r1, r2, r3)

    dl1 = dl
    if ra < 0:
        ra = ra + M2PI
    r1 = la

    r2 = lib.geocentric_distance(r1)

    r0 = r2 / 6378.16
    r1 = la
    r2 = 0

    r3 = lib.geocentric_latitude(r1, r2)

    fi = r3
    r1 = jd
    r2 = lg

    r3 = lib.siderealtime_date(r1, r2)

    s1 = r3
    x0 = r0 * math.cos(fi) * math.cos(s1)
    y0 = r0 * math.cos(fi) * math.sin(s1)
    z0 = r0 * math.sin(fi)

    xx = dl * math.cos(dc) * math.cos(ra)
    yy = dl * math.cos(dc) * math.sin(ra)
    zz = dl * math.sin(dc)

    x = xx - x0
    y = yy - y0
    z = zz - z0

    dl2 = math.sqrt(x * x + y * y + z * z)
    ss = y
    cc = x

    tt = lib.quadrant(ss, cc)

    ra = tt
    dc = math.atan(z / (y / math.sin(ra)))

    al, hi = lib.altitude_direction(jd, lg, la, ra, dc)

    # MJD to YY-MM-DD
    jd = jd + 0.375

    yy, mm, dd = lib.jdate(jd, lib.T)

    jd = jd - 0.375
    hh = 24.0 * (dd - int(dd))
    dd = int(dd)
    ms = 60.0 * (hh - int(hh))
    hh = int(hh)
    ms = int(ms + 0.1)

    if ms == 60:
        hh = hh + 1
        ms = 0

    while True:
        if hi < -0.17:
            break
        # Print Position
        if ra < 0:
            ra = ra + M2PI
        if ra > M2PI:
            ra = ra - M2PI

        ra = ra * lib.K[3] / 15.0
        dc = dc * lib.K[3]
        dl2 = 6378.16 * dl2

        rh = int(ra)
        rm = 60.0 * (ra - rh)
        sg = lib.sgn(dc)
        dc = abs(dc)
        dh = int(dc)
        dm = 60.0 * (dc - dh)

        s1 = '+'
        if sg < 0:
            s1 = '-'

        hi = hi * lib.K[3]
        al = al * lib.K[3]

        if yy != yz:
            sfmt = ' %4d  %2d  %2d  %2d  %2d      %2d %5.2f  %1s%2d %4.1f       %5.1f       %4.1f     %6d' % (yy, mm, dd, hh, ms, rh, rm, s1, dh, dm, al, hi, dl2)
        else:
            if mm != mt:
                sfmt = '       %2d  %2d  %2d  %2d      %2d %5.2f  %1s%2d %4.1f       %5.1f       %4.1f     %6d' % (mm, dd, hh, ms, rh, rm, s1, dh, dm, al, hi, dl2)
            else:
                sfmt = '           %2d  %2d  %2d      %2d %5.2f  %1s%2d %4.1f       %5.1f       %4.1f     %6d' % (dd, hh, ms, rh, rm, s1, dh, dm, al, hi, dl2)
        print(sfmt)
        yz = yy
        mt = mm
        break

    ii = ii + 1
    if ii < 32:
        jd = jd + iv / 1440

print('--------------------------------------------------------------------------------')
print()

例題 1981年9月13日16時から30分間隔で月の高度および方位角を求めてみよう。

DATE AND TIME(JST) ? 19810913,160000
INTERVAL(UNIT OF MINUTE) ? 30

Tokyo (経度:139.745 緯度:35.654)
  Date (JST)                R.A.      Decl.         方位        高度      距離
--------------------------------------------------------------------------------
     年  月  日  時  分      h  m       。 ,           。         。         Km
 1981   9  13  17   0      22 54.37  -11 22.4       278.4       -7.9     375201
           13  17  30      22 55.47  -11 18.1       282.4       -2.1     374462
           13  18   0      22 56.53  -11 13.7       286.6        3.7     373732
           13  18  30      22 57.53  -11  9.3       291.0        9.3     373019
           13  19   0      22 58.49  -11  4.8       295.7       14.8     372335
           13  19  30      22 59.39  -11  0.2       300.8       20.1     371688
           13  20   0      23  0.26  -10 55.5       306.4       25.1     371088
           13  20  30      23  1.08  -10 50.6       312.5       29.7     370543
           13  21   0      23  1.87  -10 45.7       319.4       33.9     370060
           13  21  30      23  2.63  -10 40.5       327.1       37.6     369646
           13  22   0      23  3.37  -10 35.2       335.6       40.5     369307
           13  22  30      23  4.09  -10 29.8       344.8       42.6     369046
           13  23   0      23  4.80  -10 24.2       354.6       43.8     368866
           13  23  30      23  5.50  -10 18.4         4.6       43.9     368769
           13  24   0      23  6.21  -10 12.5        14.5       43.0     368754
           14   0  30      23  6.93  -10  6.4        23.9       41.2     368821
           14   1   0      23  7.67  -10  0.2        32.6       38.4     368968
           14   1  30      23  8.42  - 9 53.9        40.5       35.0     369189
           14   2   0      23  9.21  - 9 47.4        47.6       30.9     369480
           14   2  30      23 10.03  - 9 40.9        54.0       26.4     369835
           14   3   0      23 10.89  - 9 34.2        59.8       21.5     370247
           14   3  30      23 11.79  - 9 27.5        65.1       16.3     370707
           14   4   0      23 12.74  - 9 20.7        70.0       10.9     371206
           14   4  30      23 13.74  - 9 13.9        74.6        5.4     371736
           14   5   0      23 14.79  - 9  7.1        79.0       -0.3     372285
           14   5  30      23 15.89  - 9  0.2        83.2       -6.1     372844
--------------------------------------------------------------------------------