template<class IGT, class Polyhedron = typename Mesh_polyhedron_3<IGT_>::type>
class CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >
The class Polyhedral_mesh_domain_with_features_3 implements a domain whose boundary is a simplicial polyhedral surface.
This surface must be free of intersections. It can either be closed, included inside another polyhedral surface which is closed and free of intersections, or open. In the latter case, the meshing process will only take care of the quality of the 1D (features and boundaries) and 2D (surfaces) components of the mesh.
It is a model of the concept MeshDomainWithFeatures_3. It also provides a member function to automatically detect sharp features and boundaries from the input polyhedral surface(s).
- Note
- When the given surface(s) are not closed, the surface only will be meshed. It is then recommended to use the parameter parameters::surface_only() to speedup the meshing process.
- Template Parameters
-
| IGT | stands for a geometric traits class providing the types and functors required to implement the intersection tests and intersection computations for polyhedral boundary surfaces. This parameter has to be instantiated with a model of the concept IntersectionGeometricTraits_3. |
| Polyhedron | stands for the type of the input polyhedral surface(s), model of FaceListGraph. |
- Is model of
MeshDomainWithFeatures_3
- See also
- CGAL::Mesh_domain_with_polyline_features_3<MD>
-
CGAL::Polyhedral_mesh_domain_3<Polyhedron,IGT>
-
CGAL::Mesh_polyhedron_3<IGT>
- Examples
- Mesh_3/mesh_polyhedral_domain_with_edge_distance.cpp, Mesh_3/mesh_polyhedral_domain_with_features.cpp, Mesh_3/mesh_polyhedral_domain_with_features_sizing.cpp, Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp, Mesh_3/mesh_polyhedral_domain_with_lipschitz_sizing.cpp, Mesh_3/mesh_polyhedral_domain_with_surface_inside.cpp, and Mesh_3/remesh_polyhedral_surface.cpp.
|
| template<typename InputIterator> |
| void | add_features (InputIterator first, InputIterator end) |
| | adds 1-dimensional features in the domain.
|
| template<typename InputIterator, typename PolylinePMap, typename IncidentPatchesIndicesPMap> |
| void | add_features_and_incidences (InputIterator first, InputIterator end, PolylinePMap polyline_pmap, IncidentPatchesIndicesPMap incident_patches_indices_pmap) |
| | adds 1-dimensional features (curves) from the range [first, end) in the domain with their incidences with 2-dimensional features (patches) of the domain.
|
| template<typename OutputIterator> |
| OutputIterator | get_corners (OutputIterator out) const |
| | implements MeshDomainWithFeatures_3::get_corners().
|
| template<typename OutputIterator> |
| OutputIterator | get_curves (OutputIterator out) const |
| | implements MeshDomainWithFeatures_3::get_curves().
|
|
FT | curve_segment_length (const Point_3 &p, const Point_3 q, const Curve_index &curve_index, CGAL::Orientation orientation) const |
| | implements MeshDomainWithFeatures_3::curve_segment_length().
|
|
FT | curve_length (const Curve_index &curve_index) const |
| | implements MeshDomainWithFeatures_3::curve_length().
|
|
Point_3 | construct_point_on_curve (const Point_3 &starting_point, const Curve_index &curve_index, FT distance) const |
| | implements MeshDomainWithFeatures_3::construct_point_on_curve().
|
|
CGAL::Sign | distance_sign_along_loop (const Point_3 &p, const Point_3 &q, const Point_3 &r, const Curve_index &index) const |
| | implements MeshDomainWithFeatures_3::distance_sign_along_loop().
|
|
CGAL::Sign | distance_sign (const Point_3 &p, const Point_3 &q, const Curve_index &index) const |
| | implements MeshDomainWithFeatures_3::distance_sign().
|
|
bool | is_loop (const Curve_index &index) const |
| | implements MeshDomainWithFeatures_3::is_loop().
|
|
bool | is_curve_segment_covered (const Curve_index &index, CGAL::Orientation orientation, const Point_3 &c1, const Point_3 &c2, const FT sq_r1, const FT sq_r2) const |
| | implements MeshDomainWithFeatures_3::is_curve_segment_covered().
|
|
Index | index_from_surface_patch_index (const Surface_patch_index &index) const |
| | Returns the index to be stored in a vertex lying on the surface identified by index.
|
|
Index | index_from_subdomain_index (const Subdomain_index &index) const |
| | Returns the index to be stored in a vertex lying in the subdomain identified by index.
|
|
Index | index_from_curve_index (const Curve_index &index) const |
| | returns an Index from a Curve_index
|
|
Index | index_from_corner_index (const Corner_index &index) const |
| | returns an Index from a Corner_index
|
|
Surface_patch_index | surface_patch_index (const Index &index) const |
| | Returns the Surface_patch_index of the surface patch where lies a vertex with dimension 2 and index index.
|
|
Subdomain_index | subdomain_index (const Index &index) const |
| | Returns the index of the subdomain containing a vertex with dimension 3 and index index.
|
|
Curve_index | curve_index (const Index &index) const |
| | returns a Curve_index from an Index
|
|
Corner_index | corner_index (const Index &index) const |
| | returns a Corner_index from an Index
|
template<class IGT, class Polyhedron = typename Mesh_polyhedron_3<IGT_>::type>
Constructor from a polyhedral surface.
No feature detection is done at this level. Note that a copy of polyhedron will be done. The polyhedron polyhedron must be free of intersections. If polyhedron is closed, its inside will be meshed, otherwise there will be no interior and only the surface will be meshed.
template<class IGT, class Polyhedron = typename Mesh_polyhedron_3<IGT_>::type>
Constructor from a polyhedral surface, and a bounding polyhedral surface.
The first polyhedron should be entirely included inside bounding_polyhedron, which has to be closed and free of intersections. Using this constructor enables to mesh a polyhedral surface which is not closed, or has holes. The inside of bounding_polyhedron will be meshed.
template<class IGT, class Polyhedron = typename Mesh_polyhedron_3<IGT_>::type>
template<typename InputPolyhedraPtrIterator>
Constructor from a sequence of polyhedral surfaces, without a bounding surface.
The domain will always answer false to is_in_domain() queries.
- Template Parameters
-
| InputPolyhedraPtrIterator | must be a model of ForwardIterator with value type Polyhedron* |
- Parameters
-
| begin | iterator for a sequence of pointers to polyhedra |
| end | iterator for a sequence of pointers to polyhedra |