衝突検出に関して多くの質問が見つかりました。2 つの指定されたオブジェクトのペアが衝突するかどうかを検出する十分に効率的な方法を作成しました。オブジェクトの数を 2 から 20 に増やすと、突然アルゴリズムが正しく機能しなくなります。たとえば、パーティクル 1 がパーティクル 10 に衝突すると、パーティクル 10 は他のオブジェクトをスキップして壁に直接衝突します。
その背後にある理由は、たとえば、粒子 1 が実際に粒子 10 と衝突している場合、私のアルゴリズムはそれらの間の衝突をチェックしていませんが、他のペアをチェックしているためです。
私によると、解決策は、各ペアの衝突検出方法を同時に実行することです。ここで、Particle one と Particle Two を各スレッドに渡す必要があります。One と Two は、衝突が検出されるオブジェクトです。
擬似コードは次のとおりです。
private double isColliding(Particle One, Particle Two) {
//Collision Detection Mechanism
//Returns 0 if no collision
//Otherwise returns a double between 0 and 1
//used to clip the velocity vector so that it stops right before collision
}
だから、私が欲しいのは、上記のメソッドをオブジェクトの異なるペアに対して異なるスレッドで実行するように変換する方法を知ることです....
また、これを行うことができる他の方法はありますか........
注....この上記のメソッドは、パーティクル1または2の値を変更しないため、非同期で使用できます....