CGAL 5.5 - 3D Mesh Generation
CGAL::Mesh_complex_3_in_triangulation_3< Tr, CornerIndex, CurveIndex > Class Template Reference

#include <CGAL/Mesh_complex_3_in_triangulation_3.h>

Definition

The class Mesh_complex_3_in_triangulation_3 implements a data structure to store the 3D restricted Delaunay triangulation used by a mesh generation process.

This class is a model of the concept MeshComplexWithFeatures_3InTriangulation_3.

Template Parameters
Trcan be instantiated with any 3D regular triangulation of CGAL provided that its vertex and cell base class are models of the concepts MeshVertexBase_3 and MeshCellBase_3, respectively.
CornerIndexis the type of the indices for corners. It must match the Corner_index of the model of the MeshDomainWithFeatures_3 concept used for mesh generation.
CurveIndexis the type of the indices for curves. It must match the Curve_index types of the model of the MeshDomainWithFeatures_3 concept used for mesh generation.

Those two last template parameters defaults to int, so that they can be ignored if the domain used for mesh generation does not include 0 and 1-dimensionnal features (i.e is a model of the concept MeshDomain_3).

Is Model Of:
MeshComplexWithFeatures_3InTriangulation_3
See also
CGAL::make_mesh_3()
CGAL::refine_mesh_3()
MeshComplex_3InTriangulation_3
MeshComplexWithFeatures_3InTriangulation_3
MeshCellBase_3,
MeshVertexBase_3
Examples:
Mesh_3/mesh_3D_gray_image.cpp, Mesh_3/mesh_3D_gray_image_with_custom_initialization.cpp, Mesh_3/mesh_3D_gray_vtk_image.cpp, Mesh_3/mesh_3D_image.cpp, Mesh_3/mesh_3D_image_variable_size.cpp, Mesh_3/mesh_3D_image_with_custom_initialization.cpp, Mesh_3/mesh_3D_image_with_features.cpp, Mesh_3/mesh_3D_weighted_image.cpp, Mesh_3/mesh_hybrid_mesh_domain.cpp, Mesh_3/mesh_implicit_domains.cpp, Mesh_3/mesh_implicit_domains_2.cpp, Mesh_3/mesh_implicit_ellipsoid.cpp, Mesh_3/mesh_implicit_sphere.cpp, Mesh_3/mesh_implicit_sphere_variable_size.cpp, Mesh_3/mesh_optimization_example.cpp, Mesh_3/mesh_optimization_lloyd_example.cpp, Mesh_3/mesh_polyhedral_complex.cpp, Mesh_3/mesh_polyhedral_domain.cpp, Mesh_3/mesh_polyhedral_domain_with_features.cpp, Mesh_3/mesh_polyhedral_domain_with_lipschitz_sizing.cpp, Mesh_3/mesh_polyhedral_domain_with_surface_inside.cpp, Mesh_3/mesh_two_implicit_spheres_with_balls.cpp, and Mesh_3/remesh_polyhedral_surface.cpp.

Types

typedef Tr::Vertex::Index Index
 Index type.
 
typedef Tr::Cell::Surface_patch_index Surface_patch_index
 Surface index type.
 
typedef Tr::Cell::Subdomain_index Subdomain_index
 Subdomain index type.
 
typedef CornerIndex Corner_index
 Corner index type.
 
typedef CurveIndex Curve_index
 Curve index type.
 

Operations

void remove_isolated_vertices ()
 The tetrahedral mesh generation algorithm implemented in CGAL::make_mesh_3() and CGAL::refine_mesh_3() does not guarantee that all the points inserted by the algorithm are actually present in the final mesh. More...
 
void output_to_medit (std::ofstream &os)
 Outputs the mesh to os in medit format.
 
std::ostream & output_boundary_to_off (std::ostream &out) const
 Outputs the outer boundary of the entire domain with facets oriented outward.
 
std::ostream & output_boundary_to_off (std::ostream &out, Subdomain_index subdomain) const
 Outputs the outer boundary of the selected subdomain with facets oriented outward.
 
std::ostream & output_facets_in_complex_to_off (std::ostream &out) const
 Outputs the surface facets with a consistent orientation at the interface of two subdomains.
 

Member Function Documentation

◆ remove_isolated_vertices()

template<typename Tr , typename CornerIndex , typename CurveIndex >
void CGAL::Mesh_complex_3_in_triangulation_3< Tr, CornerIndex, CurveIndex >::remove_isolated_vertices ( )

The tetrahedral mesh generation algorithm implemented in CGAL::make_mesh_3() and CGAL::refine_mesh_3() does not guarantee that all the points inserted by the algorithm are actually present in the final mesh.

In most cases, all points are used, but if the geometry of the object has small features, compared to the size of the simplices (triangles and tetrahedra), it might be that the Delaunay facets that are selected in the restricted Delaunay triangulation miss some vertices of the triangulation. The concurrent version of the tetrahedral mesh generation algorithm also inserts a small set of auxiliary vertices that belong to the triangulation but are isolated from the complex at the end of the meshing process.

This function removes these so-called isolated vertices, that belong to the triangulation but not to any cell of the C3T3, from the triangulation.