【问题标题】:CGAL: Help getting triangles coordinates from Delaunay TriangulationCGAL:帮助从 Delaunay Triangulation 获取三角形坐标
【发布时间】:2011-12-17 19:23:14
【问题描述】:

我是 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; 
    } 

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

【问题讨论】:

    标签: triangulation cgal delaunay


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的快速回答,但我仍然不知道如何迭代生成的三角形,以及如何获取每个三角形顶点的索引。正如我之前所说,我需要这样的东西: triangle_1 v1 v2 v3 triangle_2 v1 v3 v4 triangle_3 v2 v4 v5 ......等等。 (目前,我对顶点 x,y,z 坐标不感兴趣,但对它的索引感兴趣)再次提前感谢您。
    【解决方案2】:

    如果你用谷歌搜索finite_faces_begin(),你可以得到很多CGAL提示。

    faces 迭代器将允许您以不同的方式获取基础数据。这是一个使用 'vertex()' 函数的名为“tesis”的好例子。

    http://mati-repa-repo.googlecode.com/svn/trunk/tesis/impl/HODTs/

    for( Finite_faces_iterator fi = dt.finite_faces_begin(); fi != dt.finite_faces_end(); fi++){
        Point2 point0 = Point2(fi->vertex(0)->point().hx(), fi->vertex(0)->point().hy());
        Point2 point1 = Point2(fi->vertex(1)->point().hx(), fi->vertex(1)->point().hy());
        Point2 point2 = Point2(fi->vertex(2)->point().hx(), fi->vertex(2)->point().hy());
        ...
    }
    

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 1970-01-01
      • 2011-04-01
      • 2014-03-18
      • 1970-01-01
      • 2012-03-04
      • 2014-02-06
      • 2010-12-22
      • 1970-01-01
      相关资源
      最近更新 更多