MeshComplexWithFeatures_3InTriangulation_3
Definition
The concept MeshComplexWithFeatures_3InTriangulation_3 describes a data structure
to represent and maintain a 3D complex embedded in a 3D triangulation.
The concept MeshComplexWithFeatures_3InTriangulation_3 refines the minimal concept
MeshComplex_3InTriangulation_3, designed to represent
3D complexes having only faces with dimension 2 and 3.
Therefore, the concept MeshComplexWithFeatures_3InTriangulation_3 may represent embedded complexes
including features, i.e. faces with dimension 0 and 1.
The data structure includes a 3D triangulation which is itself a 3D complex.
To distinguish the faces of the embedded 3D complex from the
faces of the triangulation,
we call
respectively subdomains,
surface patches
curve segments and corners the faces
of the complex with respective dimensions 3, 2, 1 and 0.
The triangulations faces are called respectively
cells, facets, edges and vertices.
Each subdomain of the embedded 3D complex is a union of
triangulation cells.
Likewise, each surface patch is a union of
triangulation facets and each curve segment is a union of triangulation edges.
The corners form a subset of the triangulation vertices.
Note that subdomains, surface patches and and curved segments are not
necessarily connected. Likewise each corner may be related to several
mesh vertices.
Triangulation facets that belong to some
surface patch are called surface facets.
The concept MeshComplexWithFeatures_3InTriangulation_3 allows us to mark and retrieve the
cells of the triangulation belonging to the subdomains,
the facets of the triangulation belonging to surface patches,
the edges belonging to curve segments and the vertices that are corners of the embedded complex.
Within the mesh generation functions,
the concept MeshComplexWithFeatures_3InTriangulation_3 is the concept describing
the data structure used to maintain the current approximation of the input domain.
At the end of the meshing process, the data structure encodes the resulting mesh.
In particular, each subdomain (resp. surface patch) of the input domain
is then approximated by a subdomain (resp. a surface patch) of the embedded complex
while the curve segments and corners represent the 1 and 0-dimensional features
of the input complex.
Refines
MeshComplex_3InTriangulation_3
Types
MeshComplexWithFeatures_3InTriangulation_3::Curve_segment_index
|
|
A type for indexes of curve segment. The type must match the type
MeshDomainWithFeatures_3::Curve_segment_index
when the concept is used for mesh generation.
|
|
MeshComplexWithFeatures_3InTriangulation_3::Corner_index
|
|
A type for indexes of corners.
The type must match the type
MeshDomainWithFeatures_3::Corner_index
when the concept is used for mesh generation.
|
|
MeshComplexWithFeatures_3InTriangulation_3::Edges_in_complex_iterator
|
|
An iterator type to visit the edges
of the triangulation belonging to curve segments.
|
MeshComplexWithFeatures_3InTriangulation_3::Vertices_in_complex_iterator
|
|
An iterator type to visit the vertices
of the triangulation that are corners of the embedded complex.
|
Modifiers
void
|
c3t3.add_to_complex ( Edge e, Curve_segment_index index)
|
| |
Adds edge e as an element of the curve segment with index index.
|
void
|
c3t3.add_to_complex ( Vertex_handle v1, Vertex_handle v2, Curve_segment_index index)
|
| |
Same as above with e=(v1,v2).
|
|
void
|
c3t3.add_to_complex ( Vertex_handle v, Corner_index index)
|
| |
Marks vertex v as a corner with index index.
|
|
void
|
c3t3.remove_from_complex ( Edge e)
|
| |
Removes edge e from the embedded complex.
|
void
|
c3t3.remove_from_complex ( Vertex_handle v1, Vertex_handle v2)
|
| |
Same as above with e=(v1,v2).
|
|
void
|
c3t3.remove_from_complex ( Vertex_handle v)
|
| |
Removes vertex v from the embedded complex.
|
Queries
Queries on the 1D complex and 0D complex.
size_type
|
c3t3.number_of_edges () const
|
Returns the number of edges which belong to curve segments.
|
size_type
|
c3t3.number_of_edges ( Curve_segment_index index) const
|
| |
Returns the number of edges which belong to curve segment with index index.
|
size_type
|
c3t3.number_of_corners () const
|
Returns the number of vertices which are corners of the complex.
|
size_type
|
c3t3.number_of_corners ( Corner_index index) const
|
| |
Returns the number of vertices which are corners of the complex with index index.
|
|
bool
|
c3t3.is_in_complex ( Edge e) const
|
| |
Returns true
iff edge e belongs to some curve segment.
|
bool
|
c3t3.is_in_complex ( Vertex_handle v1, Vertex_handle v2) const
|
| |
Same as above with e=(v1,v2).
|
bool
|
c3t3.is_in_complex ( Vertex_handle v) const
|
| |
Returns true if vertex v is a corner.
|
|
Curve_segment_index
|
c3t3.curve_segment_index ( Edge e)
|
| |
Returns Curve_segment_index of edge e. The default Curve_segment_index
value is returned if edge e does not belong to any curve segment.
|
Curve_segment_index
|
c3t3.curve_segment_index ( Vertex_handle v1, Vertex_handle v2)
|
| |
Same as above with e=(v1,v2).
|
Corner_index
|
c3t3.corner_index ( Vertex_handle v)
|
| |
Returns Corner_index of vertex v. The default Corner_index value
is returned if vertex v is not a corner of the complex.
|
Traversal of the complex
Edges_in_complex_iterator
|
c3t3.edges_in_complex_begin () const
|
| |
Returns an Edges_in_complex_iterator to visit the edges of the triangulation belonging to curve segments.
|
Edge_in_complex_iterator
|
c3t3.edges_in_complex_end () const
|
| |
Returns the past-the-end iterator for the above iterator.
|
Edges_in_complex_iterator
|
c3t3.edges_in_complex_begin ( Curve_segment_index index) const
|
| |
Returns an Edges_in_complex_iterator to visit the edges of the triangulation belonging to curve segments
of index index.
|
Edge_in_complex_iterator
|
c3t3.edges_in_complex_end ( Curve_segment_index index) const
|
| |
Returns the past-the-end iterator for the above iterator.
|
|
template <typename OutputIterator>
|
OutputIterator
|
c3t3.adjacent_vertices_in_complex ( Vertex_handle v, OutputIterator out) const
|
| |
Fills out with the vertices of the triangulation that are adjacent to vertex v
through an edge belonging to some curve segment.
The value type of out must be std::pair<Vertex_handle,Curve_segment_index>.
Precondition: | c3t3.in_dimension(v) < 2 |
|
|
Vertices_in_complex_iterator
|
c3t3.vertices_in_complex_begin () const
|
| |
Returns a Vertices_in_complex_iterator to visit the vertices of the triangulation
that are corners.
|
Vertices_in_complex_iterator
|
c3t3.vertices_in_complex_end () const
|
| |
Returns the past-the-end iterator for the above iterator.
|
Vertices_in_complex_iterator
|
c3t3.vertices_in_complex_begin ( Corner_index index) const
|
| |
Returns a Vertices_in_complex_iterator to visit the vertices of the triangulation
that are corners of index index.
|
Vertices_in_complex_iterator
|
c3t3.vertices_in_complex_end ( Corner_index index) const
|
| |
Returns the past-the-end iterator for the above iterator.
|
Has Models
Mesh_complex_3_in_triangulation_3<Tr,CornerIndex,CurveSegmentIndex>
See Also
MeshComplex_3InTriangulation_3
MeshDomainWithFeatures_3