gpt4 book ai didi

triangulation - CGAL:帮助从 Delaunay 三角测量中获取三角形坐标

转载 作者:行者123 更新时间:2023-12-05 01:36:51 25 4
gpt4 key购买 nike

我是 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());

我的问题是我不知道如何得到结果三角剖分。我想出了如何获得 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;
}

我不确定迭代三角形是否正确,如果它是......
一个三角形 = face ??¿ ,我的意思是,每个迭代器位置只有一个三角形 ¿?
我怎样才能正确获得每个三角形的 x、y 和 z ??

最佳答案

如文档所示 here ,一个 Facet 是一对 (Cell_handle,int)。整数表示与刻面相对的单元格的索引。因此,可以像这样访问刻面的点:it->first->vertex( (it->second+k)%4 )->point() k=1->3。

请注意,如果您对球体的三角剖分(即曲面三角剖分)感兴趣,则只需考虑与无限单元格相关的面。
此外,使用凸包解决了这个问题,请参阅此 example .

关于triangulation - CGAL:帮助从 Delaunay 三角测量中获取三角形坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com