2

ほぼすべてのゲームで、いくつかのゲーム ループが使用される傾向があります。Gafferongames には、適切に設計されたゲーム ループの作成方法に関するすばらしい記事があります: http://gafferongames.com/game-physics/fix-your-timestep/

彼のコードでは、オブジェクトの位置、速度、加速度が含まれintegrate( state, t, deltaTime );ていると思われるを使用しています。彼は RK4 を使用して からにstate統合します。tt+deltaTime

私の質問は、正確な値を見つけるために運動方程式 (ここ) を使用できるのに、なぜ RK4 のような数値積分手法を使用するのですか?

これらの方程式は、加速度が一定の場合に機能します。タイムステップ内で加速度が変化することはめったにないようです。RK4 は、パフォーマンスが低く、精度が低く、より複雑なソリューションのようです。

編集: オブジェクトに「ジャーク」値を追加しても、本当に必要な場合は、加速度、速度、および変位の正確な式を見つけることができると思います。

編集 2: まあ、私は彼の「統合の基本」の記事をあまり注意深く読んでいませんでした。彼はダンパーとスプリングをモデル化していると思いますが、タイムステップ内で一定でない加速を引き起こします。

4

2 に答える 2

6

(速度に依存する)抗力、位置に依存する力など、多くのゲームデザイナーが必要とするものを追加するとすぐに、方程式は正確に解けなくなります。

したがって、力を運動学的方程式で処理できる力に制限することに満足している場合は、それを使用してください。柔軟なものが必要な場合は、数値積分が唯一の方法です。

注:力が実際には一定ではない時間間隔にわたって一定として扱う場合、実際には数値積分の形式を使用しています。そして、それは統合の不正確な形でもあります。では、代わりに、実証済みの数値的方法を使用してみませんか?RK4はそのような多くの方法の1つです。

于 2012-03-28T11:10:58.417 に答える
2

時間ステップ内で一定として加速度 (実際には導関数) を近似することは、数値積分法がどのように機能するかです。導関数が定数でない場合は、導関数を定数として扱うことで、どのような種類のエラーが発生するかを考慮する必要があります。

T時間範囲をN幅の等しいステップに分割することを想像してくださいh=T/N。次に、動的方程式を段階的に統合します。RK4 を使用すると、ステップごとのローカル エラーはO(h^5)のグローバル エラーになりO(h^4)ます。

あなたが提案した運動学的方程式を使用して、項を2次に保ちながら、位置のテイラー展開を考慮することで誤差を評価できます。O(h^3)位置には、展開を切り捨てた場所に対応する各ステップで導入される誤差があります。これにより、ローカルエラーO(h^3)とグローバルエラーが発生しますO(h^2)

漸近誤差に基づいて、RK4 からの誤差は運動方程式よりもはるかに速くゼロになります。より正確です。RK4 は、実行する必要がある関数評価の数に対して得られる非常に優れた精度を取得します。

于 2012-03-28T11:40:33.357 に答える