2011-07-01 25 views
6

私はポリゴンのセットを持っており、そのセグメントとセグメントの交差をテストしたいと思います。 マニュアルを確認しましたが、一致する機能が見つかりませんでした。 点、線、線分、三角形、面の交点が存在します。 また、ポリゴンの交点もあります。 私の質問は:CGAL:セグメントとポリゴンの交点?

  1. このような機能はありますか?
  2. ない場合、それは私がセグメントにポリゴンを打破し、これらのセグメント間の交差点を行う必要があります意味ですか?あるいは、他のが良いがある(私はこれを行うには消極的だ理由は、私が?な線と交差する機能とポリゴン決してありませんどのように来る。CGALが、実際にポリゴンとの交点を行うには、この方法を使用するかもしれないと思っています)それを行う方法?

答えて

7

最も簡単な方法は、いくつかのポリゴンを含んでいてもよいPolygon_set_2オブジェクトを作成することです。外部ポリゴンとこのセットとの交差をテストするには、単純にdo_intersectメソッドを適用します。例えば

:polygon_set_2上

typedef CGAL::Polygon_set_2<Kernel, std::vector<Kernel::Point_2>> Polygon_set_2; 
Polygon_set_2 ps; 
Polygon_2  poly; 
Polygon_2  line; // line is a polygon defined by 2 points 

ps.insert(poly); 
bool intersect = ps.do_intersect(line); 

より:

私はそれを明確に願っています、 キリル

+0

ああ、私は、多角形には2つの点しか含めることができないことを認識していませんでした。仕事が見える! –

+1

それは ps.insert(ポリ)です。 ps.insert(line); ? – sabbir

+0

私はこのエラーを受け取ります: 説明:ポリゴン境界が自己重複しています。 – sabbir