1

そのため、個々の速度が宇宙を飛び回り、互いに周回する、さまざまな惑星の簡単なシミュレーションを作成しています。

私は、各惑星が独自の「重力ベクトル場」を投影していると考えることによって、それらが互いに引き合うことをシミュレートすることを計画しています。タイム ステップごとに、計算で影響を受けるものを除いて、各惑星の個々のベクトル場方程式 (V = -xj + (-yj) またはそのような表記) から出力されるベクトルを追加し、影響を受ける惑星の位置を使用します。式への入力として。

ただし、これは不正確であり、引力が連続的かつ一定であるとは見なされません。それぞれが継続的に他の惑星に影響を与えている場合、自分の惑星の動きを計算しますか?

ありがとう!

4

2 に答える 2

2

ブレンダーがニュートンの方程式の使用について書いていることに加えて、「加速場」をどのように統合するかを考慮する必要があります (彼の回答へのコメントでそれを呼び出します)。

最も簡単な方法は、オイラー法を使用することです。それに関する問題は、急速に発散することですが、コーディングが簡単で、適度に高速であるという利点があります。

より良い精度を求めており、いくらかのパフォーマンスを犠牲にしても構わないと思っている場合は、通常、ルンゲクッタ法の 1 つ(おそらく RK4) が適しています。「加速フィールド」が動的である場合 (つまり、時間の経過とともに変化する...おそらく惑星が軌道を移動する結果として)、RK4 は課題になることに注意してください。

更新(以下のコメント/質問に基づく):

特定のオブジェクトiに適用されるあるタイム ステップ t nでの力ベクトルF i (t n )を計算する場合は、Blender が参照する方程式を使用して、シミュレーション内の他のすべてのオブジェクトによって寄与される力を計算する必要があります。つまり、各オブジェクトiについて、他のすべてのオブジェクトがどのように引っ張る (力を適用する) かを把握し、これらのベクトルを合計すると、iに適用される総力ベクトルになります。アルゴリズム的には、これは次のようになります。

各オブジェクトについてi 
    F i (t n ) = 0
    各オブジェクトji 
        F i (t n ) = F i (t n ) + G * m i * m j / | p i (t n ) - p j (t n )| 2

ここで、p i (t n ) とp j (t n ) は、それぞれ時刻 t nにおけるオブジェクトijの位置であり、| | | は、標準のユークリッド ( l 2 ) 法線です。つまり、2 つのオブジェクト間のユークリッド距離です。また、G は重力定数です。

オイラー法は、シミュレーションを離散時間スライスに分割します。現在の状態を見て、あなたの例の場合、シミュレーション内のすべてのオブジェクトに集約して適用されたすべての力を考慮し、それらの力をタイムスライスの期間にわたって定数として適用します。使用時

a i (t n ) = F i (t n )/m i

( a i (t n ) = 時刻 t nでオブジェクトiに適用される加速度ベクトル、F i (t n ) は時刻 t nでオブジェクトiに適用される力ベクトル、 m iはオブジェクトiの質量)、力ベクトル (したがって加速度ベクトル) は、タイム スライスの間、一定に保たれます。あなたの場合、実際に加速度を計算する別の方法がある場合は、力を計算する必要はなく、代わりに加速度を直接計算できます。いずれにしても、加速度を一定にすると、時刻 t n+1での位置は、オブジェクトのp (t n+1 ) と時間 t n+1での速度v (t n+1 ) は、次の式で与えられます。

p i (t n+1 ) = 0.5* a i (t n )*(t n+1 -t n ) 2 + v i (t n )*(t n+1 -t n )+ p i (t n )
 v i (t n+1 ) = a i (t n+1 )*(t n+1 -t n ) + v i (t n )

RK4 メソッドは、システムのドライバーを 2 次多項式に適合させ、その動作をより適切に近似します。詳細は、上記で参照したウィキペディアのサイトにあり、Web 上には他にも多くのリソースがあります。基本的な考え方は、特定のタイムスライスに対して 1 つの力の値を選択する代わりに、特定の時間に 4 つの力ベクトルを計算し、力ベクトルを 2 次多項式に適合させるというものです。タイム スライス間で力場ベクトルが変化しない場合は問題ありません。重力を使用してベクトル フィールドを導出し、重力源であるオブジェクトが移動する場合、力ベクトルを計算するために、4 つのサブ間隔のそれぞれで位置を計算する必要があります。それはできる、ただし、パフォーマンスはオイラー法を使用するよりもかなり悪くなります。プラス面としては、オブジェクト間の相対的な動きがより正確になります。したがって、計算コストが高いという意味での課題であり、反復のタイム スライス中に 4 つのサンプルのすべてのオブジェクトがどこにあると想定されているかを把握するのは少し面倒です。

于 2011-10-27T05:25:06.093 に答える
1

コンピュータを扱う場合、「連続」というものは存在しないため、非常に短い時間間隔で連続性を概算する必要があります。

そうは言っても、なぜベクトル フィールドを使用しているのですか? ニュートンの何が問題なのですか?

ここに画像の説明を入力

ここに画像の説明を入力

そして、物体にかかる力の合計は上の式です。2つを等しくして、a

したがって、すべてのオブジェクトを 1 つずつループして、その加速度を見つける必要があります。

于 2011-10-23T03:07:13.970 に答える