【问题标题】:CGAL 3D Delaunay Triangulation - First Vertex is Origin?CGAL 3D Delaunay 三角剖分 - 第一个顶点是原点?
【发布时间】:2014-06-17 21:06:08
【问题描述】:

我正在对从球体采样的点执行 3D Delaunay 三角剖分,并且我正在通过执行以下操作查看所得三角剖分的顶点:

for(Delaunay_Vertex_iter p = T.vertices_begin(); p != T.vertices_end(); p++){

std::cout point()

}

当 T.number_of_vertices() == 270 时,我得到 271 个顶点,第一个是原点 (0, 0, 0)。为什么?

【问题讨论】:

  • 根据内核、平台和 CGAL 版本,您可能会看到 (-.5,-.5,-.5) 或 (NaN,NaN,NaN) 而不是 (0 ,0,0)。
  • 有趣...谢谢!

标签: iteration cgal delaunay


【解决方案1】:

这是无限的顶点,它有未指定的坐标,恰好是这里的原点。您应该改用 finite_vertices_begin()/finite_vertices_end() 进行迭代。 有关无限顶点的信息,请参阅http://doc.cgal.org/latest/Triangulation_3/

【讨论】:

    【解决方案2】:

    这很可能发生,因为浮点数本质上并不完全在单位球面上。因此,数据类型或内核以及采样的接近程度会影响结果。

    您可以将 CGAL 的球形内核用于 3D 案例或以下描述的实现: https://stackoverflow.com/a/45240506/4994003 以避免一般 dD 情况下的精度问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 2020-08-05
      • 2014-12-23
      • 2012-03-29
      • 2021-05-27
      • 2018-12-23
      • 1970-01-01
      相关资源
      最近更新 更多