\( \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.8 - 2D Polygon Partitioning

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
OptimalConvexPartitionTraits_2 Concept Reference
Concepts

## Definition

Requirements of a traits class to be used with the function `optimal_convex_partition_2()` that computes an optimal convex partition of a polygon.

Refines:
  `PartitionTraits_2`

Has Models:
  `CGAL::Partition_traits_2<R>`

See Also
  `CGAL::convex_partition_is_valid_2()`
  `CGAL::Partition_is_valid_traits_2<Traits, PolygonIsValid>`

## Types
In addition to the types listed with the concept `PartitionTraits_2`, the following types are required:
typedef unspecified_type | Segment_2
| A segment type.
typedef unspecified_type | Ray_2
| A ray type.
typedef unspecified_type | Object_2
| A general object type that can be either a point or a segment.
typedef unspecified_type | Construct_segment_2
| Function object type that provides `Segment_2 operator()(Point_2 p, Point_2 q)`, which constructs and returns the segment defined by the points \( p\) and \( q\).
typedef unspecified_type | Construct_ray_2
| Function object type that provides `Ray_2 operator()(Point_2 p, Point_2 q)`, which constructs and returns the ray from point \( p\) through point \( q\).
typedef unspecified_type | Collinear_are_ordered_along_line_2
| Predicate object type that determines orderings of `Point_2` 's on a line. More...
typedef unspecified_type | Are_stritcly_ordered_along_line_2
| Predicate object type that determines orderings of `Point_2` 's. More...
typedef unspecified_type | Intersect_2
| Function object type that provides `Object_2 operator()(Segment_2 s1, Segment_2 s2)` that returns the intersection of two segments (which may be either a segment or a point).
typedef unspecified_type | Assign_2
| Function object type that provides `bool operator()(Segment_2 s1, Object_2 o)` that returns `true` if `o` is a segment and assigns the value of `o` to `s1`; returns `false` otherwise.

## Creation
Only a copy constructor is required.
| OptimalConvexPartitionTraits_2 (OptimalConvexPartitionTraits_2 tr)

## Operations
In addition to the functions required by `PartitionTraits_2`, the following functions that create instances of the above function object types must exist:
Collinear_are_ordered_along_line_2 | collinear_are_ordered_along_line_2_object () const
Construct_segment_2 | construct_segment_2_object () const
Construct_ray_2 | construct_ray_2_object () const
Are_strictly_ordered_along_line_2 | are_strictly_ordered_along_line_2_object () const

## Member Typedef Documentation

typedef unspecified_type OptimalConvexPartitionTraits_2::Are_stritcly_ordered_along_line_2

Predicate object type that determines orderings of `Point_2` 's.

Must provide `bool operator()(Point_2 p, Point_2 q, Point_2 r)` that returns `true`, iff the three points are collinear and `q` lies strictly between `p` and `r`. Note that `false` should be returned if `q==p` or `q==r`.

typedef unspecified_type OptimalConvexPartitionTraits_2::Collinear_are_ordered_along_line_2

Predicate object type that determines orderings of `Point_2` 's on a line.

Must provide `bool operator()(Point_2 p, Point_2 q, Point_2 r)` that returns `true`, iff `q` lies between `p` and `r` and `p`, `q`, and `r` satisfy the precondition that they are collinear.