CGAL 6.0 - 3D Mesh Generation
|
#include <CGAL/Polyhedral_mesh_domain_with_features_3.h>
CGAL::Mesh_domain_with_polyline_features_3< MD >.
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).
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 . |
MeshDomainWithFeatures_3
CGAL::Mesh_domain_with_polyline_features_3<MD>
CGAL::Polyhedral_mesh_domain_3<Polyhedron,IGT>
CGAL::Mesh_polyhedron_3<IGT>
Creation | |
Polyhedral_mesh_domain_with_features_3 (const Polyhedron &bounding_polyhedron) | |
Constructor from a polyhedral surface. | |
Polyhedral_mesh_domain_with_features_3 (const std::string &filename) | |
Polyhedral_mesh_domain_with_features_3 (const Polyhedron &polyhedron, const Polyhedron &bounding_polyhedron) | |
Constructor from a polyhedral surface, and a bounding polyhedral surface. | |
template<typename InputPolyhedraPtrIterator > | |
Polyhedral_mesh_domain_with_features_3 (InputPolyhedraPtrIterator begin, InputPolyhedraPtrIterator end) | |
Constructor from a sequence of polyhedral surfaces, without a bounding surface. | |
template<typename InputPolyhedraPtrIterator > | |
Polyhedral_mesh_domain_with_features_3 (InputPolyhedraPtrIterator begin, InputPolyhedraPtrIterator end, const Polyhedron &bounding_polyhedron) | |
Constructor from a sequence of polyhedral surfaces, and a bounding polyhedral surface. | |
Operations | |
void | detect_features (FT angle_bound=FT(60)) |
detects sharp features and boundaries of the internal bounding polyhedron (and the potential internal polyhedra) and inserts them as features of the domain. | |
void | detect_borders () |
detects border edges of the bounding polyhedron and inserts them as features of the domain. | |
Additional Inherited Members | |
![]() | |
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 |
![]() | |
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 | |
CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >::Polyhedral_mesh_domain_with_features_3 | ( | const Polyhedron & | bounding_polyhedron | ) |
Constructor from a polyhedral surface.
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. The interior of bounding_polyhedron
will be meshed.
CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >::Polyhedral_mesh_domain_with_features_3 | ( | const std::string & | filename | ) |
Polyhedron
and call the constructor above. CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >::Polyhedral_mesh_domain_with_features_3 | ( | const Polyhedron & | polyhedron, |
const Polyhedron & | bounding_polyhedron | ||
) |
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.
CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >::Polyhedral_mesh_domain_with_features_3 | ( | InputPolyhedraPtrIterator | begin, |
InputPolyhedraPtrIterator | end | ||
) |
Constructor from a sequence of polyhedral surfaces, without a bounding surface.
The domain will always answer false
to is_in_domain()
queries.
InputPolyhedraPtrIterator | must be a model of ForwardIterator with value type Polyhedron* |
begin | iterator for a sequence of pointers to polyhedra |
end | iterator for a sequence of pointers to polyhedra |
CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >::Polyhedral_mesh_domain_with_features_3 | ( | InputPolyhedraPtrIterator | begin, |
InputPolyhedraPtrIterator | end, | ||
const Polyhedron & | bounding_polyhedron | ||
) |
Constructor from a sequence of polyhedral surfaces, and a bounding polyhedral surface.
InputPolyhedraPtrIterator | must be a model of ForwardIterator with value type Polyhedron* |
begin | iterator for a sequence of pointers to polyhedra |
end | iterator for a sequence of pointers to polyhedra |
bounding_polyhedron | the bounding surface |
void CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >::detect_borders | ( | ) |
detects border edges of the bounding polyhedron and inserts them as features of the domain.
This function should only be called alone, and not before or after detect_features()
.
void CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >::detect_features | ( | FT | angle_bound = FT(60) | ) |
detects sharp features and boundaries of the internal bounding polyhedron (and the potential internal polyhedra) 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 a 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. |