6

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

  1. そのような機能はありますか?
  2. そうでない場合は、ポリゴンをセグメントに分割し、これらのセグメント間で交差させる必要があるということですか? (私がこれをするのをためらう理由は、CGALが実際にこの方法を使用してポリゴン間の交差を行うのではないかと思ったからです。線とポリゴンを交差させるためのそのような関数がないのはなぜですか?)または他にもっと良いものはありますか?やり方?
4

1 に答える 1

6

最も簡単な方法は、複数のポリゴンを含む Polygon_set_2 オブジェクトを作成することです。外部ポリゴンとこのセットとの交差をテストするには、do_intersect メソッドを適用するだけです。

例えば:

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);

polygon_set_2 の詳細:

それがはっきりしているといいのですが、キリル

于 2011-07-24T11:38:36.800 に答える