天体の位置計算 – 角度の換算
「天球座標-赤道座標系」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