I have problem with low quality of Tetrahedrons in my generated Mesh.
I am using CGAL::Delaunay_Triangulation_3
for triangulation, from pre-defined point cloud.
My problem is that Elements generated by CGAL are a bit of low quality - presence of sliver etc, I would like to apply some post-processing optimization on the generated Mesh.
Because I have Mesh in form of 'point cloud' I dont have Mesh_Domain_3. All examples I found towards the mesh optimization used make_mesh_3 together with Mesh_Domain.
Is There any way to apply smoothing on generated delaunay mesh using CGAL, or customize CGAL::Delaunay_triangulation_3
for optimization? There is one constraint though - Some of the points in the meshes cannot be moved/erased from the cloud, and some can.
Types that I am using:
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Triangulation_vertex_base_with_info_3<int, Kernel> Vb;
typedef CGAL::Triangulation_data_structure_3<Vb> Tds;
typedef CGAL::Delaunay_triangulation_3<Kernel, Tds> Delaunay;
Generation Code
Delaunay triangulation(nodes.begin(), nodes.end());
//woudld be best to apply mesh smoothing here.
for(auto fit = triangulation.finite_cells_begin(); fit != triangulation.finite_cells_end(); ++fit)
{
auto x1 = fit->vertex(0)->info();
auto x2 = fit->vertex(1)->info();
auto x3 = fit->vertex(2)->info();
auto x4 = fit->vertex(3)->info();
tetras.push_back(new Tetrahedron(nodesToTriangulate[x1],nodesToTriangulate[x2],nodesToTriangulate[x3],nodesToTriangulate[x4]));
}