Thomas Jakobsenによる古典的なテキストAdvanced Character Physicsの概念に基づいて、物理エンジンを実装しました。摩擦については記事でごく簡単に説明しているだけで、Jakobsen自身は「これよりも優れた摩擦モデルを実装できるはずである」と述べています。
一般的に、前述の記事の概念に加えて、信頼できる摩擦モデルをどのように実装できますか?そして、どのようにして見つけられた摩擦を円の回転に変換できますか?
この質問を私の具体的な実装についてではなく、より一般的にはヤコブセンスのアイデアを優れた摩擦システムと組み合わせる方法について質問したくありません。しかし、これは摩擦をまったく処理しない私のエンジンの現在の状態を示すライブデモです。。http //jsfiddle.net/Z7ECB/embedded/result/
以下は、この論文に基づいたエンジンで衝突検出がどのように機能するかを示した例です。Verlet統合では、現在と以前の位置が常に保存されます。これらに基づいて、新しい位置が計算されます。すべてのフレームで、円と線の間の距離を計算します。この距離が円の半径よりも小さい場合、衝突が発生しており、円はオーバーラップのサイズ(図のオフセット)に従って問題の線から垂直に投影されます。
速度はVerlet統合により暗黙的であるため、位置を変更すると速度も変更されます。私が知る必要があるのは、円の摩擦の量を何らかの方法で決定し、速度を下げるために円と平行に後方に移動することです。