Delaunay_triangulation_2 在 CGAL 中不保持输入顶点的顺序
Delaunay_triangulation_2 in CGAL doesn't keep order of input vertices
我有一组点,我正在用它们做 CGAL::Delaunay_triangulation_2。但是,生成的三角剖分中的点顺序与输入点中的顺序不同。比如输入点0在(-1,-1),三角剖分中输出点0不在同一个位置。位置 (-1,-1) 的点是另一个点,但不一定是第 0 个。
对我来说,保持顺序很重要,因为我正在对原始点集进行一些引用(作为索引),所以我需要输入集和输出集中的顶点编号 i是同一个。
有没有办法让输出集的顺序与输入集的顺序相同?我不在乎是否需要重新排序输入集,因为我可以在引用之前轻松地做到这一点。
如文档所述here:“请注意,此函数不能保证按照 PointInputIterator 的顺序插入点,因为 spatial_sort() 用于提高效率。”
如果你一个一个插入你的点,那么它们将按插入顺序排列(前提是没有重复)。
另见 this example 可用于将输入 id 设置为顶点的 info()
(然后可以创建一个向量以从 id -> 顶点直接访问)。
我有一组点,我正在用它们做 CGAL::Delaunay_triangulation_2。但是,生成的三角剖分中的点顺序与输入点中的顺序不同。比如输入点0在(-1,-1),三角剖分中输出点0不在同一个位置。位置 (-1,-1) 的点是另一个点,但不一定是第 0 个。
对我来说,保持顺序很重要,因为我正在对原始点集进行一些引用(作为索引),所以我需要输入集和输出集中的顶点编号 i是同一个。
有没有办法让输出集的顺序与输入集的顺序相同?我不在乎是否需要重新排序输入集,因为我可以在引用之前轻松地做到这一点。
如文档所述here:“请注意,此函数不能保证按照 PointInputIterator 的顺序插入点,因为 spatial_sort() 用于提高效率。”
如果你一个一个插入你的点,那么它们将按插入顺序排列(前提是没有重复)。
另见 this example 可用于将输入 id 设置为顶点的 info()
(然后可以创建一个向量以从 id -> 顶点直接访问)。