10

円が正方形と衝突しようとしているかどうかを確認する方法と、正方形が正方形と衝突しようとしているかどうかを検出する方法は知っていますが、多角形が正方形と衝突しようとしているかどうかを検出するにはどうすればよいですか?

さらに良いことに、ポリゴンがポリゴンと衝突しようとしているとき。

またはさらに良いことに、直線ではない線で構成された形状が別の同様の形状、多角形、または円/長方形と衝突する場合

形状が占めるピクセルと別の形状が占めるピクセルを取得し、それらのいずれかが同じかどうかを確認する方法はありますか?

大量の形状固有の計算を必要としない解決策があることを願っています。

これを行うためにjavascriptとhtml5キャンバスを使用しています。

4

2 に答える 2

3

これは単純なことではありません。関数が 2 つのポリゴンが衝突しているかどうかを判断できる (そしてそれらをロールバックできる) ことに満足している場合、解決策はそれほど難しくありません。ポリゴンの辺のいずれか 2 つが互いに交差しているかどうかを確認する必要があります。これはいくつかの計算によって行うことができ、大きな形状や多数のポリゴンではパフォーマンスが低下する可能性があります。これを解決するには、スペースのパーティション化とバウンディング ボリュームを使用できます。

更新:これ に基づいて線の交点を計算できます。次に、この点が両方のセグメントにあるかどうかを確認する必要があります。これを行うには、セグメントのエンドポイントを使用できます。セグメントに実際にポイントが含まれている場合、ua 変数と ub 変数は 0 ~ 1 になります。

于 2012-07-06T19:05:02.673 に答える
0

最も簡単なのは境界ボックスを使用することです。オブジェクトの最小値と最大値を見つけて、そこからボックスを作成します。ポリゴンからポリゴンへの変換を行うには、ポリゴンのエッジを保存する方法と、別のオブジェクトと衝突したポイントまたはエッジを特定する別の方法が必要です。ここから、衝突にどのように反応するかを決定できます。

境界ボックスは実装が簡単ですが、あまり正確ではありません。ポリゴン自体の実際のエッジを使用すると、より正確になりますが、処理が難しくなり、速度が大幅に低下します。

于 2012-07-06T19:10:08.290 に答える