CGAL:将线段延伸到多边形边界

CGAL: extend segment until the polygon boundary

本文关键字:多边形 边界 段延伸 CGAL      更新时间:2023-10-16

如果在多边形的两个顶点之间有一个线段,有没有办法使用CGAL将该线段延伸到多边形边界?(如果至少有一个顶点是反射顶点,则可能发生这种情况)。

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

设p1和p2为分段的顶点。如果我说得对,你会想根据交点的坐标对它们进行排序,并创建一个线段,从第一个小于p1和p2的交点到第一个大于p1和p2的交点。(注意,这里要处理几个特殊情况。)

要获得交点,可以在多边形的线段上迭代,并通过CGAL::intersection将每个线段与上述支撑线相交。

一种更复杂的方法是创建一个包含多边形的排列,在其上附加一个观察者,然后将上述支撑线添加到排列中。然后,您可以从对obs.before_split_face()obs.before_split_face()的自动调用中获得所需的信息。