CGAL 4.5 - 3D Mesh Generation
|
The concept MeshDomainWithFeatures_3
refines the concept MeshDomain_3
. While the concept MeshDomain_3
only exposes the 2-dimensional and 3-dimensional features of the domain through different queries, the concept MeshDomainWithFeatures_3
also exposes 0 and 1-dimensional features. The exposed features of the domain are respectively called subdomains, surface patches, curve segments and corners according to their respective dimensions 3,2,1 and 0.
MeshDomain_3
Types | |
typedef CGAL::Tag_true | Has_features |
A type to distinguish MeshDomain_3 models from MeshDomainWithFeatures_3 models. | |
typedef unspecified_type | FT |
Numerical type. | |
typedef unspecified_type | Curve_segment_index |
Type of indices for curve segments ( \( 1\)-dimensional features) of the input domain. More... | |
typedef unspecified_type | Corner_index |
Type of indices for corners (i.e. 0-dimensional features) of the input domain. More... | |
Operations | |
Each connected component of a curve segment is assumed to be oriented. The orientation is defined by the ordering of the two incident corners at the origin and endpoint. Therefore it is possible to defined the signed geodesic distance between two ordered points on the same connected component of a curve segment. A cycle is a connected component of a curve segment incident to 0 or 1 corner.
| |
Point_3 | construct_point_on_curve_segment (const Point_3 &p, const Curve_segment_index &ci, FT d) const |
Returns a point on the curve segment with index ci at signed geodesic distance d from point p . More... | |
Queries | |
FT | geodesic_distance (const Point_3 &p, const Point_3 &q, const Curve_segment_index &ci) const |
Returns the signed geodesic distance between points p and q along the input curve segment with index ci . More... | |
CGAL::Sign | distance_sign_along_cycle (const Point_3 &p, const Point_3 &q, const Point_3 &r, const Curve_segment_index &ci) const |
Returns CGAL::POSITIVE if the signed geodesic distance from p to q on the way through \( r\) along cycle with index ci is positive, CGAL::NEGATIVE if the distance is negative, and CGAL::ZERO if (p = q = r) . More... | |
bool | is_cycle (const Point_3 &p, const Curve_segment_index &ci) const |
Returns true if the connected component of curve segment ci including point p is a cycle. | |
Retrieval of the input features and their incidences | |
template<typename OutputIterator > | |
OutputIterator | get_corners (OutputIterator corners) const |
Fills corners with the corners of the input domain. More... | |
template<typename OutputIterator > | |
OutputIterator | get_curve_segments (OutputIterator curves) const |
Fills curves with the curve segments of the input domain. More... | |
bool | are_incident_surface_patch_curve_segment (Surface_patch_index spi, Curve_segment_index csi) |
Returns true if the curve segment with index csi is incident to the surface patch with index spi . | |
bool | are_incident_surface_patch_corner (Surface_patch_index spi, Corner_index ci) |
Returns true if the corner with index ci is incident to the surface patch with index spi . | |
Indices converters | |
Index | index_from_curve_segment_index (const Curve_segment_index &curve_segment_index) const |
Returns the index to be stored at a vertex lying on the curve segment identified by curve_segment_index . | |
Curve_segment_index | curve_segment_index (const Index &index) const |
Returns the Curve_segment_index of the curve segment where lies a vertex with dimension 1 and index index . | |
Index | index_from_corner_index (const Corner_index &corner_index) const |
Returns the index to be stored at a vertex lying on the corner identified by corner_index . | |
Corner_index | corner_index (const Index &index) const |
Returns the Corner_index of the corner where lies a vertex with dimension 0 and index index . | |
Type of indices for corners (i.e. 0-dimensional features) of the input domain.
Must be a model of CopyConstructible, Assignable, DefaultConstructible and LessThanComparable.
Type of indices for curve segments ( \( 1\)-dimensional features) of the input domain.
Must be a model of CopyConstructible, Assignable, DefaultConstructible and LessThanComparable. The default constructed value must be the value of an edge which does not approximate a 1-dimensional feature of the input domain.
Point_3 MeshDomainWithFeatures_3::construct_point_on_curve_segment | ( | const Point_3 & | p, |
const Curve_segment_index & | ci, | ||
FT | d | ||
) | const |
Returns a point on the curve segment with index ci
at signed geodesic distance d
from point p
.
p
is supposed to be on curve segment ci
. If d > 0
, the signed geodesic distance from p
to the endpoint of the connected component of ci
including \( p\), should be greater than \( d\). If d < 0
, the signed geodesic distance from p
to the origin of the connected component should be less than \( d\) from the origin of the connected component. CGAL::Sign MeshDomainWithFeatures_3::distance_sign_along_cycle | ( | const Point_3 & | p, |
const Point_3 & | q, | ||
const Point_3 & | r, | ||
const Curve_segment_index & | ci | ||
) | const |
Returns CGAL::POSITIVE
if the signed geodesic distance from p
to q
on the way through \( r\) along cycle with index ci
is positive, CGAL::NEGATIVE
if the distance is negative, and CGAL::ZERO
if (p = q = r)
.
p
, q
and r
belongs to the same connected component of curve segment ci
and this component is a cycle. FT MeshDomainWithFeatures_3::geodesic_distance | ( | const Point_3 & | p, |
const Point_3 & | q, | ||
const Curve_segment_index & | ci | ||
) | const |
Returns the signed geodesic distance between points p
and q
along the input curve segment with index ci
.
p
and q
belong to the same connected component of the curve segment with index ci
. OutputIterator MeshDomainWithFeatures_3::get_corners | ( | OutputIterator | corners) | const |
Fills corners
with the corners of the input domain.
The value type of corners
must be std::pair<Corner_index,Point_3>
.
OutputIterator MeshDomainWithFeatures_3::get_curve_segments | ( | OutputIterator | curves) | const |
Fills curves
with the curve segments of the input domain.
curves
value type must be CGAL::cpp11::tuple<Curve_segment_index,std::pair<Point_3,Index>,std::pair<Point_3,Index> >
. If the curve segment corresponding to an entry in curves is not a cycle, the pair of associated points should belong to two corners incident on the curve segment. If it is a cycle, then the same Point_3
should be given twice and must be any point on the cycle. The Index
values associated to the points are their indices w.r.t. their dimension.