私が達成しようとしているのは、線と穴のあるポリゴンのセットとの交点を取得することです->マスクで線をクリップします(ポリゴンのセット)->結果は別の線になります。CGALでの質問:セグメントとポリゴンの交差点?線を表すために2点のポリゴンを使用することをお勧めします。CGALサンプルの助けを借りて、私は次のスニペットを思いつきました。私の意図は、交差点を使用して長方形の内側にある線の一部を計算することでした。ただし、結果は4点であり、多角形と線で定義された半平面との交点を計算しているようです。
誰かがこれに光を当てることができますか?
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef Kernel::Point_2 Point_2;
typedef CGAL::Polygon_2<Kernel> Polygon_2;
typedef CGAL::Polygon_with_holes_2<Kernel> Polygon_with_holes_2;
typedef std::list<Polygon_with_holes_2> Pwh_list_2;
int main()
{
Polygon_2 P; // rectangle
P.push_back (Point_2 (10, 10));
P.push_back (Point_2 (20, 10));
P.push_back (Point_2 (20, 20));
P.push_back (Point_2 (10, 20));
Polygon_2 Q; // line
Q.push_back (Point_2 (0, 15));
Q.push_back (Point_2 (25, 15));
Pwh_list_2 symmR;
Pwh_list_2::const_iterator it;
CGAL::intersection (Q, P, std::back_inserter(symmR));
for (it = symmR.begin(); it != symmR.end(); ++it) {
std::cout << "--> ";
print_polygon_with_holes( *it);
}
getchar();
return 0;
}