先日、シリウスBチャレンジでシリウスの位置が計算と合わないという話を書きましたが、
その時に作ったスクリプトを改良して github で公開しました。
シリウスの位置が合わない件は、ほぼほぼ解決しました。まだちょっとズレてるんですが…
これに測定結果を重ねたのがこちら。
入力ファイルについては Astro Image Measurement Tool のサンプル を見てください。
オレンジ色で描かれた「Sirius A」のマーカーの位置は astroquery というパッケージを利用して SIMBAD から赤経、赤緯、固有運動、年周視差、視線速度のデータを取得して、astropy の SkyCoord オブジェクトを、この赤経と赤緯を J2000.0 時点の位置として生成し、apply_space_motion() メソッドで観測時点での位置を計算して得たものです。観測値とは3.2秒角ほどズレていますが、astrometry.net や Stellarium で表示されるものよりはずっと近い位置になりました。
結局、星表に書かれている元期(epoch)が J2000.0 の赤経/赤緯というのは、大雑把に言うと、ある日時に観測された赤経/赤緯から既知の固有運動の分だけ位置を巻き戻して(または進めて)、J2000.0 (2000-01-01 11:58:55.816 UT)時点の位置を計算で求めたもの、ということでいいんですかね?
大抵の星は固有運動が小さくて星表に書かれた赤経/赤緯の値からほとんど動かないので astrometry.net とかがそのままの値を元にアノテーションを描画しても問題ないけれど、シリウスのように近くにあって固有運動の大きな星の場合は結構ズレてしまうと。
僕は天文学の正式な教育を受けていない素人なので計算結果は保証できませんが、まあ、なんかそれっぽい計算はできた、ということで。
そういえば、僕が中学の頃にプログラミングを始めたのは元々天文計算がやりたかったんですよね。三角関数とか頑張って勉強したんですが、結局ほかのことにうつつを抜かして、天文の趣味からも遠ざかってしまって、気がつくと天文計算とは何の関わりもないところでプログラミングで飯を食う大人になっていたのですが、ここにきてようやく初心に戻った、と思ったけど、肝心の計算そのものは astropy 任せなので、よく考えるとあまり関係なかったかも…