All convex hull and extreme point algorithms provided in CGAL are parameterized with a traits class Traits, which defines the primitives (objects and predicates) that the convex hull algorithms use. ConvexHullTraits_2 defines the complete set of primitives required in these functions. The specific subset of these primitives required by each function is specified with each function.
 
The point type on which the convex hull functions operate.
 
 
Binary predicate object type comparing Point_2s. Must provide
bool operator()(Point_2 p, Point_2 q) where true
is returned iff $$p ==_{xy} q, false otherwise.
 
 
Binary predicate object type comparing Point_2s
lexicographically. Must provide
bool operator()(Point_2 p, Point_2 q) where true
is returned iff $$p <_{xy} q.
We have $$p<_{xy}q, iff $$p_{x} < q_{x} or $$p_{x} = q_{x} and $$p_{y} < q_{y},
where $$p_{x} and $$p_{y} denote $$x and $$y coordinate of point $$p,
respectively.
 
 
Same as Less_xy_2 with the roles of $$x and $$y interchanged.
 
 
Predicate object type that must provide
bool operator()(Point_2 p,Point_2 q,Point_2 r), which
returns true iff r lies to the left of the
oriented line through p and q.
 
 
Predicate object type that must provide
bool operator()(Point_2 p, Point_2 q, Point_2 r,Point_2 s), which returns true iff
the signed distance from $$r to the line $$l_{pq} through $$p and $$q
is smaller than the distance from $$s to $$l_{pq}. It is used to
compute the point right of a line with maximum unsigned distance to
the line. The predicate must provide a total order compatible
with convexity, i.e., for any line segment $$s one of the
endpoints
of $$s is the smallest point among the points on $$s, with respect to
the order given by Less_signed_distance_to_line_2.
 
 
Predicate object type that must provide
bool operator()(Point_2 e, Point_2 p,Point_2 q),
where true is returned iff a tangent at $$e to the point set
$${e,p,q} hits $$p before $$q when rotated counterclockwise around
$$e.
Ties are broken such that the point with larger distance to $$e
is smaller!

Only a copy constructor is required.

The following member functions to create instances of the above predicate object types must exist.










 

 


CGAL::Convex_hull_constructive_traits_2<R>
CGAL::Convex_hull_projective_xy_traits_2<Point_3>
CGAL::Convex_hull_projective_xz_traits_2<Point_3>
CGAL::Convex_hull_projective_yz_traits_2<Point_3>
CGAL::Convex_hull_traits_2<R>