1

如果我在多边形的 2 个顶点之间有一个线段,有没有办法使用 CGAL 扩展这个线段直到它到达多边形边界?(如果至少有一个顶点是反射顶点,就会发生这种情况)。

4

1 回答 1

3

您可以通过获取线段的支撑线mySegment.supporting_line()并检查该线与多边形边界的相交位置。然后,您可以创建一个基于找到的交点的新段。

让 p1 和 p2 成为 Segment 的顶点。如果我猜对了,您可能希望按坐标对交点进行排序,并创建一个从小于 p1 和 p2 的第一个交点到大于 p1 和 p2 的第一个交点的段。(注意这里要处理几种特殊情况。)

要获得交点,您可以遍历多边形的各个部分,并通过 将每个部分与提到的支撑线相交CGAL::intersection

一种更复杂的方法是创建一个包含多边形的Arrangement,将Observer附加到它,然后将提到的支撑线添加到 Arrangement。然后,您将从对obs.before_split_face()和的自动调用中获得所需的信息obs.before_split_face()

于 2012-12-15T11:07:26.823 回答