\( \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.14 - 3D Mesh Generation
CGAL::Mesh_domain_with_polyline_features_3< MeshDomain_3 > Class Template Reference

#include <CGAL/Mesh_domain_with_polyline_features_3.h>

Inherits from

MeshDomain_3.

Definition

The class Mesh_domain_with_polyline_features_3 is designed to allow the user to add some 0- and 1-dimensional features into any model of the MeshDomain_3 concept.

The 1-dimensional features are described as polylines whose endpoints are the added corners.

Template Parameters
MeshDomain_3is the type of the domain which should be extended. It has to be a model of the MeshDomain_3 concept.
Is Model Of:
MeshDomainWithFeatures_3
See also
MeshDomain_3
MeshPolyline_3
CGAL::Implicit_mesh_domain_3<Function,BGT>
CGAL::Polyhedral_mesh_domain_3<Polyhedron,IGT,TriangleAccessor>
CGAL::Labeled_image_mesh_domain_3<Image,BGT>
Examples:
Mesh_3/mesh_3D_image_with_features.cpp, Mesh_3/mesh_hybrid_mesh_domain.cpp, and Mesh_3/mesh_two_implicit_spheres_with_balls.cpp.

Types

typedef MeshDomain_3::Surface_patch_index Surface_patch_index
 
typedef MeshDomain_3::Subdomain_index Subdomain_index
 
typedef int Curve_index
 
typedef int Corner_index
 
typedef Mesh_3::internal::Index_generator_with_features< typename MeshDomain_3::Subdomain_index, Surface_patch_index, Curve_index, Corner_index >::type Index
 
typedef CGAL::Tag_true Has_features
 
typedef MeshDomain_3::R::FT FT
 

Creation

Constructors.

Forwards the arguments to the constructor of the base class.

 Mesh_domain_with_polyline_features_3 ()
 
template<typename T1 >
 Mesh_domain_with_polyline_features_3 (const T1 &o1, typename boost::disable_if< boost::is_same< T1, Self >, CGAL::Tag_false >::type *=0)
 
template<typename T1 , typename T2 , typename ... T>
 Mesh_domain_with_polyline_features_3 (const T1 &o1, const T2 &o2, const T &...o)
 

Operations

template<typename InputIterator >
void add_features (InputIterator first, InputIterator end)
 Add 1-dimensional features in the domain. More...
 
template<typename InputIterator , typename PolylinePMap , typename IncidentPatchesIndicesPMap >
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...
 

Implementation of the concept MeshDomainWithFeatures_3

The following methods implement the requirement of the concept MeshDomainWithFeatures_3.

template<typename OutputIterator >
OutputIterator get_corners (OutputIterator out) const
 Implements MeshDomainWithFeatures_3::get_corners(). More...
 
template<typename OutputIterator >
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
 

Additional Inherited Members

- Public Types inherited from MeshDomain_3
typedef unspecified_type R
 Geometric traits class. More...
 
typedef unspecified_type Point_3
 Point type.
 
typedef unspecified_type Segment_3
 Segment type.
 
typedef unspecified_type Ray_3
 Ray type.
 
typedef unspecified_type Line_3
 Line type.
 
typedef CGAL::Tag_false Has_features
 A type to distinguish MeshDomain_3 models from MeshDomainWithFeatures_3 models.
 
typedef unspecified_type Subdomain_index
 Type of indices for subdomains of the input domain. More...
 
typedef unspecified_type Surface_patch_index
 Type of indices for surface patches (boundaries and interfaces) of the input domain. More...
 
typedef unspecified_type Index
 Type of indices to be stored at mesh vertices to characterize the lowest dimensional face of the input complex on which the vertex lies. More...
 
typedef CGAL::cpp11::tuple< Point_3, Index, int > Intersection
 Returns type of Construct_intersection queries. More...
 
typedef unspecified_type Construct_initial_points
 A function object to construct a set of initial points on the surface of the domain. More...
 
typedef unspecified_type Is_in_domain
 A function object to query whether a point is in the input domain or not. More...
 
typedef unspecified_type Do_intersect_surface
 A function object which answers intersection queries between the surface patches of the domain and objects of type Segment_3, Ray_3 or Line_3. More...
 
typedef unspecified_type Construct_intersection
 A function object to construct the intersection between an object of type Segment_3, Ray_3 or Line_3 and an interface. More...
 
- Public Member Functions inherited from MeshDomain_3
Bbox_3 bbox () const
 Returns a bounding box of the domain.
 
Construct_initial_points construct_initial_points_object ()
 
Is_in_domain is_in_domain_object ()
 
Do_intersect_surface do_intersect_surface_object ()
 
Construct_intersection construct_intersection_object ()
 
Index index_from_surface_patch_index (Surface_patch_index surface_patch_index)
 Returns the index to be stored at a vertex lying on the surface patch identified by surface_patch_index.
 
Index index_from_subdomain_index (Subdomain_index subdomain_index)
 Returns the index to be stored at a vertex lying in the subdomain identified by subdomain_index.
 
Surface_patch_index surface_patch_index (Index index)
 Returns the Surface_patch_index of the surface patch where lies a vertex with dimension 2 and index index.
 
Subdomain_index subdomain_index (Index index)
 Returns the index of the subdomain containing a vertex with dimension 3 and index index.
 

Member Function Documentation

◆ add_features()

template<typename MeshDomain_3>
template<typename InputIterator >
IndicesOutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_ >::add_features ( InputIterator  first,
InputIterator  end 
)

Add 1-dimensional features in the domain.

InputIterator value type must be a model of the concept MeshPolyline_3.

◆ add_features_and_incidences()

template<typename MeshDomain_3>
template<typename InputIterator , typename PolylinePMap , typename IncidentPatchesIndicesPMap >
IndicesOutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_ >::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.

Template Parameters
InputIteratorinput iterator over curves
PolylinePMapis a model of ReadablePropertyMap with key type std::iterator_traits<InputIterator>::reference and a value type that is a model of MeshPolyline_3.
IncidentPatchesIndicesPMapis a model of ReadablePropertyMap with key type std::iterator_traits<InputIterator>::reference and a value type that is a range of Surface_patch_index.
Parameters
firstiterator to the first curve of the sequence
endpast-the-end iterator of the sequence of curves
polyline_pmapthe property map that provides access to the polyline, model of MeshPolyline_3, from the reference type of the iterator
incident_patches_indices_pmapthe property map that provides access to the set of indices of the surface patches that are incident to a given 1D-feature (curve)

◆ get_corners()

template<class MD_ >
template<typename OutputIterator >
OutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_ >::get_corners ( OutputIterator  out) const

Implements MeshDomainWithFeatures_3::get_corners().

OutputIterator value type is std::pair<Corner_index, Point_3>

◆ get_curves()

template<class MD_ >
template<typename OutputIterator >
OutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_ >::get_curves ( OutputIterator  out) const

Implements MeshDomainWithFeatures_3::get_curves().

OutputIterator value type is CGAL::cpp11::tuple<Curve_index, std::pair<Point_3,Index>, std::pair<Point_3,Index> >