2

私はいくつかのポリゴンがあるキャンバスを持っています。私がやりたいのは、ポリゴンが重なっているかどうかを検出しようとすることです。私はさまざまな Web サイトを調べましたが、見つかったもののほとんどはオブジェクトの衝突に関するものです。これはたとえば、ポリゴンが動いていないため、問題になることはありません。重複しているかどうかを検出する方法について、誰かが私を正しい方向に向けることができるかどうか疑問に思っていました。画面上で使用されているスペースを計算できる方法はありますか? または Polygon の領域で 2 つを比較しますか?

たとえば、ここのモックのように、赤い形が緑の形に重なっています。基本的に、私が望むのは、それらが重複しているか、そうではないかということだけです。

http://peterfleming.net84.net/Slice%201.png

前もって感謝します。

ピート

4

3 に答える 3

2

このライブラリ (無料でオープン ソース) は、ポリゴン クリッピングを表示します: http://www.angusj.com/delphi/clipper.php

とはいえ、ポリゴンのオーバーラップによって、1 つのポイントの少なくとも 1 つのポイントが他のポイントの内側にあることを意味する場合は、ポイント イン ポイント ポリゴンの問題を調べるか、各ポリゴンの線をチェックして交差するかどうかを確認することにより、各ポリゴンのポイントを他のポイントに対してテストできます。別のポリゴン

これらの方法はすべて異なる効率で動作します。状況に最適なものを試してみてください.

ただし、図は、これらのポリゴンが「並んでいる」か、または同様のものであるかどうかを確認したいことを示唆しているようです。これについて明確にするのに役立ちます。オーバーラップには、通常、オーバーラップを決定するための座標計画が必要です。

于 2012-05-17T11:49:42.383 に答える
0

各ポリゴンがシェイプ (パスまたはポリゴン) であると仮定すると、それらのRenderedGeometryのFillContainsWithDetailメソッドを使用して、交差をペアごとにチェックできます。

于 2012-05-17T11:49:24.433 に答える