CGAL顶点打印装置_2

时间:2014-04-08 16:55:49

标签: c++ cgal

所以我有一些不同数量的线段,我希望它们组合成一个多边形。因此,想象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,他们对有界面部有一个很好的遍历顺序,但对于无界面部则没有那么多。

我的问题:

  1. 我是否可以使用遍历无界面来实现相同的目标?

  2. 如果不是 Arrangements_2 我还可以在CGAL中使用什么来实现同样的目标? (我能想到的下一个最好的事情就是自己编写DS)

1 个答案:

答案 0 :(得分:1)

安排肯定会完成这项工作。

插入所有曲线后,您可以验证该排列有两个面arr.number_of_faces();一个无界面,只有一个内部ccb(边界的连通分量)和另一个只有一个外部ccb的面。 获得第一张脸arr.faces_begin()。如果它是无界f−>is_unbounded(),则获取其第一个内边界f−>holes_begin()。否则,获取其外边界f−>outer_ccb()