問題タブ [orbital-mechanics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
329 参照

c++ - 一定時間後の 2D 空間での物体の位置を特定するにはどうすればよいですか?

C++ で 2D 空間シミュレーションを作成しようとしています。その中で、位置(x、y)で方向(d)に速度(v)で移動する質量(m)の惑星を作成できます。この惑星に引力を持っている 1 つのオブジェクト (すなわち星) もあります。このオブジェクトには質量 (M) と位置 (X,Y) があります。特定の時間 t 後に惑星の位置を返す関数を作成したいと思います。惑星は必ずしも軌道上にあるとは限りませんが、速度と距離が許せばそうなる可能性があります。ケプラーの方程式が関係していることは知っていますが、これの正確な数学的実装を自分で理解することはできません。どんな助けでも大歓迎です。

私の現在の更新機能は、星や質量をまったく考慮していません。

0 投票する
1 に答える
134 参照

c++ - 星の近くの惑星の位置を更新する関数の何が問題になっていますか?

最初は、惑星が恒星に向かって曲がるときにコードが機能しているように見えますが、その後恒星に引き込まれるか軌道を描く必要があるため、反対方向に押しのけられます。私は何を間違っていますか?距離の符号が変わると挙動が変わるようです。

xPos と yPos は惑星の現在位置です。t は最後の更新からの時間です。速度と方向は、惑星が始まる最初の速度と角度です。私たちは宇宙にいるので、この力は決して変わりません。重力は重力定数です。starX と starY は星の位置で、distance は星と惑星の間の距離です。angle は、星と惑星の間の角度です (これが望ましくない動作を引き起こしていると感じています)。

0 投票する
1 に答える
665 参照

python - Python Matplotlib: 動くアーティストを中心に図を配置する

以前にこの質問をしたことが非常に不十分だったので、もう少し詳しく説明しようと思います。

いくつかの惑星軌道プログラムを作成しましたが、(0,0) にとどまるのではなく、位置を変更するアーティストの周りにフィギュアを配置して、フィギュア ウィンドウを移動できるかどうかを知りたいです。

したがって、アーティストの中心が simData で次のように定義されている場合:

どこかに次のようなものがあるはずだと思います:

これらの変数を呼び出すことができないため、これはできません。さらに、軸と図形は、プログラムの開始時に一度だけ定義されます。

ここに私のコード、軌道運動中の4つの惑星があります:

0 投票する
0 に答える
2264 参照

matlab - 太陽を中心とした地球と月の MATLAB 軌道

ここに画像の説明を入力地球の周りの月の軌道をプロットしようとしていますが、地球は太陽の周りを回っています。オイラー・クローマー法を採用しています。このコードは、惑星のシミュレーションで機能します。そして、適切な初期条件が与えられれば、現在 3 つのボディで試しているような、より複雑な設定でも機能するはずです。コードは次のとおりです。

そして、スクリプトは次のとおりです。

しかし、月に協力してもらうことはできません。助言がありますか?

ありがとう!

0 投票する
1 に答える
48 参照

c# - カメラの軌道が負の z 方向に飛んでいるのはなぜですか?

このコードのほとんどを 1 年前のユニティ スレッドから取り出しました。実行するたびに、カメラが負の z 方向に非常に速く実行されます。私は一日中変数を突っついてきましたが、何もクリックしてくれません.

z は、フレームごとに 5 単位ずつ変化します。これは、カメラの距離に設定したものとまったく同じです。これが問題を理解する鍵のようです。私の問題の一部は、変換とオイラー角を使用して動き回るオブジェクトをかろうじてしか把握できないことです。お時間をいただきありがとうございます。

0 投票する
2 に答える
621 参照

c++ - 物理的な月地球太陽系

http://pastebin.com/ccck8LjE

こんにちは、月と地球の太陽系をシミュレートするためにこのコードを書きました。地球の円軌道を取得しますが、月は狂います。

オイラー/リープフロッグ法を使用しながら、これを試して実行するより良い方法はありますか?

0 投票する
2 に答える
1604 参照

python - 二体軌道モデリングの問題

背景をあまり読みたくない場合は、以下の更新 2 にスキップしてください。

単純な軌道シミュレーション (2 体) のモデルを実装しようとしています。

しかし、私が書いたコードを使用しようとすると、結果から生成されたプロットはかなり奇妙に見えます。

プログラムは、初期状態ベクトル (位置と速度) を使用してケプラー軌道要素を計算します。これは次の位置を計算するために使用され、次の 2 つの状態ベクトルとして返されます。

これは正常に機能しているようで、プロットを軌道面に保持している限り、それ自体で正しくプロットされます。しかし、軌道がどのように見えるか(obvs)のクールな3Dビューを見ることができるように、プロットを参照フレーム(親体)に回転させたいと思います。

現時点では、バグは軌道面の 2 つの状態ベクトルから参照フレームへの回転に変換する方法にあると思われます。このドキュメントのステップ 6 の方程式を使用して、次のコードを作成しています (ただし、個々の回転マトリックスを適用しています [ここからコピー])。

(文脈上、これは私が軌道モデルに使用している完全なクラスです。)

結果から X 座標と Y 座標をプロットすると、次のようになります。

ここに画像の説明を入力

しかし、回転行列を に変更するとR = Rz(-O) * Rx(-i)、より妥当なプロットが得られます (ただし、明らかに 1 つの回転が失われ、中心が少しずれています)。

ここに画像の説明を入力

そして、それをさらに に減らすとR = Rx(-i)、予想どおり、次のようになります。

ここに画像の説明を入力

私が言ったように、奇妙な振る舞いをしているのは軌道計算コードではなく、回転コードの何らかのエラーであると確信しています。しかし、一般的にnumpyと行列数学の両方にかなり慣れていないため、これをどこに絞り込めばよいかわかりません。


更新:確率論の答えに基づいて、行列を転置しました(R = Rz(-O).T * Rx(-i).T * Rz(-w).T)が、このプロットを得ました:

ここに画像の説明を入力

これは、画面座標への変換が何らかの形で間違っているのではないかと思いましたが、私には正しいように見えます(そして、回転が少ないより正確なプロットと同じコードです)つまり:


更新 2

確率論の助けを借りて、方程式の実装と回転をトリプルチェックしましたが、軌道を正しく取得することはできません。それらは基本的に上記のプロットと同じように見えます。

NASA Horizo​​n のシステムからのデータを使用して、ISS からの特定の状態ベクトル (2457380.183935185 = AD 2015-Dec-23 16:24:52.0000 (TDB)) を使用して軌道を設定し、同じ状態のケプラー軌道要素に対してそれらをチェックしました。これにより、次の結果が生成されます。

上の値は私の (計算された) 値で、下の値は NASA の値です。明らかに、浮動小数点の精度エラーが予想されますが、mean_anomalyとの変動はtrue_anomaly予想よりも大きく感じました。(私は現在float128、64ビットシステムで数値を使用してすべてのnumpy計算を実行しています).

さらに、結果として得られる軌道は、上記の (かなり) 風変わりな最初のプロットのように見えます (この LEO ISS 軌道がかなり円形であることはわかっていますが)。そのため、問題の原因が何であるかについて少し困惑しています。

0 投票する
2 に答える
2088 参照

java - Java 惑星軌道シミュレーション: 惑星のセンタリング

惑星が星を周回する簡単な惑星シミュレーションを作成しました。軌道のコードは次のとおりです。

これで問題なく動作しますが、私の問題は、軌道が星の中心を回る惑星の中心からではないことです。 これが起こることです

ご覧のとおり、小さな円の最初の赤い点は、2 番目の小さな赤い点の周りを周回する惑星の位置です。これは、円が (0,0) から描かれているため、両方の惑星 (0,0 ) は、星の (0,0) の周りを一周します。

星の原点ではなく、星の中心を一周する惑星の中心が必要です。

これに対する良い修正はありますか?

0 投票する
0 に答える
409 参照

python - C++、pyephem、および Heavens Above の sgp4 からの出力が一致しない

TLEファイルから位置を計算し、LEO衛星のパスを予測しようとしています。便宜上、国際宇宙ステーションに乗ります。

これまでに行ったことは、C++ 用の spg4 ライブラリ sgp4 ライブラリをダウンロードし、2 つのサンプル プログラムsattrakpasspredictを調べたことです。前者はECI座標系での地球衛星の位置を示し、後者は地球上の特定の場所からいつ見えるようになるかを予測します。

私がこれまでに行った唯一のことは、最近の TLE ファイルを入力し、オブザーバーの位置を変更してコンパイルしたことです。

この結果を、 Heavens Aboveで予測されたパスと比較すると、結果は大幅に異なります。たとえば、数秒から約 90 秒までのパスの予測。最高高度の縫い目はそれほど間違っていませんが、Heavens Above は 100 度で丸められているため、比較するのは困難です。衛星が見えるかどうかを判断するアルゴリズムが異なるだけであることを除外するために、sattrakのデータと比較して、計算された位置が実際に異なることを確認しました。

また、Python用のpyephemライブラリを使用して同じことを試しましたが、これはさまざまに便利なようです。次の 5 つのパスを計算するために、次のことを試しました。

ただし、差は常に 10 秒未満ですが、結果は Heavens Above (または C++ コード) とも一致しません。

正直なところ、私は pyephem で使用される libastro ルーチンについて何も知らないので、それらを 100% 信頼していません。私が間違っている場合は、私を修正してください。

期待した結果が得られないのはなぜですか? 私の意見では、変更されていないpasspredictプログラムを使用すると、それを台無しにする可能性はほとんどありません。

良い結果が得られる限り、C++ を使用するか Python を使用するかはあまり気にしません。その上、python-sgp4 は非常によく見えます。うまくいけば、python と C++ の間で簡単に交換できると確信しています。

最小限の例でさえ機能していないので、私は今非常に無力であるため、私を助けてくれる人がいることを本当に願っています. すでに同様の投稿があることは知っていますが、他の投稿の問題であった座標系を混乱させる機会を与えたとは思いません。

事前にどうもありがとうございました!