The concept MeshDomain_3 describes the knowledge required on the object to be discretized. More specifically the concept provides a method to localize a point with regards to the input domain. Moreover, as the concept SurfaceMeshTraits_3, it also provides predicates which test whether a query segment (or a ray, or a line) intersects the boundary of the domain or of some subdomains, and constructors to compute some intersection point if any. It also includes a method able to provide a small set of initial points on the boundary.
In the following we consider only proper intersection with the domain and subdomain boundaries. A segment, ray or line is said to intersect properly the domain boundary (resp. a subdomain boundary) if it includes points which are strictly inside and strictly outside the domain (resp. the subdomain).
| |
Geometric traits class. This type is defined to ensure compatibility with class CGAL::Kernel_traits<T>.
| |
| |
Point type.
| |
| |
Segment type.
| |
| |
Ray type.
| |
| |
Line type.
| |
| |
Type of indices for subdomains of the
input domain. Must be a model of CopyConstructible,
Assignable, DefaultConstructible and EqualityComparable.
The default constructed value must match the label of the exterior of
the domain (which contains at least the unbounded component).
| |
| |
Type of indices for surface patches
(boundaries and interfaces) of the
input domain. Must be a model of CopyConstructible,
Assignable, DefaultConstructible and EqualityComparable.
The default constructed value must is the index value assigned
to a non surface facet.
| |
| |
Type of indices to be stored at mesh vertices
to characterize the lowest dimensional face of the input complex
on which the vertex lies. Must be a model of CopyConstructible,
Assignable, DefaultConstructible and EqualityComparable.
| |
| |
Return type of Is_in_domain queries. Must
be convertible to bool. If it converts to false, the
query point is outside the domain. Otherwise the query point
subdomain index must be accessible using operator*().
Note that boost::optional<Subdomain_index> is a natural model of this concept.
| |
| |
Return type of Do_intersect_surface queries. Must
be convertible to bool. If it converts to false, no
surface is intersected by the query. Otherwise the surface index of
one of the intersected surface patches must be accessible using operator*().
Note that boost::optional<Surface_index> is a natural model of this concept.
|
| ||
| Return type of Construct_intersection queries. int represents the dimension of the lower dimensionnal face of the input complex on which the point lies and Index is the index of this face. |
| |||
A function object to construct
a set of initial points on the surface of the domain. Provides the
following operators: template<typename OutputIterator>\ OutputIterator operator()(OutputIterator pts) template<typename OutputIterator>\ OutputIterator operator()(int n, OutputIterator pts) Those two operators output a set of (n) surface points to the output iterator pts, as objects of type std::pair<Point_3, Index. If n is not given, the functor must provide enough points to initialize the mesh generation process.
| |||
| |||
A function object to query if a point is in
the input domain or not. In the positive case, it outputs the
subdomain which includes the query point. Provides the operator: Subdomain operator()(Point_3 p)
| |||
| |||
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. Provides the operators: Surface_patch operator()(Segment_3 s) Surface_patch operator()(Ray_3 r) Surface_patch operator()(Line_3 l) The Surface_patch output tells whether or not the query intersects a surface patch. In the positive case, it yields the Surface_index of one of the intersected surface patches.
| |||
| |||
A function object to construct the
intersection between an object of type Segment_3, Ray_3 or
Line_3 and an interface. Provides the operators: Intersection operator()(Segment_3 s) Intersection operator()(Ray_3 r) Intersection operator()(Line_3 l)
|
These methods are designed to convert indices: