2

私の問題に適した方法を見つけるために、最近インターネットを検索して調査しました。

問題:

方向のない無限の線に対して凹面ポリゴンをクリップします(実際には3Dの平面に対するポリゴンですが、問題は似ていると思います)。現在、私は Sutherland-Hodgman を使用していますが、結果のポリゴンには、縮退したエッジから作成されたゼロ領域の部分が含まれることがあり、穴を含むポリゴンもサポートされていません。

私の問題を解決できる最適なアルゴリズムは Weiler-Atherton アルゴリズムですが、これは時計回りのエッジを持つポリゴンに対してクリッピングするためのものであり、方向情報が欠落している無限の線 (3D 平面) しかありません。

質問:

私のニーズに合った凹面ポリゴンをクリップするアルゴリズムはありますか、またはこの場合に機能するように Weiler-Atherton アルゴリズムを変更する方法について誰か提案がありますか? より多くのケースをサポートするために一般化できることを示唆するWebページがありますが、私はそれを理解できません。

//英検よろしく

4

2 に答える 2

3

私の問題を解決するGraphic Gems Vで適切なアルゴリズムを見つけました。誰かが同じ問題を抱えている場合、これは参照です:

Glassner, A., ''Clipping a Concave Polygon'', in Graphics Gems V, A. Paeth, ed., Academic Press, Cambridge, 1995

于 2010-10-09T16:19:49.300 に答える
1

ポリゴン クリッパー* を使用して、ラインをクリッピング ポリゴンに変換することでこれを解決できます。ほぼ水平面でクリッピングしていないと仮定すると、クリッピング ポリゴンの重要な (クリッピング) エッジが対象ポリゴンの垂直方向の寸法よりも少し大きいことを確認してください (つまり、対象ポリゴンの上下にエッジが伸びます)。ほぼ水平面でクリッピングする場合は、クリティカル エッジが被写体よりも少し広いことを確認してください。

*例: クリッパー - http://sourceforge.net/projects/polyclipping/

開示: 私は Clipper の作成者なので、個人的な偏見の可能性があります。

于 2010-10-07T19:15:59.463 に答える