首页 > 解决方案 > CGAL 中的 Delaunay_triangulation_2 不保持输入顶点的顺序

问题描述

我有一组点,我正在和他们一起做 CGAL::Delaunay_triangulation_2。但是,生成的三角剖分中的点的顺序与输入点中的不同。例如,如果输入点 0 在 (-1,-1) 中,则三角剖分中的输出点 0 不在同一位置。位置 (-1,-1) 的点是另一个点,但不一定是第 0 个点。

对我来说,保持顺序很重要,因为我对原始点集进行了一些引用(作为索引),所以我需要输入集中和输出集中的顶点编号 i 相同。

有什么方法可以使输出集的排序与输入集相同?我不在乎是否需要重新排序输入集,因为在获取参考之前我可以轻松地做到这一点。

标签: cgaldelaunay

解决方案


如此所述:“请注意,此函数不能保证按照 PointInputIterator 的顺序插入点,因为 spatial_sort() 用于提高效率。”

如果您一一插入您的点,那么它们将按插入顺序排列(前提是没有重复)。

另请参阅此示例,该示例可用于将输入 id 设置为info()顶点(然后可以创建一个向量以从 id -> 顶点直接访问)。


推荐阅读