我正在对从球体采样的点执行3D Delaunay三角剖分,我正在查看结果三角剖分的顶点,主要是通过这样做:
for(Delaunay_Vertex_iter p = T.vertices_begin(); p!= T.vertices_end(); p ++){
std :: cout<< p-> point()<< ENDL;
}
当T.number_of_vertices()== 270时,我得到271个顶点,第一个是原点(0,0,0)。为什么呢?
答案 0 :(得分:3)
这是无限顶点,它有未指定的坐标,恰好是这里的原点。您应该使用finite_vertices_begin()/finite_vertices_end()
进行迭代。
有关无限顶点的信息,请参阅http://doc.cgal.org/latest/Triangulation_3/。
答案 1 :(得分:0)
这很可能会发生,因为浮点数本身并不完全在单位球上。因此,数据类型或内核以及采样的接近程度会影响结果。
您可以将CGAL的球形内核用于3D案例或以下所述的实现: https://stackoverflow.com/a/45240506/4994003 为了避免一般dD案件的精确问题。