我有一组多边形,我想测试它和线段之间的交集。我查看了手册,但找不到匹配的功能。点、线、线段、三角形和平面之间的交点确实存在。多边形之间的交点也在那里。我的问题是:
- 有这样的功能吗
- 如果不是,这是否意味着我需要将多边形分解为线段,并在这些线段之间进行相交?(我不愿意这样做的原因是,我认为CGAL实际上可能会用这种方法来实现多边形之间的相交。为什么没有这样的函数来实现直线和多边形的相交?(或者还有其他更好的方法吗
最简单的方法是创建一个可能包含多个多边形的Polygon_set_2对象。要测试外部多边形与该集的交集,只需应用do_interact方法即可。
例如:
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:的更多信息
- http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Boolean_set_operations_2_ref/Class_General_polygon_set_2.html
- http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Boolean_set_operations_2_ref/Class_Polygon_set_2.html
我希望它是清楚的,基里尔