CGAL 6.2 - 3D Mesh Generation

Loading...
Searching...
No Matches
List of all members
CGAL::Mesh_domain_with_polyline_features_3< MD, version > Class Template Reference
Reference Manual » Domain Classes

`#include <CGAL/Mesh_domain_with_polyline_features_3.h>`

## Inherits from

MD.

Inherited by CGAL::Polyhedral_complex_mesh_domain_3< IGT, Polyhedron >, and CGAL::Polyhedral_mesh_domain_with_features_3< IGT, Polyhedron >.

## Definition

template<typename MD, API_version version = API_version::v2>
class CGAL::Mesh_domain_with_polyline_features_3< MD, version >

The class `Mesh_domain_with_polyline_features_3` enables 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

  MD | is the type of the domain which is extended. It has to be a model of the `MeshDomain_3` concept.

Is model of
  `MeshDomainWithFeatures_3`

See also
  `MeshPolyline_3`
  `CGAL::Polyhedral_mesh_domain_3<Polyhedron,IGT>`

Examples
  Mesh_3/mesh_3D_image_with_custom_initialization.cpp, Mesh_3/mesh_3D_image_with_detection_of_features.cpp, Mesh_3/mesh_3D_image_with_features.cpp, Mesh_3/mesh_3D_image_with_initial_points.cpp, Mesh_3/mesh_3D_image_with_input_features.cpp, Mesh_3/mesh_3D_weighted_image_with_detection_of_features.cpp, Mesh_3/mesh_hybrid_mesh_domain.cpp, and Mesh_3/mesh_two_implicit_spheres_with_balls.cpp.

## Types
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

## Creation
| Mesh_domain_with_polyline_features_3 (const MD &base_domain)
template<typename Other_MD , API_version other_version, typename = std::enable_if_t<std::is_same_v<MD, Other_MD> && (other_version != version)>>
| Mesh_domain_with_polyline_features_3 (const Mesh_domain_with_polyline_features_3< Other_MD, other_version > &)=delete
| Mesh_domain_with_polyline_features_3 (const Mesh_domain_with_polyline_features_3 &)=default

## Operations
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.

## Implementation of the concept MeshDomainWithFeatures_3
The following methods implement the requirements of the concept `MeshDomainWithFeatures_3`.
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_segment_length (const Point_3 &p, const Point_3 q, const Position_on_curve p_it, const Position_on_curve q_it, const Curve_index &curve_index, CGAL::Orientation orientation) const
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()`.
Point_and_position | construct_point_on_curve (const Point_3 &starting_point, const Curve_index &curve_index, FT distance, Position_on_curve starting_point_it) 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_along_loop (const Point_3 &p, const Point_3 &q, const Point_3 &r, const Curve_index &index, Position_on_curve pit, Position_on_curve qit, Position_on_curve rit) const
CGAL::Sign | distance_sign (const Point_3 &p, const Point_3 &q, const Curve_index &index) const
| implements `MeshDomainWithFeatures_3::distance_sign()`.
CGAL::Sign | distance_sign (const Point_3 &p, const Point_3 &q, const Curve_index &index, Position_on_curve pit, Position_on_curve qit) const
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()`.
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 Position_on_curve c1_it, const Position_on_curve c2_it) const
Position_on_curve | locate_corner (const Curve_index &curve_index, const Point_3 &p) const
| locates the corner point `p` on the curve identified by `curve_index`
Position_on_curve | locate_point (const Curve_index &curve_index, const Point_3 &p) const
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`

## Member Function Documentation

## ◆ add_features()

template<typename MD , API_version version = API_version::v2>
template<typename InputIterator >

IndicesOutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_, version >::add_features | ( | InputIterator | first,
|  | InputIterator | end
| ) |  |

adds 1-dimensional features in the domain.

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

## ◆ add_features_and_incidences()

template<typename MD , API_version version = API_version::v2>
template<typename InputIterator , typename PolylinePMap , typename IncidentPatchesIndicesPMap >

IndicesOutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_, version >::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 Parameters

  InputIterator | input iterator over curves
  PolylinePMap | is a model of `ReadablePropertyMap` with key type `std::iterator_traits<InputIterator>::reference` and a value type that is a model of `MeshPolyline_3`.
  IncidentPatchesIndicesPMap | is 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

  first | iterator to the first curve of the sequence
  end | past-the-end iterator of the sequence of curves
  polyline_pmap | the property map that provides access to the polyline, model of `MeshPolyline_3`, from the `reference` type of the iterator
  incident_patches_indices_pmap | the 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_ , API_version version>
template<typename OutputIterator >

OutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_, version >::get_corners | ( | OutputIterator | out | ) | const

implements `MeshDomainWithFeatures_3::get_corners()`.

OutputIterator is `std::pair<Corner_index, Point_3>`

## ◆ get_curves()

template<class MD_ , API_version version>
template<typename OutputIterator >

OutputIterator CGAL::Mesh_domain_with_polyline_features_3< MD_, version >::get_curves | ( | OutputIterator | out | ) | const

implements `MeshDomainWithFeatures_3::get_curves()`.

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