\( \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.3 - 2D Arrangements

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

## Definition

Several predicates are required to handle \( x\)-monotone curves that approach infinity and thus approach the boundary of the parameter space. These predicates are sufficient to handle not only curves embedded in an unbounded parameter space, but also curves embedded in a bounded parameter space with open boundaries. Models of the concept `ArrangementOpenBoundaryTraits_2` handle curves that approach the boundary of a parameter space. This concept refines the concept `ArrangementBasicTraits_2`. The arrangement template instantiated with a traits class that models this concept can handle \( x\)-monotone curves that are unbounded in any direction. The concept `ArrangementOpenBoundaryTraits_2`, nontheless, also supports planar \( x\)-monotone curves that reach the boundary of an open yet bounded parameter space.

An \( x\)-monotone curve may be closed, in which case its endpoints are representable as `Point_2` objects, or open at the boundary of the parameter space. It can have one open end and one closed end (e.g., a ray). The nature of the \( x\)-monotone curves, whether they are expected to be closed or not at any one of the four boundary-sides, is conveyed through the definition of the four nested types `Left_side_category`, `Right_side_category`, `Bottom_side_category`, and `Top_side_category`. If some curves handled by a model of the concept `ArrangementOpenBoundaryTraits_2` are expected to be open on the left, the nested type `Left_side_category` must be convertible to `Arr_open_side_tag`. Similarly, if some curves handled by the concept are expected to be open on the right, open at the bottom, or open at the top, the corresponding nested type must be convertible to `Arr_open_side_tag`. A model of the concept `ArrangementOpenBoundaryTraits_2` must have all the four categories convertible to `Arr_open_side_tag`.We intend to introduce more concepts that require only a subset of the categories to be convertible to `Arr_open_side_tag`. In this case the Dcel of the arrangement instantiated with the model is initialized with an implicit bounding rectangle. When the parameter space is bounded, it is the exact geometric embedding of the implicit bounding rectangle.

Refines:
  `ArrangementBasicTraits_2`

Has Models:

  `CGAL::Arr_linear_traits_2<Kernel>`

  `CGAL::Arr_rational_function_traits_2<AlgebraicKernel_d_1>`

  `CGAL::Arr_algebraic_segment_traits_2<Coefficient>`

  `CGAL::Arr_curve_data_traits_2<Tr,XData,Mrg,CData,Cnv>`

  `CGAL::Arr_consolidated_curve_data_traits_2<Traits,Data>`

See Also
  `ArrangementBasicTraits_2`
  `ArrangementXMonotoneTraits_2`
  `ArrangementLandmarkTraits_2`
  `ArrangementTraits_2`

## Categories
typedef unspecified_type | Left_side_category
| Must be convertible to either `Arr_oblivious_side_tag` or `Arr_open_side_tag`.
typedef unspecified_type | Bottom_side_category
| Must be convertible to either `Arr_oblivious_side_tag` or `Arr_open_side_tag`.
typedef unspecified_type | Top_side_category
| Must be convertible to either `Arr_oblivious_side_tag` or `Arr_open_side_tag`.
typedef unspecified_type | Right_side_category
| Must be convertible to either `Arr_oblivious_side_tag` or `Arr_open_side_tag`.

## Functor Types
typedef unspecified_type | Parameter_space_in_x_2
| models the concept `ArrTraits::ParameterSpaceInX_2`. More...
typedef unspecified_type | Compare_y_near_boundary_2
| models the concept `ArrTraits::CompareYNearBoundary_2`. More...
typedef unspecified_type | Parameter_space_in_y_2
| models the concept `ArrTraits::ParameterSpaceInY_2`. More...
typedef unspecified_type | Compare_x_at_limit_2
| models the concept `ArrTraits::CompareXAtLimit_2`. More...
typedef unspecified_type | Compare_x_near_limit_2
| models the concept `ArrTraits::CompareXNearLimit_2`. More...

## Accessing Functor Objects
Parameter_space_in_x_2 | parameter_space_in_x_2_object () const
Compare_y_near_boundary_2 | compare_y_near_boundary_2_object () const
Parameter_space_in_y_2 | parameter_space_in_y_2_object () const
Compare_x_at_limit_2 | compare_x_at_limit_2_object () const
Compare_x_near_limit_2 | compare_x_near_limit_2_object () const

## Member Typedef Documentation

typedef unspecified_type ArrangementOpenBoundaryTraits_2::Compare_x_at_limit_2

models the concept `ArrTraits::CompareXAtLimit_2`.

Required only if the traits class supports unbounded curves that approach the bottom or the top sides (the `Bottom_side_category` or the `Top_side_category` categories are convertible to `Arr_open_side_tag`).

typedef unspecified_type ArrangementOpenBoundaryTraits_2::Compare_x_near_limit_2

models the concept `ArrTraits::CompareXNearLimit_2`.

Required only if the traits class supports unbounded curves that approach the bottom or the top sides (the `Bottom_side_category` or the `Top_side_category` categories are convertible to `Arr_open_side_tag`).

typedef unspecified_type ArrangementOpenBoundaryTraits_2::Compare_y_near_boundary_2

models the concept `ArrTraits::CompareYNearBoundary_2`.

Required only if the traits class supports unbounded curves that approach the left or the right sides (the `Left_side_category` or the `Right_side_category` categories are convertible to `Arr_open_side_tag`).

typedef unspecified_type ArrangementOpenBoundaryTraits_2::Parameter_space_in_x_2

models the concept `ArrTraits::ParameterSpaceInX_2`.

Required only if the traits class supports unbounded curves that approach the left or the right sides (the `Left_side_category` or the `Right_side_category` categories are convertible to `Arr_open_side_tag`).

typedef unspecified_type ArrangementOpenBoundaryTraits_2::Parameter_space_in_y_2

models the concept `ArrTraits::ParameterSpaceInY_2`.

Required only if the traits class supports unbounded curves that approach the bottom or the top sides (the `Bottom_side_category` or the `Top_side_category` categories are convertible to `Arr_open_side_tag`).