【发布时间】:2012-11-15 19:24:56
【问题描述】:
如果我在多边形的 2 个顶点之间有一个线段,有没有办法使用 CGAL 将此线段延伸到多边形边界? (如果至少有一个顶点是反射顶点,就会发生这种情况)。
【问题讨论】:
标签: c++ polygon segment boundary cgal
如果我在多边形的 2 个顶点之间有一个线段,有没有办法使用 CGAL 将此线段延伸到多边形边界? (如果至少有一个顶点是反射顶点,就会发生这种情况)。
【问题讨论】:
标签: c++ polygon segment boundary cgal
您可以通过mySegment.supporting_line() 获取线段的支撑线,并检查该线与多边形边界的交点。然后,您可以创建一个基于找到的交点的新段。
让 p1 和 p2 成为 Segment 的顶点。如果我猜对了,您可能希望按坐标对交点进行排序,并创建一个从小于 p1 和 p2 的第一个交点到大于 p1 和 p2 的第一个交点的段。 (注意这里要处理几种特殊情况。)
要获得交点,您可以遍历多边形的各个部分,并通过CGAL::intersection 将每个部分与提到的支撑线相交。
更复杂的方法是创建一个包含多边形的Arrangement,将Observer 附加到它,然后将提到的支撑线添加到排列中。然后,您将通过自动调用obs.before_split_face() 和obs.before_split_face() 获得所需的信息。
【讨论】: