|
CGAL 6.0 - 3D Periodic Triangulations
|
The concept Periodic_3TriangulationTraits_3 is the first template parameter of the class CGAL::Periodic_3_triangulation_3. It refines the concept TriangulationTraits_3 from the CGAL 3D Triangulations. It redefines the geometric objects, predicates and constructions to work with point-offset pairs. In most cases the offsets will be (0,0,0) and the predicates from TriangulationTraits_3 can be used directly. For efficiency reasons we maintain for each functor the version without offsets.
TriangulationTraits_3 CGAL::Periodic_3_triangulation_traits_3 In addition to the requirements described for the traits class TriangulationTraits_3, the geometric traits class of a Periodic triangulation must fulfill the following requirements.
Types | |
| typedef unspecified_type | Point_3 |
| The point type. | |
| typedef unspecified_type | Vector_3 |
| The vector type. | |
| typedef unspecified_type | Periodic_3_offset_3 |
| The offset type. | |
| typedef unspecified_type | Iso_cuboid_3 |
| A type representing an axis-aligned cuboid. | |
The following three types represent geometric primitives in \( \mathbb R^3\). They are required to provide functions converting primitives from \( \mathbb T_c^3\) to \( \mathbb R^3\), i.e. constructing representatives in \( \mathbb R^3\). | |
| typedef unspecified_type | Segment_3 |
| A segment type. | |
| typedef unspecified_type | Triangle_3 |
| A triangle type. | |
| typedef unspecified_type | Tetrahedron_3 |
| A tetrahedron type. | |
| typedef unspecified_type | Compare_x_3 |
| A predicate object that must provide the function operator. | |
| typedef unspecified_type | Compare_y_3 |
| A predicate object that must provide the function operator. | |
| typedef unspecified_type | Compare_z_3 |
| A predicate object that must provide the function operator. | |
| typedef unspecified_type | Compare_xyz_3 |
| A predicate object that must provide the function operator. | |
| typedef unspecified_type | Orientation_3 |
| A predicate object that must provide the function operator. | |
Note that the traits must provide exact constructions in order to guarantee exactness of the following construction functors. | |
| typedef unspecified_type | Construct_point_3 |
| A constructor object that must provide the function operator. | |
| typedef unspecified_type | Construct_segment_3 |
| A constructor object that must provide the function operator. | |
| typedef unspecified_type | Construct_triangle_3 |
| A constructor object that must provide the function operator. | |
| typedef unspecified_type | Construct_tetrahedron_3 |
| A constructor object that must provide the function operator. | |
Creation | |
| Periodic_3_triangulation_traits_3 () | |
| Default constructor. | |
| Periodic_3_triangulation_traits_3 (const Periodic_triangulation_traits_3 &tr) | |
| Copy constructor. | |
Access Functions | |
| void | set_domain (const Iso_cuboid_3 &domain) |
| Set the fundamental domain. | |
| const Iso_cuboid_3 & | get_domain () const |
| Returns the fundamental domain. | |
Operations | |
The following functions give access to the predicate and construction objects: | |
| Compare_xyz_3 | compare_xyz_3_object () |
| Orientation_3 | orientation_3_object () |
| Construct_segment_3 | construct_segment_3_object () |
| Construct_triangle_3 | construct_triangle_3_object () |
| Construct_tetrahedron_3 | construct_tetrahedron_3_object () |
A predicate object that must provide the function operator.
Comparison_result operator()(Point_3 p, Point_3 q, Periodic_3_offset_3 o_p, Periodic_3_offset_3 o_q),
which returns SMALLER (EQUAL, LARGER) if the x-coordinate of p is smaller (equal, larger) than the x-coordinate of q.
p, q lie inside the domain. A predicate object that must provide the function operator.
Comparison_result operator()(Point_3 p, Point_3 q, Periodic_3_offset_3 o_p, Periodic_3_offset_3 o_q),
which returns EQUAL if the two point-offset pairs are equal. Otherwise it must return a consistent order for any two points chosen in a same line.
p, q lie inside the domain. A predicate object that must provide the function operator.
Comparison_result operator()(Point_3 p, Point_3 q, Periodic_3_offset_3 o_p, Periodic_3_offset_3 o_q),
which returns SMALLER (EQUAL, LARGER) if the y-coordinate of p is smaller (equal, larger) than the y-coordinate of q.
p, q lie inside the domain. A predicate object that must provide the function operator.
Comparison_result operator()(Point_3 p, Point_3 q, Periodic_3_offset_3 o_p, Periodic_3_offset_3 o_q),
which returns SMALLER (EQUAL, LARGER) if the z-coordinate of p is smaller (equal, larger) than the z-coordinate of q.
p, q lie inside the domain. A constructor object that must provide the function operator.
Point_3 operator()(Point_3 p, Periodic_3_offset_3 o_p),
which constructs a point from a point-offset pair.
p lies inside the domain. A constructor object that must provide the function operator.
Segment_3 operator()(Point_3 p, Point_3 q, Periodic_3_offset_3 o_p, Periodic_3_offset_3 o_q),
which constructs a segment from two point-offset pairs.
p, q lie inside the domain. A constructor object that must provide the function operator.
Tetrahedron_3 operator()(Point_3 p, Point_3 q, Point_3 r, Point_3 s, Periodic_3_offset_3 o_q, Periodic_3_offset_3 o_q, Periodic_3_offset_3 o_r, Periodic_3_offset_3 o_s),
which constructs a tetrahedron from four point-offset pairs.
p, q, r, s lie inside the domain. A constructor object that must provide the function operator.
Triangle_3 operator()(Point_3 p, Point_3 q, Point_3 r, Periodic_3_offset_3 o_q, Periodic_3_offset_3 o_q, Periodic_3_offset_3 o_r),
which constructs a triangle from three point-offset pairs.
p, q, r lie inside the domain. A type representing an axis-aligned cuboid.
It must be a model of Kernel::Iso_cuboid_3.
A predicate object that must provide the function operator.
Orientation operator()(Point_3 p, Point_3 q, Point_3 r, Point_3 s, Periodic_3_offset_3 o_p, Periodic_3_offset_3 o_q, Periodic_3_offset_3 o_r, Periodic_3_offset_3 o_s),
which returns POSITIVE, if the point-offset pair (s,o_s) lies on the positive side of the oriented plane h defined by (p,o_p), (q,o_q), and (r,o_r), returns NEGATIVE if (s,o_s) lies on the negative side of h, and returns COPLANAR if (s,o_s) lies on h.
p, q, r, s lie inside the domain. The offset type.
It must be a model of the concept Periodic_3Offset_3.
The point type.
It must be a model of Kernel::Point_3.
A segment type.
It must be a model of Kernel::Segment_3.
A tetrahedron type.
It must be a model of Kernel::Tetrahedron_3.
A triangle type.
It must be a model of Kernel::Triangle_3.
The vector type.
It must be a model of Kernel::Vector_3.
| void Periodic_3TriangulationTraits_3::set_domain | ( | const Iso_cuboid_3 & | domain | ) |
Set the fundamental domain.
This is necessary to evaluate predicates correctly.
domain represents a cube.