三维三角测量后标记边界顶点

时间:2015-03-13 09:49:18

标签: 3d cgal

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

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

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

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

当我做同样的事情,但用球形网格我得到正确的结果。 我不能正确理解无限顶点吗? 我该如何解决这个问题?

P.S。我是cgal的新手。

2 个答案:

答案 0 :(得分:0)

在CGAL三角剖分中,与无限顶点相邻的顶点正好是那组点的凸包上的顶点。

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

答案 1 :(得分:0)

我设法通过使用子域

来解决这个问题
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