如果我在多边形的两个顶点之间有一个段,是否有办法使用CGAL扩展此段直到它到达多边形边界? (如果至少有一个顶点是反射顶点,就会发生这种情况。)
答案 0 :(得分:2)
您可以通过mySegment.supporting_line()
获取细分的支撑线,并检查此线与多边形边界相交的位置。然后,您可以创建基于找到的交叉点的新段。
让p1和p2成为细分的顶点。如果我找到了你,你需要按照坐标对交叉点进行排序,并创建一个从小于p1和p2的第一个交点小点到大于p1和p2的第一个交点的小段。 (请注意,这里将处理几个特殊情况。)
要获得交点,您可以迭代多边形的线段,并通过CGAL::intersection
将每个线段与提到的支撑线相交。
更复杂的方法是创建一个包含多边形的Arrangement,将Observer附加到其上,然后将所提到的支撑线添加到Arrangement中。然后,您可以通过自动调用obs.before_split_face()
和obs.before_split_face()
获取所需信息。