問題タブ [separating-axis-theorem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 衝突検出: 分離軸定理 - 円対多角形
コードにかなり厳密に従って、 Randy Gaul の C++ Impulse Engineに基づいて円と多角形の間の衝突検出を実装しようとしましたが、アルゴリズムは決して true を返しません。
これがJSFiddleです。(便宜上、本文は HTML5 Canvas API を使用してレンダリングされます)
コードのスニペット (衝突検出のみ):
b.verts2
は、現実世界の座標でのポリゴンの頂点を指すことに注意してください。
Vector クラスに問題がないことはわかっていますが、変換行列の経験があまりないため、そのクラスがこれらのエラーの原因である可能性がありますが、そのコードはほぼ完全にから派生しています。 Impulse Engine も同様に動作するはずです。前述のように、衝突が実際に発生した場合でも、アルゴリズムは常に false を返します。ここで何が間違っていますか?初期のリターンを取り出してみましたが、負の座標を持つ接触点などの奇妙な結果が返されるだけで、明らかに正しくありません。
編集: ベクトル クラスの垂直関数をインパルス エンジンと同じように動作するように変更しました (どちらの方法も正しいですが、一方は時計回りでもう一方は反時計回りだと思います。反時計回りを反映するように頂点も変更しました)。残念ながら、それでもテストに失敗します。
python - Python int オブジェクトは添字可能ではありません
現在、独自の SAT (分離軸定理) 衝突検出システムを実装しようとしていますが、問題が発生しました。34 行目で、次のエラー メッセージが表示されます。
行 34、衝突軸 = (v[1]、-v[0]) TypeError: 'int' オブジェクトは添字可能ではありません
奇妙なことに、v は int ではなく、タプルです。
これがコードです
問題は34行目
java - 分離軸定理のエラー
私は長い間 SAT の実装に苦労してきましたが、これが私の最後の手段です。コードを視覚的にチェックした後、チェックしている形状 (軸) の面の法線を正しく取得しているようです。各頂点を各軸に正しく投影していますが、オーバーラップを検出していないため、SATはfalseを返します。誰かが私を正しい方向に向けることができれば、感謝しています。
SAT クラス: (DevEntity)
ベクトル クラス: