問題タブ [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.

0 投票する
1 に答える
846 参照

javascript - 衝突検出: 分離軸定理 - 円対多角形

コードにかなり厳密に従って、 Randy Gaul の C++ Impulse Engineに基づいて円と多角形の間の衝突検出を実装しようとしましたが、アルゴリズムは決して true を返しません。

これがJSFiddleです。(便宜上、本文は HTML5 Canvas API を使用してレンダリングされます)

コードのスニペット (衝突検出のみ):

b.verts2は、現実世界の座標でのポリゴンの頂点を指すことに注意してください。

Vector クラスに問題がないことはわかっていますが、変換行列の経験があまりないため、そのクラスがこれらのエラーの原因である可能性がありますが、そのコードはほぼ完全にから派生しています。 Impulse Engine も同様に動作するはずです。前述のように、衝突が実際に発生した場合でも、アルゴリズムは常に false を返します。ここで何が間違っていますか?初期のリターンを取り出してみましたが、負の座標を持つ接触点などの奇妙な結果が返されるだけで、明らかに正しくありません。

編集: ベクトル クラスの垂直関数をインパルス エンジンと同じように動作するように変更しました (どちらの方法も正しいですが、一方は時計回りでもう一方は反時計回りだと思います。反時計回りを反映するように頂点も変更しました)。残念ながら、それでもテストに失敗します。

https://jsfiddle.net/khanfused/tv359kgL/4/

0 投票する
1 に答える
195 参照

collision - 分離軸の定理 1 つの軸のみに沿った MVT

1 つの軸に沿った 3D 貫通ベクトルの計算に問題があります。私はすでにSATを実装しており、機能しています。最初のボックスを他のボックスからどれだけオフセットする必要があるかを計算したいので、常に他のボックスの上に置かれます。非常に長いボックスでシンプルなボックス キャストを行うようなものです。

指定された軸の方向に 1 つのオブジェクトを押すオフセットを見つける方法を教えてください。

ここに画像の説明を入力

0 投票する
2 に答える
2040 参照

python - Python int オブジェクトは添字可能ではありません

現在、独自の SAT (分離軸定理) 衝突検出システムを実装しようとしていますが、問題が発生しました。34 行目で、次のエラー メッセージが表示されます。

行 34、衝突軸 = (v[1]、-v[0]) TypeError: 'int' オブジェクトは添字可能ではありません

奇妙なことに、v は int ではなく、タプルです。

これがコードです

問題は34行目

0 投票する
0 に答える
92 参照

java - 分離軸定理のエラー

私は長い間 SAT の実装に苦労してきましたが、これが私の最後の手段です。コードを視覚的にチェックした後、チェックしている形状 (軸) の面の法線を正しく取得しているようです。各頂点を各軸に正しく投影していますが、オーバーラップを検出していないため、SATはfalseを返します。誰かが私を正しい方向に向けることができれば、感謝しています。

SAT クラス: (DevEntity)

ベクトル クラス: