\( \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
ArrangementTraits_2 Concept Reference
Traits Concepts

## Definition

The concept `ArrangementTraits_2` allows the construction of arrangement of general planar curves. Models of this concept are used by the free `CGAL::insert()` functions of the arrangement package and by the `CGAL::Arrangement_with_history_2` class.

A model of this concept must define the nested `Curve_2` type, which represents a general planar curve that is not necessarily \( x\)-monotone and is not necessarily connected. Such curves are eventually subdivided into \( x\)-monotone subcurves and isolated points (represented by the `Point_2` and `X_monotone_curve_2` types, defined in the basic traits concept).

A model of the concept `ArrangementTraits_2` that handles arbitrary curves, which are always \( x\)-monotone, such as a traits class that handles linear curves may define the nested types `Curve_2` and `X_monotone_curve_2` to be of equivalent types. Moreover, defining them as of equivalent types is advantageous, as it enables a generic simple implementation of the nested Functor `Make_x_monotone_2`.

On the other hand, a model of the `ArrangementTraits_2` concept that handles arbitrary curves, which may be not \( x\)-monotone must define the `Curve_2` and `X_monotone_curve_2` nested types to be of different types to allow proper dispatching of the free functions that accept such curves, such as `intsert()`.

Refines:
  `ArrangementXMonotoneTraits_2`

Has Models:

  `CGAL::Arr_segment_traits_2<Kernel>`

  `CGAL::Arr_non_caching_segment_traits_2<Kernel>`

  `CGAL::Arr_linear_traits_2<Kernel>`

  `CGAL::Arr_polyline_traits_2<SegmentTraits>`

  `CGAL::Arr_circle_segment_traits_2<Kernel>`

  `CGAL::Arr_line_arc_traits_2<CircularKernel>`

  `CGAL::Arr_circular_arc_traits_2<CircularKernel>`

  `CGAL::Arr_circular_line_arc_traits_2<CircularKernel>`

  `CGAL::Arr_conic_traits_2<RatKernel,AlgKernel,NtTraits>`

  `CGAL::Arr_rational_function_traits_2<AlgebraicKernel_d_1>`

  `CGAL::Arr_Bezier_curve_traits_2<RatKernel,AlgKernel,NtTraits>`

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

## Types
typedef unspecified_type | Curve_2
| models the concept `ArrTraits::Curve_2`.

## Functor Types
typedef unspecified_type | Make_x_monotone_2
| models the concept `ArrTraits::MakeXMonotone_2`.

## Accessing Functor Objects
Make_x_monotone_2 | make_x_monotone_2_object () const