除闭合歧管外,CGAL 3D网格生成是否需要条件?

时间:2016-03-14 03:25:42

标签: conditional-statements mesh cgal triangulation manifold

我试图对给定的冠状动脉模型进行三角测量(请参考图像和文件)。

首先,我尝试使用 TetGen 引擎中的3D约束 Delaunay 三角测量对它们进行三角测量,但似乎 TetGen 没有在任何时候生成它们。我尝试过大约40个封闭边界的模型,但只有一半是成功的。

作为替代方案,我发现 CGAL 3D 网格生成将生成基于 Delaunay 三角剖分的类似网格(当然,它与3D约束Delaunay不同)三角)。

我还测试了40个模型,这些模型与TetGen测试中使用的数据集相同,但看起来只有1/4成功。这很奇怪,因为处理的模型甚至比TetGen测试更少。

除闭合流形条件(无边界和流形)外,CGAL网格生成是否有任何条件?这是我在测试用例中使用的代码。它与CGAL网站的示例代码几乎相同。

// Create input polyhedron
Polyhedron polyhedron;
std::ifstream input(fileName.str());
input >> polyhedron;

// Create domain
Mesh_domain domain(polyhedron);

// Mesh criteria (no cell_size set)
Mesh_criteria criteria(facet_angle = 25, facet_size = 0.15, facet_distance = 0.008,
    cell_radius_edge_ratio = 3);

// Mesh generation
C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria, no_perturb(), no_exude());

findMinAndMax();
cout << "Polygon finish: " << c3t3.number_of_cells_in_complex() << endl;

Here is one of CA model which was used in test case.

The image of CA model

另外,我想在生成的网格中保留给定的模型三角形,如约束Delaunay三角剖分。是否有任何方法可以在没有特定标准的情况下生成网格?

如果您想了解更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

问题是网格生成器没有构造足够好的初始点集。目前的策略是从物体边界框的中心随机射出光线。或者,可以在表面上随机取样点,或者从骨架上的点射出随机射线。我在github上给你一个hacky解决方案。第一个参数是网格,第二个是网格单元大小,以便在网格上采样点。