CGAL 5.0.1 - 3D Mesh Generation
|
#include <CGAL/Polyhedral_mesh_domain_with_features_3.h>
The class Polyhedral_mesh_domain_with_features_3
implements a domain whose boundary is a simplicial polyhedral surface.
This surface must be free of intersection. It can either be closed, included inside another polyhedral surface which is closed and free of intersection, 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).
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 . |
CGAL::Mesh_domain_with_polyline_features_3<MD>
CGAL::Polyhedral_mesh_domain_3<Polyhedron,IGT,TriangleAccessor>
CGAL::Mesh_polyhedron_3<IGT>
Types | |
typedef unspecified_type | FT |
Numerical type. | |
Creation | |
template<typename Polyhedron > | |
Polyhedral_mesh_domain_with_features_3 (const Polyhedron &bounding_polyhedron) | |
Constructs a Polyhedral_mesh_domain_with_features_3 from a polyhedral surface of type Polyhedron . More... | |
template<typename Polyhedron > | |
Polyhedral_mesh_domain_with_features_3 (const Polyhedron &polyhedron, const Polyhedron &bounding_polyhedron) | |
Constructs a Polyhedral_mesh_domain_with_features_3 from a polyhedral surface, and a bounding polyhedral surface. More... | |
Polyhedral_mesh_domain_with_features_3 (const std::string &filename) | |
Operations | |
void | detect_features (FT angle_bound=60) |
Detects sharp features and boundaries of the internal bounding polyhedron (and the potential internal polyhedron) and inserts them as features of the domain. More... | |
void | detect_borders () |
Detects border edges of the bounding polyhedron and inserts them as features of the domain. More... | |
Additional Inherited Members | |
Public Types inherited from CGAL::Mesh_domain_with_polyline_features_3< CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > > | |
typedef CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > ::Surface_patch_index | Surface_patch_index |
typedef CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > ::Subdomain_index | Subdomain_index |
typedef int | Curve_index |
typedef int | Corner_index |
typedef Mesh_3::internal::Index_generator_with_features< typename CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > ::Subdomain_index, Surface_patch_index, Curve_index, Corner_index >::type | Index |
typedef CGAL::Tag_true | Has_features |
typedef CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > ::R::FT | FT |
Public Member Functions inherited from CGAL::Mesh_domain_with_polyline_features_3< CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > > | |
Mesh_domain_with_polyline_features_3 () | |
Mesh_domain_with_polyline_features_3 (const T1 &o1, typename boost::disable_if< boost::is_same< T1, Self >, CGAL::Tag_false >::type *=0) | |
Mesh_domain_with_polyline_features_3 (const T1 &o1, const T2 &o2, const T &...o) | |
void | add_features (InputIterator first, InputIterator end) |
Add 1-dimensional features in the domain. More... | |
void | add_features_and_incidences (InputIterator first, InputIterator end, PolylinePMap polyline_pmap, IncidentPatchesIndicesPMap incident_patches_indices_pmap) |
Add 1-dimensional features (curves) from the range [first, end) in the domain with their incidences with 2-dimensional features (patches) of the domain. More... | |
OutputIterator | get_corners (OutputIterator out) const |
Implements MeshDomainWithFeatures_3::get_corners() . More... | |
OutputIterator | get_curves (OutputIterator out) const |
Implements MeshDomainWithFeatures_3::get_curves() . More... | |
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 | |
Public Member Functions inherited from CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > | |
Polyhedral_mesh_domain_3 (const CGAL::Mesh_polyhedron_3< IGT >::type &bounding_polyhedron) | |
Construction from a bouding polyhedral surface which must be closed, and free of intersections. More... | |
Polyhedral_mesh_domain_3 (const CGAL::Mesh_polyhedron_3< IGT >::type &polyhedron, const CGAL::Mesh_polyhedron_3< IGT >::type &bounding_polyhedron) | |
Construction from a polyhedral surface, and a bounding polyhedral surface,. More... | |
CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::Polyhedral_mesh_domain_with_features_3 | ( | const Polyhedron & | bounding_polyhedron | ) |
Constructs a Polyhedral_mesh_domain_with_features_3
from a polyhedral surface of type Polyhedron
.
The only requirement on type Polyhedron
is that CGAL::Mesh_polyhedron_3<IGT>::type
should be constructible from Polyhedron
. No feature detection is done at this level. Note that a copy of bounding_polyhedron
will be done. The polyhedron bounding_polyhedron
has to be closed and free of intersections. Its interior of bounding_polyhedron
will be meshed.
CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::Polyhedral_mesh_domain_with_features_3 | ( | const Polyhedron & | polyhedron, |
const Polyhedron & | bounding_polyhedron | ||
) |
Constructs a Polyhedral_mesh_domain_with_features_3
from a polyhedral surface, and a bounding polyhedral surface.
CGAL::Mesh_polyhedron_3<IGT>::type
should be constructible from Polyhedron
. The first polyhedron should be entirely included inside bounding_polyhedron
, which has to be closed and free of intersections. Using this constructor allows to mesh a polyhedral surface which is not closed, or has holes. The inside of bounding_polyhedron
will be meshed.
CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::Polyhedral_mesh_domain_with_features_3 | ( | const std::string & | filename | ) |
Polyhedral_mesh_domain_with_features_3
from an off file.No feature detection is done at this level. Users must read the file into a Polyhedron_3
and call the constructor above.
void CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::detect_borders | ( | ) |
Detects border edges of the bounding polyhedron and inserts them as features of the domain.
This function should be called alone only, and not before or after detect_features()
.
void CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::detect_features | ( | FT | angle_bound = 60 | ) |
Detects sharp features and boundaries of the internal bounding polyhedron (and the potential internal polyhedron) and inserts them as features of the domain.
angle_bound
gives the maximum angle (in degrees) between the two normal vectors of adjacent triangles. For an edge of the polyhedron, if the angle between the two normal vectors of its incident facets is bigger than the given bound, then the edge is considered as a feature edge.