はじめに
先日、以下の記事ではやぶさ2の軌道アニメーションを描いた。
- Gnuplotで、はやぶさ2の軌道アニメーションを作ってみた
https://qiita.com/mkunu/items/7f82fef8e06b6274a5a7
他にも様々な天体の軌道を自分で描いてみた。その際利用したデータの出典と使用例を以下にメモしておく。特に、三次元のデータを描く際、デザインに凝り始めると位置だけでなく、形状や表面など様々なデータが必要となる。
目次
- 天体の位置のデータ
- ダウンロード方法
- データの整形
- Gnuplotでプロットした例
- 天体の形状のデータ
- ダウンロード方法
- 天体の表面のデータ
- ダウンロード方法
- 位置、形状、表面のデータを使ってみる
- three.jsでプロットした例
1. 天体の位置のデータ
既存の天体の位置情報を使いたい時とかに必要。
1.1 ダウンロード方法
以下のNASA JPLのサイトからダウンロードする。
- HORIZONS Web-Interface
https://ssd.jpl.nasa.gov/horizons.cgi
余談だが、Wikipediaで調べたところ、こういったデータを**ephemeris(天体暦)**というらしい。
天体暦(てんたいれき、ephemeris)とは、天体(太陽・月・衛星・惑星・恒星及び人工天体)の運行位置・軌道及び天象(日食、月食、天体の出没など)を推算した予報を書き下した情報である。天文暦、暦(れき)、軌道暦、天文年鑑(astronomical almanac)とも言う。
by Wikipedia 天体暦
下へスクロールすると設定画面があるので、例えば以下のように設定する。(完成例ではTime SpanのStepを1ヶ月ごとにした。そのため以下とは少し異なっているが、それ以外はほぼ同じ設定である。)
各行 | 設定の意図 |
---|---|
Ephemeris Type | X,Y,Zの3成分にした方が扱い易いと感じたので、デカルト座標系にした。 |
Target Body | データが欲しい天体を選んだ。 |
Coordinate Origin | 中心は太陽。 |
Time Span | 1年ごと、1977年から現在2019年まで。 |
Table Settings | quantities code=1 はX,Y,Zの3成分のみを出力、CSV format=YES は,(カンマ)区切りの形で出力をそれぞれ表す。その他は気分です。 |
Display/Output | Generate Ephemeris ボタンクリックで即txtファイルをダウンロードできるようにした。 |
1.2 データの整形
各行末に,(カンマ)が入っているので例えばこのままgnuplotでプロットしようとすると、All points x value undefinedと言われる。
行末の,を削除するのにsedコマンドを使えば良いらしい。しかし、調べたところどうやらMacだとsedの使い方が特殊らしい。色々調べて出てきたやり方を試してみても、sedコマンドがうまく機能しなかった…
そのため、結局Macにデフォルトで入っているNumbers(Excelみたいなもの)で各ファイルを1つ1つ開いて最終列を削除するという作業を行った。
1.3 gnuplotでプロットした例
例えばgnuplotで以下のようなものが描ける。はやぶさ2のデータで描いた以前の記事と同じ要領でプロットする。
GitHubにおいたフォルダ(名称は「NASA」)をダウンロードする。ターミナルを開き、このディレクトリへ移動し、以下のようにコマンドを打つ。
$ gnuplot
gnuplot> load "probe.plt"
下に載せたGIF画像 **"probe.gif"**が同じディレクトリに出力される。
2. 天体の形状のデータ
探査機の3Dデータが欲しい時とかに必要。
2.1 ダウンロード方法
以下のNASAのサイトからダウンロードする。
- Models | 3D Resources
https://nasa3d.arc.nasa.gov/models
3. 天体の表面のデータ
球体の表面に惑星の画像をマッピングしたい時とかに必要。
3.1 ダウンロード方法
NASAではないが、three.jsで球体に惑星の画像を貼り付ける場合とかには以下の方が上手くいく(経験談)。
- Planet Earth Texture Maps
http://planetpixelemporium.com/earth.html
または、以下のNASAのサイトからダウンロードする。
- Images | 3D Resources
https://nasa3d.arc.nasa.gov/images
4. 位置、形状、表面のデータを使ってみる
実際にこれらのデータでどんなものが作れるのかを、以下に挙げていく。
4.1 three.jsでプロットした例
例えばthree.jsで以下のようなものが描ける。