python,matplotlibではやぶさ2の軌道図を作る
2014年12月3日に打ち上げられた「はやぶさ2」の地球スイングバイまで、1ヶ月切りました。
ということで、その軌道の様子をpython、matplotlibで作ってみました。
ちょっとした事情から、python,matplotilbで太陽系内惑星の図を作る部分は、作っておりました!?
なので、それに はやぶさ2特設サイト | ファン!ファン!JAXA! 内、「小惑星遷移軌道計画情報」という項目から頂ける軌道データを入れ込みます。
プレーンなテキストなので、行ごとに該当箇所をひたすら変数に格納していきます。
以下は、格納・描画部分を抜き出したもの。
class HAYA2: def __init__(self): self.lst = [] h2txt = open("./haya2_orbit_jaxa.txt","r") h2list = [x.strip() for x in h2txt.readlines()][51:] for line in h2list: _d = {} # _d['date'] = line[0:10].replace("/", "") # target date _date = datetime.datetime.strptime(line[0:19], "%Y/%m/%d.%H:%M:%S") _d['date'] = datetime.date(_date.year, _date.month, _date.day) # date type _d['lp'] = int(line[22:26]) # L+ [days] _d['x'] = float(line[29:38]) # X pos. [au] _d['y'] = float(line[39:48]) # Y pos. [au] _d['z'] = float(line[49:58]) # Z pos. [au] _d['ex'] = float(line[59:68]) _d['ey'] = float(line[69:78]) _d['ez'] = float(line[79:88]) _d['rs'] = float(line[122:129]) # distance of Sun-Haya2 [10**4 km] _d['re'] = float(line[133:140]) # distance of Earth-Haya2 [10**4 km] _d['ra'] = float(line[144:151]) # distance of 1999JU3-Haya2 [10**4 km] _d['vs'] = float(line[154:159]) # velocity of Haya2 on Sun [km/sec] _d['ve'] = float(line[162:167]) # velocity of Haya2 on Earth [km/sec] _d['alpha'] = float(line[169:176]) # ra [deg] _d['delta'] = float(line[179:185]) # dec [deg] _d['Dflt'] = float(line[186:194]) # distance of fling [10**4 km] _d['px'], _d['py'], _d['pz'] = convertCood(_d['x'], _d['y'], _d['z']) self.lst.append(_d) def plotHaya2(day): haya2 = HAYA2() for h in haya2.lst[0:365]: plt.plot(h['px'], h['py'], "k.", ms=1) for h in haya2.lst[0:365:30]: plt.plot(h['px'], h['py'], "c.") plt.text(h['px'], h['py'], "${date:%m/%d}^{{\mathrm{{'}}{date:%y}}}$".format(**h), ha='center', va='bottom', fontsize=6, color='blue')
ちなみに、def plotHaya2(day)
のインデントはおかしいわけではありません。
アドホックに作ったら、中途半端なオブジェクト指向になったコードです。
また、この軌道データファイルには、はやぶさ2の目標天体である「Ryugu(1999JU3)」のデータもありますので、
はやぶさ2と同じように軌道を描けます。
以下、このスクリプトから生成した画像です。
緑丸が地球、水色丸がはやぶさ2、水色六角形がRyugu、という感じです。
2014年12月3日時点で、地球近傍にいるので、見た目にはよさそうプロットですね。
2015年12月3日付近の地球とはやぶさ2の拡大図です。
こちらもまぁまぁよさそう。
このスクリプトのTODOは
です。
追記(2015/11/24)
下リンクの記事のようにリファクタリングしました
python,matplotlibではやぶさ2の軌道図を作る - uitspitss blog