CGAL:段和多边形之间的交点?

时间:2011-07-01 17:27:38

标签: computational-geometry cgal

我有一组多边形,我想测试它和一个段之间的交集。 我检查了手册,但找不到匹配的功能。 点,线,线段,三角形,平面之间的交点确实存在。 多边形之间的交叉点也在那里。 我的问题是:

  1. 有这样的功能吗?
  2. 如果不是,这是否意味着我需要将多边形分解成段并在这些段之间进行交叉? (我不愿意这样做的原因是,我认为CGAL实际上可能会用这种方式来做多边形之间的交叉。为什么没有这样的函数来交叉线和多边形?)或者还有其他更好的方法吗?这样做的方法?

1 个答案:

答案 0 :(得分:7)

最简单的方法是创建一个可能包含多个多边形的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的更多信息:

我希望它很清楚, 基里尔