代码之家  ›  专栏  ›  技术社区  ›  squall

三维三角剖分后标记边界顶点

  •  1
  • squall  · 技术社区  · 11 年前

    我的目标是将三维规则三角网格的所有顶点标记为内部顶点或外部顶点。 我知道无限顶点。

    我遍历无限顶点的所有相邻顶点,并将它们标记为外部顶点。 什么时候我会得到奇怪的结果:

    右图:蘑菇的所有顶点。 中间图片:标记为外部的顶点。 左图:标记为内部的顶点

    http://i62.tinypic.com/2uqj6hj.jpg

    当我做同样的事情,但使用球体网格时,我得到了正确的结果。 我没有正确理解无限顶点吗? 我如何解决这个问题?

    注:我是cgal的新手。

    2 回复  |  直到 11 年前
        1
  •  0
  •   lrineau afsal    11 年前

    在CGAL三角形中,与无限顶点相邻的顶点恰好是位于点集凸包上的顶点。

    如果你想重建一个形状,比如蘑菇,你需要使用重建算法。CGAL中最简单的是 3D Alpha Shapes ,但您可能希望使用 Surface Reconstruction from Point Sets .

        2
  •  0
  •   squall    11 年前

    我最终通过使用子域解决了这个问题

    for (C3t3::Facets_in_complex_iterator
        fit = i_pTetrahedlizedMesh.facets_in_complex_begin(),
        end = i_pTetrahedlizedMesh.facets_in_complex_end();
    fit != end; ++fit)
    {
        C3t3::Subdomain_index cell_sd = i_pTetrahedlizedMesh.subdomain_index(fit->first);
        C3t3::Subdomain_index opp_sd = i_pTetrahedlizedMesh.subdomain_index(fit->first->neighbor(fit->second));
    
        if (cell_sd != 0 && opp_sd != 0) continue; //this is an inner vertex
        else .... //this is an outer vertex
    
    推荐文章