2020年2月13日木曜日

小ネタ

 試しに、2次元空間で軌道を表示して遊んでる。



 中央の青丸が地球、高度400kmの円軌道から開始して、2回の軌道変更で半径9000kmの軌道に遷移する、といった図。

 最初の高度と目的の高度を使って2回のdVを計算して、必要な増速量に従って吹けば、ちゃんと目的の軌道に乗れるのが楽しい。昔、iOSのゲームで2次元平面でロケットを飛ばすゲームを遊んでたことがあったけど、あれは噴射方向や噴射量を手動で調整するので、なかなか狙った噴射が行えなかった。

 今のところは2回だけインパルス噴射を行うだけのコマンドしかないけど、もう少し細かく調整できるようにしたい。あとは、インパルス噴射だけでなく、連続的な噴射も再現して、電気推進でのスパイラル遷移とかもやってみたい。
 あるいは、3次元空間で計算すれば、軌道面の変更とかも遊べるようになる。表示の問題とかいろいろ大変そうだけど。
 もしくは、連続噴射ができるなら、高度ゼロ、速度ゼロ(実際には0.46km/sくらい)からの連続噴射を行えば、ロケットの再現もできる。

 しばらくは、こいつで遊ぶ予定。
 まぁ、軌道変更のパラメータを変えて遊びたいだけなら、Steamとかで探せばいろいろ出てくるんだろうけどね。。。

***
追記

 近地点からの位相を指定して吹けるようにした。



 最初に0.1revで100m/s、その後は近地点からのオフセットで吹いてる。遠地点で吹きたい場合は、近地点からpiずらした場所で吹いている。
 噴射効率で言えば遠地点を基準にするべきかもしれないが、Argument Of Perigeeを基準にしてるので、プログラム的にはこっちのほうが自然な感じがする。
 ある程度の誤差はあるけど、おおよそ狙い通りの位相で吹けてるので、問題ないんじゃなかろうか。
 今は増速量は予め配列に決め打ちだが、目標高度とかを指定できるようにしたい。まぁ、それくらいならなんとかなるはず。そのうち実装する。

 2次元平面とはいえ、カルテシアン軌道要素そのものなので、それに準じた計算が必要になる。TLEのグラフ化でも、ランデブ飛行を扱おうとするとケプラリアンでは扱いづらいので、いずれはカルテシアンも扱わなきゃな、と思ってただけど、思わぬところで片鱗に触れてしまった。
 日本語圏だとカルテシアンはあまり情報が出てこない。というか、英語圏でもさほど扱われてない。今回は惑星の計算のページのJavaScriptコードを参考に2次元空間に簡略化して実装している。

0 件のコメント:

コメントを投稿