Verlet 統合を使用する物理エンジンを作成していますが、いくつかの制約を正しく機能させることができません。いくつか (bond/weld 制約など) は余分な「水浸し」で十分に硬くありませんが、他のもの (領域制約など) は余分な弾みがあり、原子を飛ばします。私の物理シミュレーターでの更新方法のコードは次のようになります。
ProcessRemovedItems();
ProcessAddedItems();
_colliderManager.Update(timestepSize);
foreach (Atom atom in _atomList)
{
atom.Update(timestepSize);
}
for (int i = 0; i < _iterations; i++)
{
foreach (IConstraint constraint in _constraintList)
{
constraint.Update();
}
}
更新命令のさまざまな組み合わせをすべて試しましたが、何も助けにはなりませんでした。反復の使用について漠然とした考えがありますが、他に何が役立つかはわかりません。助言がありますか?