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.
typedef CGAL::Tag_true | Has_features; | A type to distinguish MeshDomain_3 models from MeshDomainWithFeatures_3 models. |
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 | md.construct_point_on_curve_segment ( Point_3 p, 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.
|
Note that construct_point_on_curve segment is assumed to return a uniquely defined point. Therefore it is not possible to handle as a single curve segment, a singular curve with several branches incident to the same point.
FT | md.geodesic_distance ( Point_3 p, Point_3 q, Curve_segment_index ci) const | |||
Returns the signed geodesic distance
between points p and q along the input curve segment
with index ci.
| ||||
CGAL::Sign | md.distance_sign_along_cycle ( Point_3 p, Point_3 q, Point_3 r, 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).
| ||||
bool | md.is_cycle ( Point_3 p, Curve_segment_index ci) const | |||
Returns true if the connected component of curve segment ci including point p is a cycle. |
template <typename OutputIterator> | ||
OutputIterator | md.get_corners ( OutputIterator corners) const | |
Fills corners with the corners of the input domain. corners value type must be std::pair<Corner_index,Point_3>. | ||
template <typename OutputIterator> | ||
OutputIterator | md.get_curve_segments ( OutputIterator curves) const | |
Fills curves with the curve segments of the input domain. curves value type must be CGAL::cpp0x::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. | ||
bool | md.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 | md.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. |
Mesh_domain_with_polyline_features_3<MeshDomain_3>
Polyhedral_mesh_domain_with_features_3<IGT>