\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.12.1 - 3D Periodic Triangulations
Periodic_3TriangulationTraits_3 Concept Reference

Definition

The concept Periodic_3TriangulationTraits_3 is the first template parameter of the class 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.

Refines:
TriangulationTraits_3
Has Models:
CGAL::Periodic_3_triangulation_traits_3
See also
Periodic_3DelaunayTriangulationTraits_3
Periodic_3RegularTriangulationTraits_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. More...
 
typedef unspecified_type Vector_3
 The vector type. More...
 
typedef unspecified_type Periodic_3_offset_3
 The offset type. More...
 
typedef unspecified_type Iso_cuboid_3
 A type representing an axis-aligned cuboid. More...
 

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. More...
 
typedef unspecified_type Triangle_3
 A triangle type. More...
 
typedef unspecified_type Tetrahedron_3
 A tetrahedron type. More...
 
typedef unspecified_type Compare_xyz_3
 A predicate object that must provide the function operator. More...
 
typedef unspecified_type Orientation_3
 A predicate object that must provide the function operator. More...
 

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. More...
 
typedef unspecified_type Construct_segment_3
 A constructor object that must provide the function operator. More...
 
typedef unspecified_type Construct_triangle_3
 A constructor object that must provide the function operator. More...
 
typedef unspecified_type Construct_tetrahedron_3
 A constructor object that must provide the function operator. More...
 

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. More...
 
const Iso_cuboid_3get_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 ()
 

Member Typedef Documentation

◆ Compare_xyz_3

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.

Precondition
p, q lie inside the domain.

◆ Construct_point_3

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.

Precondition
p lies inside the domain.

◆ Construct_segment_3

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.

Precondition
p, q lie inside the domain.

◆ Construct_tetrahedron_3

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.

Precondition
p, q, r, s lie inside the domain.

◆ Construct_triangle_3

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.

Precondition
p, q, r lie inside the domain.

◆ Iso_cuboid_3

A type representing an axis-aligned cuboid.

It must be a model of Kernel::Iso_cuboid_3.

◆ Orientation_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.

Precondition
p, q, r, s lie inside the domain.

◆ Periodic_3_offset_3

The offset type.

It must be a model of the concept Periodic_3Offset_3.

◆ Point_3

The point type.

It must be a model of Kernel::Point_3.

◆ Segment_3

A segment type.

It must be a model of Kernel::Segment_3.

◆ Tetrahedron_3

◆ Triangle_3

A triangle type.

It must be a model of Kernel::Triangle_3.

◆ Vector_3

The vector type.

It must be a model of Kernel::Vector_3.

Member Function Documentation

◆ set_domain()

void Periodic_3TriangulationTraits_3::set_domain ( const Iso_cuboid_3 domain)

Set the fundamental domain.

This is necessary to evaluate predicates correctly.

Precondition
domain represents a cube.