「JPL DE(200/405/406/421/422/430/431)天文暦ファイルをCで読む(第2版)」では「太陽、月、惑星の位置計算」のプログラムのC言語ソースを提供していましたが、世界時(UT)と力学時(TT)との変換(【注意】を参照)、惑星の光度、視差補正等の機能はありませんでした。このページではそれらの機能を追加したプログラムのC言語ソースを提供します。
なおプログラムに使用するJPLの各種DE天文暦ファイルは以下のFTPサイトで提供されているのでそこからダウンロードください。
JPL/NASAサイト: (ftp://ssd.jpl.nasa.gov/pub/eph/planets/Linux/)
太陽、月、惑星の位置計算 プログラム
DEファイルのデータは直交座標系なので、赤緯赤経等の位置情報を得るためには追加の計算が必要となります。以下のプログラムにて、太陽/月/惑星の視差補正を含めた位置計算が出来ます。
以下の環境で使用してください。
@"jpl_eph_3.0.zip"を解凍しCコンパイラでコンパイルした実行ファイル
AJPL/NASAのサイトのDExxx.xxxファイル
の2つのファイルを使って位置を計算します。計算例も添付します。
1)太陽・月・惑星位置計算ソース"jpl_eph_3.0.zip"
2)ソースに含まれる計算例の結果"example.txt"
なおCコンパイラはMS Visual Studio 2008を使用して開発しています。
Readmeファイルは添付していないのでソースを読んで使ってください。
main()関数はmain.cの最後に記述しています。
jpl_eph.cの309行目から339行目にあるDEファイルを置くデイレクトリ名を自分のPCの
環境に合わせて変更ください。
注1:DE431のファイルは2.7GByteあるので必要に応じて小型化ファイルで小型化してください。
注2:Nutationは、IAUの「SOFA library」の若干精度の低い[nut00b.c/sofa.h/sofam.h]をそのまま使用しています。これで「ASTRONOMICAL ALMANAC 2014」[力学時(TT)]で印刷表示されている範囲(赤緯で秒の単位の小数点第3位)まで合致します。もう少しNutationの精度を上げたい場合SOFA libraryの[nut00a.cとそれに付属するファイル]を使用してください。
注3:以前配布のソースとは互換が無いところもありますのでコンペア等で確認して使用下さい。
******************************************************************************
ここで紹介するプログラムは無保証です。このプログラムの使用によっていかなる
損害が生じても一切責任は負えません。しかしながら、バグ・改善要望につきまし
ては出 来るだけ対応したいと思いますのでお知らせください。
他のNETへの転載、再配布等は自由に行って下さい、特に制限しません。営利目的
(無料配付を含む)での利用も制限しません。しかし、配布等の時にはオリジナル
ソースをこの形式で添付下さい。また、著作権は放棄していません。
なお、「SOFA Library」のファイルの著作権はIAUにあります。
変更したファイルの再配布は原則認められていませんので注意してください。
******************************************************************************
|