|
CGAL 6.1 - 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::Surface_mesh_complex_2_in_triangulation_3<Tr> 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. | |
| typedef Triangulation::Vertex_handle | Vertex_handle |
| The type of the embedding triangulation vertex handles. | |
| typedef Triangulation::Cell_handle | Cell_handle |
| The type of the embedding triangulation cell handles. | |
| typedef Triangulation::Facet | Facet |
| The type of the embedding triangulation facets. | |
| typedef Triangulation::Edge | Edge |
| The type of the embedding triangulation edges. | |
| typedef Triangulation::size_type | size_type |
| Size type (an unsigned integral type) | |
| typedef unspecified_type | Facet_iterator |
| An iterator type to visit the facets of the 2D complex. | |
| typedef unspecified_type | Edge_iterator |
| An iterator type to visit the edges of the 2D complex. | |
| typedef unspecified_type | Vertex_iterator |
| An iterator type to visit vertices of the 2D complex. | |
| typedef unspecified_type | Boundary_edges_iterator |
| An iterator type to visit the boundary edges of the 2D complex. | |
Creation | |
| SurfaceMeshComplex_2InTriangulation_3 (Triangulation &t3) | |
Builds an empty 2D complex embedded in the triangulation t3 | |
Member access | |
/** | |
| Triangulation & | triangulation () |
| Returns the reference to the triangulation. | |
Modifications | |
| void | add_to_complex (Facet f) |
Adds facet f to the 2D complex. | |
| void | add_to_complex (Cell_handle c, int i) |
Adds facet (c,i) to the 2D complex. | |
| void | remove_from_complex (Facet f) |
Removes facet f from the 2D complex. | |
| void | remove_from_complex (Cell_handle c, int i) |
Removes facet (c,i) from the 2D complex. | |
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. | |
| Face_status | face_status (Facet f) |
Returns the status of the facet f with respect to the 2D complex. | |
| Face_status | face_status (Cell_handle c, int i) |
Returns the status of the facet (c,i) with respect to the 2D complex. | |
| Face_status | face_status (Edge e) |
Returns the status of edge e in the 2D complex. | |
| Face_status | face_status (Cell_handle c, int i, int j) |
Returns the status of edge (c,i,j) in the 2D complex. | |
| Face_status | face_status (Vertex_handle v) |
Returns the status of vertex v in the 2D complex. | |
| bool | is_in_complex (Facet f) |
Returns true, if the facet f belongs to the 2D complex. | |
| bool | is_in_complex (Cell_handle c, int i) |
Returns true, if the facet (c,i) belongs to the 2D complex. | |
| bool | is_in_complex (Edge e) |
Returns true, if the edge e belongs to the 2D complex. | |
| bool | is_in_complex (Cell_handle c, int i, int j) |
Returns true, if the edge (c,i,j) belongs to the 2D complex. | |
| bool | is_in_complex (Vertex_handle v) |
Returns true, if the vertex v belongs to the 2D complex. | |
| bool | is_regular_or_boundary_for_vertices (Vertex_handle v) |
Returns true if the status of vertex v is REGULAR or BOUNDARY. | |
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. | |
| Facet_iterator | facets_end () |
| Returns the past the end iterator for the above iterator. | |
| Edge_iterator | edges_begin () |
Returns an iterator with value type Edge to visit the edges of the 2D complex which are not isolated. | |
| Edge_iterator | edges_end () |
| Returns the past the end iterator for the above iterator. | |
| Boundary_edges_iterator | boundary_edges_begin () |
Returns an iterator with value type Edge to visit the boundary edges of the complex. | |
| Boundary_edges_iterator | boundary_edges_end () |
| Returns the past the end iterator for the above iterator. | |
| Vertex_iterator | vertices_begin () |
Returns an iterator with value type Vertex_handle to visit the vertices of the 2D complex. | |
| Vertex_iterator | vertices_end () |
| Returns the past the end iterator for the above iterator. | |
| 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. | |
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. | |
| 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. | |
The type of the embedding 3D triangulation.
Must be a model of SurfaceMeshTriangulation_3.
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 | |
| 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_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().