CGAL:帮助从Delaunay Triangulation获取三角形坐标

hor*_*ann 4 delaunay triangulation cgal

我是CGAL的新手,我相信我的问题非常简单.

我正在尝试使用CGAL做一些Delaunay三角测量.我有一个在球体上有N个3D点的网格,我想使用这些点作为三角形的顶点对球体进行三角测量.我只需要获得结果三角形的顶点列表:

id_triangle1 vertex_1 vertex_2 vertex_3 id_triangle2 vertex_1 vertex_2 vertex_3 .......

我这样做是为了执行三角测量:

    std::vector<Point> P; 
    for(i=0;i<NSPOINTS;i++) 
            P.push_back(Point(GRID[i].x,GRID[i].y,GRID[i].z)); 

    // building Delaunay triangulation. 
    Delaunay dt(P.begin(), P.end()); 
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我不知道如何得到最终的三角测量.我想出了如何获得face_iterator,但我不知道该怎么做:

    Delaunay::Finite_faces_iterator it; 
    for (it = dt.finite_faces_begin(); it != dt.finite_faces_end(); it++){ 
            std::cout << dt.triangle(it) << std::endl; 
    } 
Run Code Online (Sandbox Code Playgroud)

我不确定迭代三角形是否正确,如果它是......一个三角形=面部??¿,我的意思是,每个迭代器位置只有一个三角形?如何正确获取每个三角形的x,y和z?¿

slo*_*iot 5

如此处所述,Facet是一对(Cell_handle,int).整数表示与facet相对的单元格的索引.因此,可以像这样进行对facet点的访问:it->first->vertex( (it->second+k)%4 )->point()k = 1-> 3.

请注意,如果您对球体的三角测量(即表面三角测量)感兴趣,则需要仅考虑入射到无限单元的面.此外,使用凸壳解决了这个问题,请参阅此示例.