CGAL 6.1.1 - Bounding Volumes

Loading...
Searching...
No Matches
List of all members
MinQuadrilateralTraits_2 Concept Reference
Reference Manual » Concepts

## 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::LessXY_2`.
typedef unspecified_type | Less_yx_2
| a model for `Kernel::LessYX_2`.
typedef unspecified_type | Has_on_negative_side_2
| a model for `Kernel::HasOnNegativeSide_2`.
typedef unspecified_type | Compare_angle_with_x_axis_2
| a model for `Kernel::CompareAngleWithXAxis_2`.
typedef unspecified_type | Area_less_rectangle_2
| AdaptableFunctor `op`: `Rectangle_2` \( \times\) `Rectangle_2` \( \rightarrow\) `bool`.
typedef unspecified_type | Area_less_parallelogram_2
| AdaptableFunctor `op`: `Parallelogram_2` \( \times\) `Parallelogram_2` \( \rightarrow\) `bool`.
typedef unspecified_type | Width_less_strip_2
| AdaptableFunctor `op`: `Strip_2` \( \times\) `Strip_2` \( \rightarrow\) `bool`.
typedef unspecified_type | Orientation_2
| a model for `Kernel::Orientation_2`.

## Constructions
typedef unspecified_type | Construct_vector_2
| a model for `Kernel::ConstructVector_2`.
typedef unspecified_type | Construct_vector_from_direction_2
| AdaptableFunctor.
typedef unspecified_type | Construct_perpendicular_vector_2
| a model for `Kernel::ConstructPerpendicularVector_2`.
typedef unspecified_type | Construct_direction_2
| a model for `Kernel::ConstructDirection_2`.
typedef unspecified_type | Construct_opposite_direction_2
| a model for `Kernel::ConstructOppositeDirection_2`.
typedef unspecified_type | Construct_line_2
| a model for `Kernel::ConstructLine_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`.
typedef unspecified_type | Construct_parallelogram_2
| Function class.
typedef unspecified_type | Construct_strip_2
| Function class `op`: `Point_2` \( \times\) `Direction_2` \( \times\) `Point_2` \( \rightarrow\) `Strip_2`.

## 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

## ◆ Area_less_parallelogram_2

typedef unspecified_type MinQuadrilateralTraits_2::Area_less_parallelogram_2

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\).

## ◆ Area_less_rectangle_2

typedef unspecified_type MinQuadrilateralTraits_2::Area_less_rectangle_2

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\).

## ◆ Construct_parallelogram_2

typedef unspecified_type MinQuadrilateralTraits_2::Construct_parallelogram_2

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`.

## ◆ Construct_rectangle_2

typedef unspecified_type MinQuadrilateralTraits_2::Construct_rectangle_2

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`.

## ◆ Construct_strip_2

typedef unspecified_type MinQuadrilateralTraits_2::Construct_strip_2

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`.

## ◆ Construct_vector_from_direction_2

typedef unspecified_type MinQuadrilateralTraits_2::Construct_vector_from_direction_2

AdaptableFunctor.

`op`: `Direction_2` \( \rightarrow\) `Vector_2`.

`op(d)` returns a vector in direction `d`.

## ◆ Orientation_2

typedef unspecified_type MinQuadrilateralTraits_2::Orientation_2

a model for `Kernel::Orientation_2`.

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

## ◆ Width_less_strip_2

typedef unspecified_type MinQuadrilateralTraits_2::Width_less_strip_2

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\).