私は怠け者になるのをやめて、元の Verlet 法が可変ステップ サイズでどのように見えるかのある種の派生を示すことにしました。ダマーによるこの誤った適応は、私が思っていたよりも蔓延しているように見えるので、それは悲しいことです. また、上記の回答が指摘しているように、「推奨される正解」の後に追加されたものの、正しいバージョンがダマーのものと一緒にウィキペディアにあることにも気付きました。
Verlet 法を見ると、リープフロッグ、速度 Verlet、陰的 Euler などによく似ていることがわかります。これらは修正された中点の 2 次バージョンのように見え、それらのいくつかは同一である可能性があります。これらのそれぞれにおいて、ある程度、彼らは、加速度の積分 (速度への) と一定速度の積分 (位置への) が、半分ずつ重なるように、それぞれずらしてあるという飛躍的なアイデアを持っています。これにより、時間の可逆性や安定性など、シミュレーションの「リアリズム」にとって精度よりも重要な要素がもたらされます。そして、「リアリズム」、信憑性は、ビデオ ゲームにとってより重要です。正確な質量が実際に引き起こした位置とはわずかに異なる位置に何かが動いても、見た目と感触があれば気にしません。現実的。私たちは、高性能の衛星望遠鏡をどこに向けて遠くの物体や将来の天体の出来事を見るかを計算していません. ここでは、数学的精度よりも安定性と効率性が優先されます。ということで、リープフロッグ方式が妥当かと思われます。リープフロッグを可変時間ステップに適応させると、この利点の一部が失われ、ゲームの物理に対する魅力の一部が失われます。Stormer-Verlet はリープフロッグに似ていますが、個別に維持された速度ではなく、前のステップの平均速度を使用します。このStormer-Verletをリープフロッグと同じ方法で適応させることができます。前方の速度を一定の加速度と統合するには、前のステップの長さの半分と次のステップの長さの半分を使用します。真のリープフロッグのようにステップが固定されていれば、それらは同じ長さになるため、2 つの半分の長さの合計は 1 になります。前のステップと同様に、ステップ サイズには h、加速度/速度/位置には a/v/p、「最後」には hl/pl を使用します。これらは実際には方程式ではなく、代入演算に似ています。
元のリープフロッグ:
v = v + a*h
p = p + v*h
可変時間ステップの場合:
v = v + a*hl/2 + a*h/2
p = p + v*h
要因a/2
:
v = v + a*(hl + h)/2
p = p + v*h
前の位置(p - pl)/hl
を初期速度に使用する:
v = (p - pl)/hl + a*(hl + h)/2
p = p + v*h
代わりに、必要ありませんv
:
p = p + ( (p - pl)/hl + a*(hl + h)/2)*h
配布h
:
p = p + (p - pl)*h/hl + a*h*(h + hl)/2
結果は、元のストーマー形式の Verlet ほど単純でも高速でもありません2p - pl + a*h^2
。これが意味をなすことを願っています。実際のコードでは最後のステップを省略します。2h
回乗算する必要はありません。