CGAL 5.0.2  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 1dimensional features in the domain. More...  
void  add_features_and_incidences (InputIterator first, InputIterator end, PolylinePMap polyline_pmap, IncidentPatchesIndicesPMap incident_patches_indices_pmap) 
Add 1dimensional features (curves) from the range [first, end) in the domain with their incidences with 2dimensional 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.