問題タブ [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.
algorithm - 2つの長方形の交点を検出するアルゴリズム?
2 つの長方形が交差しているかどうかを検出するアルゴリズムを探しています (1 つは任意の角度、もう 1 つは垂直/水平線のみ)。
一方のコーナーが他方の ALMOST にあるかどうかのテストは機能します。長方形が十字のような形状を形成する場合、失敗します。
垂直線に特殊なケースが必要になるため、線の傾斜を使用しないようにすることをお勧めします。
ios - 回転したUIViewのサブビューが交差するかどうかをObjective-Cでチェックしますか?
どこから始めればいいのかわからない。この場合、明らかCGRectIntersectsRect
に機能しません。理由がわかります。
UIView の正確な中央に配置された UIImageView を持つ UIView のサブクラスがあります。
次に、CGAffineRotation を実行しながら、カスタム UIView を回転させて、内側の UIImageView のフレームを維持します。結果のフレームは次のようになります。
ユーザーがこれらのUIImageViewを交差させないようにする必要がありますが、フレームが親UIViewに適用されないだけでなく、フレームに影響を与えずに回転されるため、2つのUIImageViewの交差を確認する方法がわかりません。
私の試みの唯一の結果は失敗に終わりました。
何か案は?
collision-detection - 分離軸定理アルゴリズムが機能しない
Haxe を使用して、次のガイドに基づいて分離軸の実装を作成します。個々のパーツをテストして動作しない理由を理解できないようですが、衝突がない場合でも、衝突に対しては常に true を返します。
どんな助けでも大歓迎です!:D
c++ - 分離軸の定理: 重心の周りの回転
問題は次のPolygon::FindAxisLeastPenetration
とおりです。
}
polygon.rotationMatrix
Matrix22
2x2 行列である型のオブジェクトです。
polygon.points
ベクトルでstd::vector<Vector2D>
満たされています。インスタンス
polygon.body
へのポインタです。Object
この場合、位置を取得するためにのみ使用されます。と座標
polygon.body->position
のインスタンスです。ボディの位置ベクトルを返します。Vector2D
X
Y
Vector2D polygon.body->GetPosition()
ポイントを中心に回転が行われることを除いて、正常に機能します[0, 0]
が、重心の周りを回転するはずです。
ポイントを中心とした回転は次のようにできることを知っています:
また、ポリゴンをレンダリングするときにもうまく機能します。しかし、衝突検出ではありません。
この場合、特定の点を中心にベクトルを回転させるにはどうすればよいですか?
編集:これが私がこれまでに持っているものです
今のところ、最適化についてはあまり気にしていません。同じ問題があります。中心を中心に回転すると、衝突が正しく検出されません。ただし、中心が使用されている[0, 0]
か使用されていない場合、衝突検出は適切に機能しますが、回転は正しく行われません。
編集:衝突検出前に回転しても、同じ問題が発生します。これまでのところ、中心が になるようにポリゴンを変換するのが最善の方法でした[0, 0]
が、角度によっては衝突が検出されませんでした。今何をすべきかわからない。
編集: スクリーンショット (重心が常に になるようにポリゴンが変換されてい[0, 0]
ます。この場合、ポリゴンは長方形です) 衝突検出はここではうまく機能しませんでした
ここでも衝突検出がうまく機能しませんでした
ここでは衝突検出がうまく機能しました
編集:Rectangle
クラスを追加しました。
matlab - matlabで軸を分離する
私は、matlab で分離軸アルゴリズムの実装に取り組んできました。私はたくさん検索しましたが、解決策は思いつきませんでした。間違いを指摘していただけますか?前もって感謝します
c - 2次元での凸多角形の分離
2 つの凸多角形が交差するかどうかを調べようとしています。最も効率的な方法の 1 つは、軸を分離する方法を使用することです。この本http://www.geometrictools.com/Documentation/MethodOfSeparatingAxes.pdfでいくつかのコードを見つけましたが、ちょっと混乱しています。関数 Dot は何をしますか?
algorithm - 分離軸定理の時間計算量
ポリゴン (三角形) の数に基づいて複雑さをどのように判断しますか? ここで私のアプローチを修正または確認してください。ピラミッドがあり、頂点の追加を開始するとします。6 つの頂点から、次のようなパターンが見えます。
SAT では、オブジェクトの各頂点をそれぞれの法線に投影します。したがって、式は N*V で、N はポリゴンの数と同じです。
これは正しいです?もしそうなら、これはどのような複雑さですか?二次と線形の組み合わせと呼ぶべきですか?ありがとう。
編集:今それを見て、それは私が三角測量する方法に依存すると思います、それもあるかもしれません:
最小限かどうかはわかりませんが、複雑さは変わらないはずです。それはただの定数です。だから V*2-A かもしれません。何か公式があれば教えてください。エッジも扱うオイラーの多面体の公式を見つけました。
javascript - 衝突検出: 分離軸定理 - 円対多角形
コードにかなり厳密に従って、 Randy Gaul の C++ Impulse Engineに基づいて円と多角形の間の衝突検出を実装しようとしましたが、アルゴリズムは決して true を返しません。
これがJSFiddleです。(便宜上、本文は HTML5 Canvas API を使用してレンダリングされます)
コードのスニペット (衝突検出のみ):
b.verts2
は、現実世界の座標でのポリゴンの頂点を指すことに注意してください。
Vector クラスに問題がないことはわかっていますが、変換行列の経験があまりないため、そのクラスがこれらのエラーの原因である可能性がありますが、そのコードはほぼ完全にから派生しています。 Impulse Engine も同様に動作するはずです。前述のように、衝突が実際に発生した場合でも、アルゴリズムは常に false を返します。ここで何が間違っていますか?初期のリターンを取り出してみましたが、負の座標を持つ接触点などの奇妙な結果が返されるだけで、明らかに正しくありません。
編集: ベクトル クラスの垂直関数をインパルス エンジンと同じように動作するように変更しました (どちらの方法も正しいですが、一方は時計回りでもう一方は反時計回りだと思います。反時計回りを反映するように頂点も変更しました)。残念ながら、それでもテストに失敗します。