|
CGAL 6.0 - 2D Periodic Triangulations
|
The concept Periodic_2TriangulationTraits_2 is the first template parameter of the classes CGAL::Periodic_2_triangulation_2<Traits, Tds>. This concept provides the types of the geometric primitives used in the triangulation and some function object types for the required predicates on those primitives.
It refines the concept TriangulationTraits_2 from the CGAL 2D Triangulations Reference package. It redefines the geometric objects, predicates and constructions to work with point-offset pairs. In most cases the offsets will be (0,0) and the predicates from TriangulationTraits_2 can be used directly. For efficiency reasons we maintain for each functor the version without offsets.
TriangulationTraits_2 In addition to the requirements described for the traits class TriangulationTraits_2, the geometric traits class of a Periodic triangulation must fulfill the following requirements:
CGAL::Periodic_2_triangulation_traits_2 TriangulationTraits_2 CGAL::Periodic_2_triangulation_2<Traits,Tds> Types | |
| typedef unspecified_type | Point_2 |
| The point type. | |
| typedef unspecified_type | Segment_2 |
| The segment type. | |
| typedef unspecified_type | Vector_2 |
| The vector type. | |
| typedef unspecified_type | Triangle_2 |
| The triangle type. | |
| typedef unspecified_type | Iso_rectangle_2 |
| A type representing an axis-aligned rectangle. | |
| typedef unspecified_type | Periodic_2_offset_2 |
| The offset type. | |
Predicate types | |
| typedef unspecified_type | Compare_x_2 |
| A predicate object that must provide the function operators. | |
| typedef unspecified_type | Compare_y_2 |
| A predicate object that must provide the function operators. | |
| typedef unspecified_type | Less_x_2 |
| Predicate object. | |
| typedef unspecified_type | Less_y_2 |
| Predicate object. | |
| typedef unspecified_type | Orientation_2 |
| A predicate object that must provide the function operators. | |
Constructor types: | |
Note that the traits must provide exact constructions in order to guarantee exactness of the following construction functors. | |
| typedef unspecified_type | Construct_point_2 |
A constructor object for Point_2. | |
| typedef unspecified_type | Construct_segment_2 |
A constructor object for Segment_2. | |
| typedef unspecified_type | Construct_triangle_2 |
A constructor object for Triangle_2. | |
Creation | |
| Periodic_2_triangulation_traits_2 () | |
| Default constructor. | |
| Periodic_2_triangulation_traits_2 (const Periodic_2_triangulation_traits_2 &tr) | |
| Copy constructor. | |
Predicate functions | |
The following functions give access to the predicate and constructor objects. | |
| Compare_x_2 | compare_x_2_object () |
| Compare_y_2 | compare_y_2_object () |
| Less_x_2 | less_x_2_object () |
| Less_y_2 | less_y_2_object () |
| Orientation_2 | orientation_2_object () |
| Construct_point_2 | construct_point_2_object () |
| Construct_segment_2 | construct_segment_2_object () |
| Construct_triangle_2 | construct_triangle_2_object () |
Access Functions | |
| void | set_domain (Iso_rectangle_2 domain) |
| Sets the fundamental domain. | |
| Iso_rectangle_2 | get_domain () const |
| Returns the fundamental domain. | |
A predicate object that must provide the function operators.
Comparison_result operator()(Point_2 p, Point_2 q),
which returns EQUAL if the \( x\)-coordinates of the two points are equal and
Comparison_result operator()(Point_2 p, Point_2 q, Periodic_2_offset_2 o_p, Periodic_2_offset_2 o_q),
which returns EQUAL if the \( x\)-coordinates and \( x\)-offsets of the two point-offset pairs are equal. Otherwise it must return a consistent order for any two points.
p, q lie inside the domain. A predicate object that must provide the function operators.
Comparison_result operator()(Point_2 p, Point_2 q),
which returns EQUAL if the \( y\)-coordinates of the two points are equal and
Comparison_result operator()(Point_2 p, Point_2 q, Periodic_2_offset_2 o_p, Periodic_2_offset_2 o_q),
which returns EQUAL if the \( y\)-coordinates and \( y\)-offsets of the two point-offset pairs are equal. Otherwise it must return a consistent order for any two points.
p, q lie inside the domain. A constructor object for Point_2.
Provides:
Point_2 operator()(Point_2 p,Periodic_2_offset_2 p_o),
which constructs a point from a point-offset pair.
p lies inside the domain. A constructor object for Segment_2.
Provides:
Segment_2 operator()(Point_2 p,Point_2 q),
which constructs a segment from two points and
Segment_2 operator()(Point_2 p,Point_2 q, Periodic_2_offset_2 o_p, Periodic_2_offset_2 o_q),
which constructs a segment from the points (p,o_p) and (q,o_q).
A constructor object for Triangle_2.
Provides:
Triangle_2 operator()(Point_2 p,Point_2 q,Point_2 r ),
which constructs a triangle from three points and
Triangle_2 operator()(Point_2 p,Point_2 q,Point_2 r, Periodic_2_offset_2 o_p, Periodic_2_offset_2 o_q, Periodic_2_offset_2 o_r),
which constructs a triangle from the three points (p,o_p), (q,o_q) and (r,o_r).
A type representing an axis-aligned rectangle.
It must be a model of Kernel::Iso_rectangle_2.
Predicate object.
Provides the operators:
bool operator()(Point p, Point q) and
bool operator()(Point p, Point q, Periodic_2_offset_2 o_p, Periodic_2_offset_2 o_q)
which returns true if p is before q according to the \( x\)-ordering of points.
This predicate is only necessary if the insert function with a range of points (using Hilbert sorting) is used.
Predicate object.
Provides the operators:
bool operator()(Point p, Point q) and
bool operator()(Point p, Point q, Periodic_2_offset_2 o_p, Periodic_2_offset_2 o_q)
which returns true if p is before q according to the \( y\)-ordering of points.
This predicate is only necessary if the insert function with a range of points (using Hilbert sorting) is used.
A predicate object that must provide the function operators.
Orientation operator()(Point_2 p, Point_2 q, Point_2 r),
which returns LEFT_TURN, RIGHT_TURN or COLLINEAR depending on \( r\) being, with respect to the oriented line pq, on the left side, on the right side or on the line. and
Orientation operator()(Point_2 p, Point_2 q, Point_2 r, Periodic_2_offset_2 o_p, Periodic_2_offset_2 o_q, Periodic_2_offset_2 o_r),
which returns LEFT_TURN, RIGHT_TURN or COLLINEAR depending on (r,o_r) being, with respect to the oriented line defined by (p,o_p)(q,o_q) on the left side, on the right side or on the line.
The offset type.
It must be a model of the concept Periodic_2Offset_2.
The point type.
It must be a model of Kernel::Point_2.
The segment type.
It must be a model of Kernel::Segment_2.
The triangle type.
It must be a model of Kernel::Triangle_2.
The vector type.
It must be a model of Kernel::Vector_2.
| void Periodic_2TriangulationTraits_2::set_domain | ( | Iso_rectangle_2 | domain | ) |
Sets the fundamental domain.
This is necessary to evaluate predicates correctly.
domain represents a square.