CGAL 5.1 - 3D Surface Mesh Generation
|
#include <Concepts/SurfaceMeshComplex_2InTriangulation_3.h>
The concept SurfaceMeshComplex_2InTriangulation_3
describes a data structure designed to represent a two dimensional pure complex embedded in a three dimensional triangulation.
A complex is a set \( C\) of faces such that:
The complex is two dimensional, if its faces have dimension at most two. It is pure if any face in the complex is a subface of some face of maximal dimension. Thus, a two dimensional pure complex is a set of facets together with their edges and vertices. A two dimensional pure complex embedded in a three dimensional triangulation is a subset of the facets of this triangulation, together with their edges and vertices.
The concept SurfaceMeshComplex_2InTriangulation_3
is particularly suited to handle surface meshes obtained as the restriction to a surface of a three dimensional Delaunay triangulation. A model of this concept is a type to be plugged as first template parameter in the function template CGAL::make_surface_mesh()
.
CGAL::make_surface_mesh()
Types | |
| |
enum | Face_status { NOT_IN_COMPLEX, BOUNDARY, REGULAR, SINGULAR } |
A type to describe the status of a face (facet, edge, or vertex) with respect to the 2D pure complex. More... | |
typedef unspecified_type | Triangulation |
The type of the embedding 3D triangulation. More... | |
typedef Triangulation::Vertex_handle | Vertex_handle |
The type of the embedding triangulation vertex handles. More... | |
typedef Triangulation::Cell_handle | Cell_handle |
The type of the embedding triangulation cell handles. More... | |
typedef Triangulation::Facet | Facet |
The type of the embedding triangulation facets. More... | |
typedef Triangulation::Edge | Edge |
The type of the embedding triangulation edges. More... | |
typedef Triangulation::size_type | size_type |
Size type (an unsigned integral type) More... | |
typedef unspecified_type | Facet_iterator |
An iterator type to visit the facets of the 2D complex. More... | |
typedef unspecified_type | Edge_iterator |
An iterator type to visit the edges of the 2D complex. More... | |
typedef unspecified_type | Vertex_iterator |
An iterator type to visit vertices of the 2D complex. More... | |
typedef unspecified_type | Boundary_edges_iterator |
An iterator type to visit the boundary edges of the 2D complex. More... | |
Creation | |
SurfaceMeshComplex_2InTriangulation_3 (Triangulation &t3) | |
Builds an empty 2D complex embedded in the triangulation t3 More... | |
Member access | |
Triangulation & | triangulation () |
Returns the reference to the triangulation. More... | |
Modifications | |
void | add_to_complex (Facet f) |
Adds facet f to the 2D complex. More... | |
void | add_to_complex (Cell_handle c, int i) |
Adds facet (c,i) to the 2D complex. More... | |
void | remove_from_complex (Facet f) |
Removes facet f from the 2D complex. More... | |
void | remove_from_complex (Cell_handle c, int i) |
Removes facet (c,i) from the 2D complex. More... | |
Queries | |
Queries on the status of individual face with respect to the 2D complex. | |
size_type | number_of_facets () const |
Returns the number of facets that belong to the 2D complex. More... | |
Face_status | face_status (Facet f) |
Returns the status of the facet f with respect to the 2D complex. More... | |
Face_status | face_status (Cell_handle c, int i) |
Returns the status of the facet (c,i) with respect to the 2D complex. More... | |
Face_status | face_status (Edge e) |
Returns the status of edge e in the 2D complex. More... | |
Face_status | face_status (Cell_handle c, int i, int j) |
Returns the status of edge (c,i,j) in the 2D complex. More... | |
Face_status | face_status (Vertex_handle v) |
Returns the status of vertex v in the 2D complex. More... | |
bool | is_in_complex (Facet f) |
Returns true , if the facet f belongs to the 2D complex. More... | |
bool | is_in_complex (Cell_handle c, int i) |
Returns true , if the facet (c,i) belongs to the 2D complex. More... | |
bool | is_in_complex (Edge e) |
Returns true , if the edge e belongs to the 2D complex. More... | |
bool | is_in_complex (Cell_handle c, int i, int j) |
Returns true , if the edge (c,i,j) belongs to the 2D complex. More... | |
bool | is_in_complex (Vertex_handle v) |
Returns true , if the vertex v belongs to the 2D complex. More... | |
bool | is_regular_or_boundary_for_vertices (Vertex_handle v) |
Returns true if the status of vertex v is REGULAR or BOUNDARY . More... | |
Traversal of the complex | |
The data structure provides iterators to visit the facets, edges and vertices of the complex. All those iterators are bidirectional and non mutable. | |
Facet_iterator | facets_begin () |
Returns an iterator with value type Facet to visit the facets of the 2D complex. More... | |
Facet_iterator | facets_end () |
Returns the past the end iterator for the above iterator. More... | |
Edge_iterator | edges_begin () |
Returns an iterator with value type Edge to visit the edges of the 2D complex which are not isolated. More... | |
Edge_iterator | edges_end () |
Returns the past the end iterator for the above iterator. More... | |
Boundary_edges_iterator | boundary_edges_begin () |
Returns an iterator with value type Edge to visit the boundary edges of the complex. More... | |
Boundary_edges_iterator | boundary_edges_end () |
Returns the past the end iterator for the above iterator. More... | |
Vertex_iterator | vertices_begin () |
Returns an iterator with value type Vertex_handle to visit the vertices of the 2D complex. More... | |
Vertex_iterator | vertices_end () |
Returns the past the end iterator for the above iterator. More... | |
template<class OutputIterator > | |
OutputIterator | incident_facets (Vertex_handle v, OutputIterator facets) |
Copies the facets of the complex incident to v to the output iterator facets . More... | |
The following function is the basic function to walk on the 2D complex | |
Facet | neighbor (Facet f, int j) |
Returns the facet of the complex which is the neighbor of the facet f opposite to the vertex with index j of f . More... | |
Facet | neighbor (Cell_handle c, int i, int j) |
Returns the facet of the complex which is the neighbor of the facet f opposite to the vertex with index j of f . More... | |
typedef unspecified_type SurfaceMeshComplex_2InTriangulation_3::Boundary_edges_iterator |
An iterator type to visit the boundary edges of the 2D complex.
typedef Triangulation::Cell_handle SurfaceMeshComplex_2InTriangulation_3::Cell_handle |
The type of the embedding triangulation cell handles.
typedef Triangulation::Edge SurfaceMeshComplex_2InTriangulation_3::Edge |
The type of the embedding triangulation edges.
typedef unspecified_type SurfaceMeshComplex_2InTriangulation_3::Edge_iterator |
An iterator type to visit the edges of the 2D complex.
typedef Triangulation::Facet SurfaceMeshComplex_2InTriangulation_3::Facet |
The type of the embedding triangulation facets.
typedef unspecified_type SurfaceMeshComplex_2InTriangulation_3::Facet_iterator |
An iterator type to visit the facets of the 2D complex.
typedef Triangulation::size_type SurfaceMeshComplex_2InTriangulation_3::size_type |
Size type (an unsigned integral type)
typedef unspecified_type SurfaceMeshComplex_2InTriangulation_3::Triangulation |
The type of the embedding 3D triangulation.
Must be a model of SurfaceMeshTriangulation_3
.
typedef Triangulation::Vertex_handle SurfaceMeshComplex_2InTriangulation_3::Vertex_handle |
The type of the embedding triangulation vertex handles.
typedef unspecified_type SurfaceMeshComplex_2InTriangulation_3::Vertex_iterator |
An iterator type to visit vertices of the 2D complex.
A type to describe the status of a face (facet, edge, or vertex) with respect to the 2D pure complex.
A NOT_IN_COMPLEX
face does not belong to the 2D complex. Facets can only be NOT_IN_COMPLEX
or REGULAR
depending on whether they belong to the 2D complex on not. Edges and vertices can be NOT_IN_COMPLEX
, BOUNDARY
, REGULAR
or SINGULAR
. An edge in the complex is BOUNDARY
, REGULAR
, or SINGULAR
, if it is incident to respectively 1, 2, or 3 or more facets in the complex. The status of a vertex is determined by the adjacency graph of the facets of the 2D complex incident to that vertex. The vertex of the 2D complex is BOUNDARY
, if this adjacency graph is a simple path, it is REGULAR
, if the adjacency graph is cyclic, and SINGULAR
in any other case.
Enumerator | |
---|---|
NOT_IN_COMPLEX | |
BOUNDARY | |
REGULAR | |
SINGULAR |
SurfaceMeshComplex_2InTriangulation_3::SurfaceMeshComplex_2InTriangulation_3 | ( | Triangulation & | t3 | ) |
Builds an empty 2D complex embedded in the triangulation t3
void SurfaceMeshComplex_2InTriangulation_3::add_to_complex | ( | Cell_handle | c, |
int | i | ||
) |
Adds facet (c,i)
to the 2D complex.
void SurfaceMeshComplex_2InTriangulation_3::add_to_complex | ( | Facet | f | ) |
Adds facet f
to the 2D complex.
Boundary_edges_iterator SurfaceMeshComplex_2InTriangulation_3::boundary_edges_begin | ( | ) |
Returns an iterator with value type Edge
to visit the boundary edges of the complex.
Boundary_edges_iterator SurfaceMeshComplex_2InTriangulation_3::boundary_edges_end | ( | ) |
Returns the past the end iterator for the above iterator.
Edge_iterator SurfaceMeshComplex_2InTriangulation_3::edges_begin | ( | ) |
Returns an iterator with value type Edge
to visit the edges of the 2D complex which are not isolated.
Edge_iterator SurfaceMeshComplex_2InTriangulation_3::edges_end | ( | ) |
Returns the past the end iterator for the above iterator.
Face_status SurfaceMeshComplex_2InTriangulation_3::face_status | ( | Cell_handle | c, |
int | i | ||
) |
Returns the status of the facet (c,i)
with respect to the 2D complex.
Face_status SurfaceMeshComplex_2InTriangulation_3::face_status | ( | Cell_handle | c, |
int | i, | ||
int | j | ||
) |
Returns the status of edge (c,i,j)
in the 2D complex.
Face_status SurfaceMeshComplex_2InTriangulation_3::face_status | ( | Edge | e | ) |
Returns the status of edge e
in the 2D complex.
Face_status SurfaceMeshComplex_2InTriangulation_3::face_status | ( | Facet | f | ) |
Returns the status of the facet f
with respect to the 2D complex.
Face_status SurfaceMeshComplex_2InTriangulation_3::face_status | ( | Vertex_handle | v | ) |
Returns the status of vertex v
in the 2D complex.
Facet_iterator SurfaceMeshComplex_2InTriangulation_3::facets_begin | ( | ) |
Returns an iterator with value type Facet
to visit the facets of the 2D complex.
Facet_iterator SurfaceMeshComplex_2InTriangulation_3::facets_end | ( | ) |
Returns the past the end iterator for the above iterator.
OutputIterator SurfaceMeshComplex_2InTriangulation_3::incident_facets | ( | Vertex_handle | v, |
OutputIterator | facets | ||
) |
Copies the facets of the complex incident to v
to the output iterator facets
.
Returns the resulting output iterator.
c2t3.triangulation().dimension() == 3
, v != Vertex_handle()
, c2t3.triangulation().is_vertex(v)
. bool SurfaceMeshComplex_2InTriangulation_3::is_in_complex | ( | Cell_handle | c, |
int | i | ||
) |
Returns true
, if the facet (c,i)
belongs to the 2D complex.
bool SurfaceMeshComplex_2InTriangulation_3::is_in_complex | ( | Cell_handle | c, |
int | i, | ||
int | j | ||
) |
Returns true
, if the edge (c,i,j)
belongs to the 2D complex.
bool SurfaceMeshComplex_2InTriangulation_3::is_in_complex | ( | Edge | e | ) |
Returns true
, if the edge e
belongs to the 2D complex.
bool SurfaceMeshComplex_2InTriangulation_3::is_in_complex | ( | Facet | f | ) |
Returns true
, if the facet f
belongs to the 2D complex.
bool SurfaceMeshComplex_2InTriangulation_3::is_in_complex | ( | Vertex_handle | v | ) |
Returns true
, if the vertex v
belongs to the 2D complex.
bool SurfaceMeshComplex_2InTriangulation_3::is_regular_or_boundary_for_vertices | ( | Vertex_handle | v | ) |
Returns true if the status of vertex v
is REGULAR
or BOUNDARY
.
v
are REGULAR
or BOUNDARY
. Facet SurfaceMeshComplex_2InTriangulation_3::neighbor | ( | Cell_handle | c, |
int | i, | ||
int | j | ||
) |
Returns the facet of the complex which is the neighbor of the facet f
opposite to the vertex with index j
of f
.
See above.
Returns the facet of the complex which is the neighbor of the facet f
opposite to the vertex with index j
of f
.
The vertices of the facet f = (cell c, i)
are numbered (0,1,2) (according to the vertex_triple_index(i,j)
member function of Triangulation_3
) in such a way that facet f
is oriented by the outward normal of tetraedra c
. If there is no such neighbor, or if the edge is singular the functions returns Facet()
.
size_type SurfaceMeshComplex_2InTriangulation_3::number_of_facets | ( | ) | const |
Returns the number of facets that belong to the 2D complex.
void SurfaceMeshComplex_2InTriangulation_3::remove_from_complex | ( | Cell_handle | c, |
int | i | ||
) |
Removes facet (c,i)
from the 2D complex.
void SurfaceMeshComplex_2InTriangulation_3::remove_from_complex | ( | Facet | f | ) |
Removes facet f
from the 2D complex.
Triangulation& SurfaceMeshComplex_2InTriangulation_3::triangulation | ( | ) |
Returns the reference to the triangulation.
Vertex_iterator SurfaceMeshComplex_2InTriangulation_3::vertices_begin | ( | ) |
Returns an iterator with value type Vertex_handle
to visit the vertices of the 2D complex.
Vertex_iterator SurfaceMeshComplex_2InTriangulation_3::vertices_end | ( | ) |
Returns the past the end iterator for the above iterator.