|
CGAL 4.7 - 3D Surface Mesh Generation
|
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 | |
Builds a 2D complex embedded in the triangulation The type | |
| 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... | |
| 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 | ( | Facet | f | ) |
Adds facet f to the 2D complex.
| void SurfaceMeshComplex_2InTriangulation_3::add_to_complex | ( | Cell_handle | c, |
| int | i | ||
| ) |
Adds facet (c,i) 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 | ( | Facet | f | ) |
Returns the status of the facet f with respect to the 2D complex.
| 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 | ( | Edge | e | ) |
Returns the status of edge e in 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 | ( | 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 | ( | Facet | f | ) |
Returns true, if the facet f belongs to the 2D complex.
| 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 | ( | Edge | e | ) |
Returns true, if the edge e 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 | ( | 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. 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().
| 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.
| 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 | ( | Facet | f | ) |
Removes facet f from the 2D complex.
| void SurfaceMeshComplex_2InTriangulation_3::remove_from_complex | ( | Cell_handle | c, |
| int | i | ||
| ) |
Removes facet (c,i) 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.