1

ポリゴンの 2 つの頂点間にセグメントがある場合、CGAL を使用してポリゴンの境界に到達するまでこのセグメントを拡張する方法はありますか? (これは、頂点の少なくとも 1 つが反射頂点である場合に発生する可能性があります)。

4

1 に答える 1

3

経由でセグメントの支持線を取得し、mySegment.supporting_line()この線がポリゴン境界と交差する場所を確認できます。次に、見つかった交点に基づいて新しいセグメントを作成できます。

p1 と p2 をセグメントの頂点とします。私が正しければ、交点を座標で並べ替え、p1 と p2 より小さい最初の交点から p1 と p2 より大きい最初の交点までのセグメントを作成します。(いくつかの特殊なケースがここで処理されることに注意してください。)

交点を取得するには、ポリゴンのセグメントを反復処理し、 を介して前述のサポート ラインと各セグメントを交差させることができますCGAL::intersection

より洗練されたアプローチは、ポリゴンを含むアレンジメントを作成し、それにオブザーバーをアタッチしてから、前述のサポート ラインをアレンジメントに追加することです。obs.before_split_face()次に、とへの自動呼び出しから必要な情報を取得しますobs.before_split_face()

于 2012-12-15T11:07:26.823 に答える