タグ付けされた質問 「collision-detection」


11
ボール対ボールの衝突-検出と処理
Stack Overflowコミュニティの助けを借りて、かなり基本的だが楽しい物理シミュレーターを作成しました。 ボールを発射するには、マウスをクリックしてドラッグします。跳ね返り、最終的には「フロア」で停止します。 追加したい私の次の大きな機能は、ボール同士の衝突です。ボールの動きは、axとyの速度ベクトルに分けられます。私は重力を持っています(各ステップでyベクトルの小さな減少)、私は摩擦を持っています(壁との衝突ごとに両方のベクトルの小さな減少)。ボールは驚くほど現実的な方法で正直に動き回ります。 私の質問には2つの部分があると思います。 ボール同士の衝突を検出する最良の方法は何ですか? 各ボールを反復し、半径が重複しているかどうかを確認するために他のすべてのボールをチェックするO(n ^ 2)ループがあるだけですか? ボール同士の衝突を処理するためにどのような方程式を使用しますか?Physics 101 2つのボールの速度x / yベクトルにどのように影響しますか?2つのボールが向かう方向は何ですか?これを各ボールにどのように適用しますか? 「壁」の衝突検出とその結果のベクトルの変更の処理は簡単でしたが、ボールとボールの衝突により多くの複雑さが見られます。壁の場合は、適切なxまたはyベクトルの負の値をとるだけで、正しい方向に進みます。ボールの場合はそうは思いません。 いくつかの簡単な説明:簡単にするために、今のところ完全な弾性衝突で大丈夫です。また、すべてのボールは現在同じ質量ですが、将来的に変更する可能性があります。 編集:参考になったリソース ベクトルを使用した2Dボールの物理学:Trigonometry.pdfのない2次元の衝突 2dボールの衝突検出の例:衝突検出の追加 成功! ボールの衝突検出と応答がうまく機能しています。 関連コード: 衝突検出: for (int i = 0; i < ballCount; i++) { for (int j = i + 1; j < ballCount; j++) { if (balls[i].colliding(balls[j])) { balls[i].resolveCollision(balls[j]); } …




10
HashTablesはどのように衝突に対処しますか?
私の学位クラスではHashTable、新しいキーエントリが別のキーエントリと衝突すると、「次の利用可能」バケットに新しいエントリが配置されると聞きました。 HashTableコリジョンキーを使用して1つのバックを要求したときにこのコリジョンが発生した場合、どのようにして正しい値が返されますか? Keysare Stringタイプであり、hashCode()Javaによって生成されたデフォルトを返すと想定しています。 独自のハッシュ関数を実装し、それをルックアップテーブルの一部として使用する場合(つまり、HashMapまたはDictionary)、衝突に対処するためにどのような戦略がありますか? 素数に関連するノートを見たことさえある!Google検索からはあまり明確ではない情報。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.