天体の位置計算 – 角度の換算

「天球座標-赤道座標系」16頁

恒星の位置は赤経と赤緯で表せるが、計算においてはそのままで使用することはなく、角度に換算して計算に使用します。三角関数を使用するなら、さらにラジアンに換算する必要があります。計算はラジアンで行い、結果を表示するときに角度に戻し、そこから時分秒や度分秒に計算します。天文計算において最も基本的なことです。

プログラミング言語では角度とラジアンの相互換算を持つものもありますが、大抵は時分秒もしくは度分秒を角度に換算するためのコードを書く必要があります。

Fortranによるコード

▶メインルーチン pcc_degrad.f90

恒星データは、検証用データとして61Cyg、問題用のデータとして、15頁の表2-1からα CMa Siriusを選択してあります。今後は、この恒星データを使用していきます。サブルーチンについては、「天体の位置計算 – 共通サブルーチン」を参照してください。

メインルーチンの先頭にuse pcclibを記述してあります。これを記述していないと、関数(サブルーチン)を使用することができません。

program pcc_degrad
    use pcclib

    implicit none

    ! 恒星データ
    character(16), parameter :: SNM = 'α CMa  Sirius  '              ! 恒星名
    double precision, parameter :: SRA(1:3) = (/6d0, 42d0, 56.714d0/)   ! 赤経
    double precision, parameter :: SDC(1:3) = (/-16d0, 38d0, 46.36d0/)  ! 赤緯

    !検証用恒星データ
    ! character(16), parameter :: SNM = '61 Cyg          ';           ! 恒星名
    ! double precision, parameter :: SRA(1:3) = (/21d0, 4d0, 39.935d0/) ! 赤経
    ! double precision, parameter :: SDC(1:3) = (/38d0, 29d0, 59.10d0/) ! 赤緯

    character(255) :: sfmt
    double precision :: ra_deg, dc_deg,ra_rad, dc_rad
    
    ! 時分秒もしくは度分秒を角度に
    ! 角度を時分秒もしくは度分秒に換算
    ra_deg = hms2deg(SRA(1), SRA(2), SRA(3))
    dc_deg = dms2deg(SDC(1), SDC(2), SDC(3))

    ! 角度をラジアンに換算
    ra_rad = deg2rad(ra_deg)
    dc_rad = deg2rad(dc_deg)

    ! 出力
    write(*, *)
        sfmt = trim('(a16, "     ", f10.6, "    ", f10.6, "     ", f11.8, "    ", f11.8)')
        write(*, *) '                             角 度                         ラジアン'
        write(*, *) '星名                   α             δ               α            δ'
        write(*, *) '---------------------------------------------------------------------------'
        write(*, *) '                      。            。     '

    write(*, sfmt) SNM, ra_deg, dc_deg, ra_rad, dc_rad
    write(*, *)

    stop
end program pcc_degrad

コンパイル

gfortran pcc_lib.f90 pcc_degrad.f90

実行

./a.out

実行結果
「天体の位置計算 増補版」245頁にある問題の解答と較べてみてください。

                              角 度                         ラジアン
 星名                   α             δ               α            δ
 ---------------------------------------------------------------------------
                        。            。     
α CMa  Sirius       100.736308    -16.646211      1.75818026    -0.29053119