\( \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.1 - Bounding Volumes
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
MinQuadrilateralTraits_2 Concept Reference

Definition

The concept MinQuadrilateralTraits_2 defines types and operations needed to compute minimum enclosing quadrilaterals of a planar point set using the functions min_rectangle_2, min_parallelogram_2 and min_strip_2.

Has Models:
CGAL::Min_quadrilateral_default_traits_2<K>
See Also
CGAL::min_rectangle_2()
CGAL::min_parallelogram_2()
CGAL::min_strip_2()

Types

typedef unspecified_type Point_2
 type for representing points.
 
typedef unspecified_type Vector_2
 type for representing vectors.
 
typedef unspecified_type Direction_2
 type for representing directions.
 
typedef unspecified_type Line_2
 type for representing lines.
 
typedef unspecified_type Rectangle_2
 type for representing (not necessarily axis-parallel) rectangles.
 
typedef unspecified_type Parallelogram_2
 type for representing parallelograms.
 
typedef unspecified_type Strip_2
 type for representing strips, that is the closed region bounded by two parallel lines.
 

Predicates

typedef unspecified_type Equal_2
 a model for Kernel::Equal_2.
 
typedef unspecified_type Less_xy_2
 a model for Kernel::Less_xy_2.
 
typedef unspecified_type Less_yx_2
 a model for Kernel::Less_yx_2.
 
typedef unspecified_type Has_on_negative_side_2
 a model for Kernel::Has_on_negative_side_2.
 
typedef unspecified_type Compare_angle_with_x_axis_2
 a model for Kernel::Compare_angle_with_x_axis_2.
 
typedef unspecified_type Area_less_rectangle_2
 AdaptableFunctor op: Rectangle_2 \( \times\) Rectangle_2 \( \rightarrow\) bool. More...
 
typedef unspecified_type Area_less_parallelogram_2
 AdaptableFunctor op: Parallelogram_2 \( \times\) Parallelogram_2 \( \rightarrow\) bool. More...
 
typedef unspecified_type Width_less_strip_2
 AdaptableFunctor op: Strip_2 \( \times\) Strip_2 \( \rightarrow\) bool. More...
 
typedef unspecified_type Orientation_2
 a model for Kernel::Orientation_2. More...
 

Constructions

typedef unspecified_type Construct_vector_2
 a model for Kernel::Construct_vector_2.
 
typedef unspecified_type Construct_vector_from_direction_2
 AdaptableFunctor. More...
 
typedef unspecified_type Construct_perpendicular_vector_2
 a model for Kernel::Construct_perpendicular_vector_2.
 
typedef unspecified_type Construct_direction_2
 a model for Kernel::Construct_direction_2.
 
typedef unspecified_type Construct_opposite_direction_2
 a model for Kernel::Construct_opposite_direction_2.
 
typedef unspecified_type Construct_line_2
 a model for Kernel::Construct_line_2.
 
typedef unspecified_type Construct_rectangle_2
 Function class op: Point_2 \( \times\) Direction_2 \( \times\) Point_2 \( \times\) Point_2 \( \times\) Point_2 \( \rightarrow\) Rectangle_2. More...
 
typedef unspecified_type Construct_parallelogram_2
 Function class. More...
 
typedef unspecified_type Construct_strip_2
 Function class op: Point_2 \( \times\) Direction_2 \( \times\) Point_2 \( \rightarrow\) Strip_2. More...
 

Operations

Additionally, for each of the predicate and construction functor types listed above, there must exist a member function that requires no arguments and returns an instance of that functor type.

The name of the member function is the uncapitalized name of the type returned with the suffix _object appended. For example, for the functor type Construct_vector_2 the following member function must exist:

template<class OutputIterator >
OutputIterator copy_rectangle_vertices_2 (const Rectangle_2 &r, OutputIterator o) const
 copies the four vertices of r in counterclockwise order to o.
 
template<class OutputIterator >
OutputIterator copy_parallelogram_vertices_2 (const Parallelogram_2 &p, OutputIterator o) const
 copies the four vertices of p in counterclockwise order to o.
 
template<class OutputIterator >
OutputIterator copy_strip_lines_2 (const Strip_2 &s, OutputIterator o) const
 copies the two lines bounding s to o.
 
Construct_vector_2 construct_vector_2_object () const
 

Member Typedef Documentation

AdaptableFunctor op: Parallelogram_2 \( \times\) Parallelogram_2 \( \rightarrow\) bool.

op(p1,p2) returns true, iff the area of \( p1\) is strictly less than the area of \( p2\).

AdaptableFunctor op: Rectangle_2 \( \times\) Rectangle_2 \( \rightarrow\) bool.

op(r1,r2) returns true, iff the area of \( r1\) is strictly less than the area of \( r2\).

Function class.

op: Point_2 \( \times\) Direction_2 \( \times\) Point_2 \( \times\) Direction_2 \( \times\) Point_2 \( \times\) Point_2 \( \rightarrow\) Rectangle_2. If the points p1,p2,p3,p4 form the boundary of a convex polygon (oriented counterclockwise), op(p1,d1,p2,d2,p3,p4) returns the parallelogram with one of the points on each side and one side parallel to each of d1 and d2.

Function class op: Point_2 \( \times\) Direction_2 \( \times\) Point_2 \( \times\) Point_2 \( \times\) Point_2 \( \rightarrow\) Rectangle_2.

If the points p1,p2,p3,p4 form the boundary of a convex polygon (oriented counterclockwise), op(p1,d,p2,p3,p4) returns the rectangle with one of the points on each side and one sides parallel to d.

Function class op: Point_2 \( \times\) Direction_2 \( \times\) Point_2 \( \rightarrow\) Strip_2.

op(p1,d,p2) returns the strip bounded by the lines through p1 resp. p2 with direction d.

AdaptableFunctor.

op: Direction_2 \( \rightarrow\) Vector_2.

op(d) returns a vector in direction d.

a model for Kernel::Orientation_2.

Remarks
The following type is used for expensive precondition checking only.

AdaptableFunctor op: Strip_2 \( \times\) Strip_2 \( \rightarrow\) bool.

op(s1,s2) returns true, iff the width of \( s1\) is strictly less than the width of \( s2\).