\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.9 - 3D Mesh Generation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL::Polyhedral_mesh_domain_with_features_3< IGT > Class Template Reference

#include <CGAL/Polyhedral_mesh_domain_with_features_3.h>

Inherits from

CGAL::Mesh_domain_with_polyline_features_3< CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT > >.

Definition

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).

Template Parameters
IGTstands 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.
Is Model Of:
MeshDomainWithFeatures_3
See Also
CGAL::Mesh_domain_with_polyline_features_3<MeshDomain>
CGAL::Polyhedral_mesh_domain_3<Polyhedron,IGT,TriangleAccessor>
CGAL::Mesh_polyhedron_3<IGT>
Examples:
Mesh_3/mesh_polyhedral_domain_with_features.cpp, and Mesh_3/remesh_polyhedral_surface.cpp.

Types

typedef unspecified_type FT
 Numerical type.
 

Creation

template<typename Polyhedron >
 Polyhedral_mesh_domain_with_features_3 (Polyhedron bounding_polyhedron)
 Constructs a Polyhedral_mesh_domain_with_features_3 from a polyhedral surface of type Polyhedron. More...
 
 Polyhedral_mesh_domain_with_features_3 (const std::string &filename)
 Constructs a Polyhedral_mesh_domain_with_features_3 from an off file. More...
 
template<typename Polyhedron >
 Polyhedral_mesh_domain_with_features_3 (Polyhedron polyhedron, Polyhedron bounding_polyhedron)
 Constructs a Polyhedral_mesh_domain_with_features_3 from a polyhedral surface, and a bounding polyhedral surface. More...
 

Operations

void detect_features (FT angle_bound=120)
 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 int Corner_index
 Corner_index type.
 
typedef int Curve_segment_index
 Curve_segment_index type.
 
- 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 (T...t)
 Constructor. More...
 
void add_features (InputIterator begin, InputIterator beyond)
 Add 1-dimensional features in the domain. More...
 
void add_features_and_incidences (InputIterator begin, InputIterator beyond)
 Add 1-dimensional features in the domain with their incidences with 2-dimensional features of the domain. More...
 
- Public Member Functions inherited from CGAL::Polyhedral_mesh_domain_3< CGAL::Mesh_polyhedron_3< IGT >::type, IGT >
 Polyhedral_mesh_domain_3 (CGAL::Mesh_polyhedron_3< IGT >::typebounding_polyhedron)
 Construction from a bouding polyhedral surface which should be closed, and free of intersections. More...
 
 Polyhedral_mesh_domain_3 (CGAL::Mesh_polyhedron_3< IGT >::typepolyhedron, CGAL::Mesh_polyhedron_3< IGT >::typebounding_polyhedron)
 Construction from a polyhedral surface, and a bounding polyhedral surface,. More...
 

Constructor & Destructor Documentation

template<typename IGT >
template<typename Polyhedron >
CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::Polyhedral_mesh_domain_with_features_3 ( 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.

template<typename IGT >
CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::Polyhedral_mesh_domain_with_features_3 ( const std::string &  filename)

Constructs a Polyhedral_mesh_domain_with_features_3 from an off file.

No feature detection is done at this level.

template<typename IGT >
template<typename Polyhedron >
CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::Polyhedral_mesh_domain_with_features_3 ( Polyhedron  polyhedron,
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.

Member Function Documentation

template<typename IGT >
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().

template<typename IGT >
void CGAL::Polyhedral_mesh_domain_with_features_3< IGT >::detect_features ( FT  angle_bound = 120)

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.