所以我有一些不同数量的线段,我希望它们组合成一个多边形。因此,想象4点p0,p1,p2,p3
形成一个开放的多边形p0-p1-p2-p3
。 (这是说明性的:多边形也可以关闭)
但是我的算法以随机顺序生成段(p2,p3) (p0,p1) (p1,p2)
。因此,为了将它们连贯地结合起来,我在CGAL中使用了 Arrangements_2 类。
我把它们结合起来。但现在它们形成了一个具有无界面的单一多边形。我不太确定如何以有序的方式打印出顶点。
我想要的是输出算法(p0-p1-p2-p3)或(p3-p2-p1-p0)。
我查看了文档link here,他们对有界面部有一个很好的遍历顺序,但对于无界面部则没有那么多。
我的问题:
我是否可以使用遍历无界面来实现相同的目标?
如果不是 Arrangements_2 我还可以在CGAL中使用什么来实现同样的目标? (我能想到的下一个最好的事情就是自己编写DS)
答案 0 :(得分:1)
安排肯定会完成这项工作。
插入所有曲线后,您可以验证该排列有两个面arr.number_of_faces()
;一个无界面,只有一个内部ccb(边界的连通分量)和另一个只有一个外部ccb的面。
获得第一张脸arr.faces_begin()
。如果它是无界f−>is_unbounded()
,则获取其第一个内边界f−>holes_begin()
。否则,获取其外边界f−>outer_ccb()
。