CGAL 5.6 - 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, curves and corners according to their respective dimensions 3, 2, 1, and 0.
Each curve is assumed to be bounded, with only one connected component, and without auto-intersections. Each curve is also assumed to be oriented. Therefore it is possible to define the signed geodesic distance between two ordered points on the same curve.
MeshDomain_3
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 | Point_3 |
Point type. | |
typedef unspecified_type | Curve_index |
Type of indices for curves (i.e. More... | |
typedef unspecified_type | Corner_index |
Type of indices for corners (i.e. More... | |
Operations | |
Point_3 | construct_point_on_curve (const Point_3 &p, const Curve_index &ci, FT d) const |
Returns a point on the curve with index ci at signed geodesic distance d from point p . More... | |
Queries | |
FT | curve_segment_length (const Point_3 &p, const Point_3 &q, const Curve_index &curve_index, CGAL::Orientation orientation) const |
Returns the length of the curve segment from p to q , on the curve with index curve_index . More... | |
CGAL::Sign | distance_sign_along_loop (const Point_3 &p, const Point_3 &q, const Point_3 &r, const Curve_index &ci) const |
Returns CGAL::POSITIVE if the signed geodesic distance from p to q on the way through r along loop with index ci is positive, CGAL::NEGATIVE if the distance is negative. More... | |
CGAL::Sign | distance_sign (const Point_3 &p, const Point_3 &q, const Curve_index &ci) const |
Returns the sign of the geodesic distance from p to q , on the curve with index ci . More... | |
FT | curve_length (const Curve_index &curve_index) const |
Returns the length of curve with index curve_index | |
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 |
Returns true if the portion of the curve of index index , between the points c1 and c2 , is covered by the spheres of centers c1 and c2 and squared radii sq_r1 and sq_r2 respectively. More... | |
bool | is_loop (const Curve_index &ci) const |
Returns true if the curve ci is a loop. | |
Retrieval of the input features | |
template<typename OutputIterator > | |
OutputIterator | get_corners (OutputIterator corners) const |
Fills corners with the corners of the input domain. More... | |
template<typename OutputIterator > | |
OutputIterator | get_curves (OutputIterator curves) const |
Fills curves with the curves of the input domain. More... | |
Indices converters | |
Index | index_from_curve_index (const Curve_index &curve_index) const |
Returns the index to be stored at a vertex lying on the curve identified by curve_index . | |
Curve_index | curve_index (const Index &index) const |
Returns the Curve_index of the curve 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 curves (i.e.
\( 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 | ( | const Point_3 & | p, |
const Curve_index & | ci, | ||
FT | d | ||
) | const |
Returns a point on the curve with index ci
at signed geodesic distance d
from point p
.
p
is supposed to be on curve ci
. If d > 0
, the signed geodesic distance from p
to the endpoint of ci
should be greater than d
. If d < 0
, the signed geodesic distance from p
to the origin of the curve should be less than d
. FT MeshDomainWithFeatures_3::curve_segment_length | ( | const Point_3 & | p, |
const Point_3 & | q, | ||
const Curve_index & | curve_index, | ||
CGAL::Orientation | orientation | ||
) | const |
Returns the length of the curve segment from p
to q
, on the curve with index curve_index
.
If the curve with index curve_index
is a loop, the orientation identifies which portion of the loop corresponds to the curve segment, otherwise orientation
must be compatible with the orientation of p
and q
on the curve.
CGAL::Sign MeshDomainWithFeatures_3::distance_sign | ( | const Point_3 & | p, |
const Point_3 & | q, | ||
const Curve_index & | ci | ||
) | const |
Returns the sign of the geodesic distance from p
to q
, on the curve with index ci
.
If the curve with index ci
is a loop, the function distance_sign_along_loop()
must be used instead.
CGAL::Sign MeshDomainWithFeatures_3::distance_sign_along_loop | ( | const Point_3 & | p, |
const Point_3 & | q, | ||
const Point_3 & | r, | ||
const Curve_index & | ci | ||
) | const |
Returns CGAL::POSITIVE
if the signed geodesic distance from p
to q
on the way through r
along loop with index ci
is positive, CGAL::NEGATIVE
if the distance is negative.
p != q && p != r && r != q
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_curves | ( | OutputIterator | curves | ) | const |
Fills curves
with the curves of the input domain.
curves
value type must be std::tuple<Curve_index,std::pair<Point_3,Index>,std::pair<Point_3,Index> >
. If the curve corresponding to an entry in curves
is not a loop, the pair of associated points should belong to two corners incident to the curve. If it is a loop, then the same Point_3
should be given twice and must be any point on the loop. The Index
values associated to the points are their indices w.r.t. their dimension.
bool MeshDomainWithFeatures_3::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 |
Returns true
if the portion of the curve of index index
, between the points c1
and c2
, is covered by the spheres of centers c1
and c2
and squared radii sq_r1
and sq_r2
respectively.
The points c1
and c2
are assumed to lie on the curve.