\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.12.1 - 3D Mesh Generation
MeshCellBase_3 Concept Reference

Definition

The concept MeshCellBase_3 describes the requirements for the Cell type of the triangulation used in the 3D mesh generation process. The type MeshCellBase_3 refines the concept RegularTriangulationCellBaseWithWeightedCircumcenter_3 and must be copy constructible. The concept MeshCellBase_3 includes a way to store and retrieve if a given cell of the triangulation is inside the domain or not and which subdomain it belongs to in case of a multi-domain.

Moreover, this concept adds four markers per cell to mark the facets of the triangulation that are surface facets, and four additional helper markers used in some operations to mark for instance the facets that have been visited.

This concept also provides storage for the centers of Delaunay surface balls. Each surface facet has a Delaunay surface ball, i. e. a circumscribing ball, centered on an input complex surface patch, and empty of triangulation vertices. In the following we call surface center of a surface facet, the center of its biggest Delaunay surface ball.

The optimizers also need this concept to provide read-write access to two Cell_handle called 'intrusive'.

For parallel algorithms, the functions related to facet access/modification must be concurrency-safe when several calls are made in parallel on different facets of the cell (e.g. calling set_facet_visited(0, true), set_facet_visited(2, true) and is_facet_visited(1) in parallel must be safe)

Moreover, the parallel algorithms require an erase counter in each cell (see below).

Refines:

RegularTriangulationCellBaseWithWeightedCircumcenter_3

CopyConstructible

Has Models:

CGAL::Compact_mesh_cell_base_3<Gt,MD,Tds>

CGAL::Mesh_cell_base_3<Gt,MD,Cb>

See also
CGAL::make_mesh_3()
MeshDomain_3
MeshComplex_3InTriangulation_3

Types

typedef unspecified_type Point_3
 The bare point type, required to match the Point_3 type of the 3D triangulation traits in which the mesh is embedded.
 
typedef unspecified_type Point
 The point type, required to match the Point type of the 3D triangulation in which the mesh is embedded.
 
typedef unspecified_type Subdomain_index
 Type of indices for cells of the input complex. More...
 
typedef unspecified_type Surface_patch_index
 Type of indices for surface patches of the input complex. More...
 
typedef unspecified_type Index
 Type of indices to be stored at mesh vertices to characterize the lowest dimensional face of the input complex on which a possible future Steiner vertex lies. More...
 

Operations

Subdomain_index subdomain_index ()
 Returns the index of the input subdomain that contains the cell cell of the triangulation.
 
void set_subdomain_index (Subdomain_index index)
 Sets the subdomain index of the cell.
 
bool is_facet_on_surface (int i)
 returns true iff facet(i) is a surface facet.
 
Surface_patch_index surface_patch_index (int i)
 returns Surface_patch_index of facet i.
 
void set_surface_patch_index (int i, Surface_patch_index index)
 sets Surface_patch_index of facet i to index.
 
bool is_facet_visited (int i)
 Returns true iff facet(i) has been visited.
 
void set_facet_visited (int i)
 Marks facet(i) as visited.
 
void reset_visited (int i)
 Marks facet(i) as non-visited.
 
const Point_3get_facet_surface_center (int i)
 Returns a const reference to the surface center of facet(i).
 
void set_facet_surface_center (int i, Point_3 p)
 Sets the point p as the surface center of facet(i).
 
void set_facet_surface_center_index (int i, Index index)
 Sets the surface center index of facet(i) to index.
 
Index get_facet_surface_center_index (int i)
 Returns the surface center index of facet(i).
 
unsigned int erase_counter () const
 Get the erase counter. More...
 
void set_erase_counter (unsigned int c)
 Sets the erase counter. More...
 
void increment_erase_counter ()
 Increments the erase counter. More...
 

Internal

These functions are used internally by mesh optimizers.

The class should provide storage, accessors and modificators for two Vertex_handle and two Cell_handle.

Cell_handle next_intrusive () const
 
void set_next_intrusive (Cell_handle)
 
Cell_handle previous_intrusive () const
 
void set_previous_intrusive (Cell_handle)
 

Member Typedef Documentation

◆ Index

Type of indices to be stored at mesh vertices to characterize the lowest dimensional face of the input complex on which a possible future Steiner vertex lies.

Must match the type MeshDomain_3::Index.

◆ Subdomain_index

Type of indices for cells of the input complex.

Must match the type MeshDomain_3::Subdomain_index.

◆ Surface_patch_index

Type of indices for surface patches of the input complex.

Must match the type MeshDomain_3::Surface_patch_index.

Member Function Documentation

◆ erase_counter()

unsigned int MeshCellBase_3::erase_counter ( ) const

Get the erase counter.

Only required by the parallel algorithms. See CGAL::Compact_container for more details.

◆ increment_erase_counter()

void MeshCellBase_3::increment_erase_counter ( )

Increments the erase counter.

Only required by the parallel algorithms. See CGAL::Compact_container for more details.

◆ set_erase_counter()

void MeshCellBase_3::set_erase_counter ( unsigned int  c)

Sets the erase counter.

Only required by the parallel algorithms. See CGAL::Compact_container for more details.