The concept MeshDomain_3 describes the knowledge required on the object to be discretized. The concept MeshDomain_3 is the concept to be used when the input domain does not have 0 or 1-dimensional features that need to be accurately approximated by the mesh. In such a case, the queries issued by the meshing process concern only the faces of the input domain with dimension 3 and 2, that are respectively called subdomains and surface patches.
More specifically the concept MeshDomain_3 provides a method to localize a point with respect to the input domain and its subdomains. Moreover, as the concept SurfaceMeshTraits_3, it also provides predicates to test whether a query segment (or a ray, or a line) intersects the boundary of the domain or of the 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
CGAL::Kernel_traits<T>.
| |
| |
Point type.
| |
| |
Segment type.
| |
| |
Ray type.
| |
| |
Line type.
|
|
| A type to distinguish MeshDomain_3 models from MeshDomainWithFeatures_3 models. |
| ||
| Return type of Construct_intersection queries. int represents the dimension of the lower dimensional face of the input complex on which the intersection 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 whether 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: boost::optional<Subdomain_index> 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: boost::optional<Surface_patch_index> operator()(Segment_3 s) boost::optional<Surface_patch_index> operator()(Ray_3 r) boost::optional<Surface_patch_index> operator()(Line_3 l) The return type of the operators tell whether or not the query intersects a surface patch. In the positive case, it provides (through operator*()) the Surface_patch_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: