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).
- 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.
|
Public Types inherited from CGAL::Mesh_domain_with_polyline_features_3< MD > |
typedef MD::Surface_patch_index | Surface_patch_index |
|
typedef MD::Subdomain_index | Subdomain_index |
|
typedef int | Curve_index |
|
typedef int | Corner_index |
|
typedef unspecified_type | Index |
|
typedef CGAL::Tag_true | Has_features |
|
typedef MD::R::FT | FT |
|
Public Member Functions inherited from CGAL::Mesh_domain_with_polyline_features_3< MD > |
template<typename ... T> |
| Mesh_domain_with_polyline_features_3 (const T &...o) |
|
| Mesh_domain_with_polyline_features_3 (const Mesh_domain_with_polyline_features_3 &)=default |
|
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, 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.