\( \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 Arrangements

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Classes
CGAL::Arr_circle_segment_traits_2< Kernel > Class Template Reference
Traits Classes

`#include <CGAL/Arr_circle_segment_traits_2.h>`

## Definition

The class `Arr_circle_segment_traits_2` is a model of the `ArrangementTraits_2` concept and can be used to construct and maintain arrangements of circular arcs and line segments.

The traits class must be instantiated with a geometric kernel, such that the supporting circles of the circular arcs are of type `Kernel::Circle_2` and the supporting lines of the line segments are of type `Kernel::Line_2`. Thus, the coordinates of the center of supporting circles, and its squared radius are of type `Kernel::FT`, which should be an exact rational number-type; similarly, the coefficients of each supporting line \( ax + by + c = 0\) are also of type `Kernel::FT`. Note however that the intersection point between two such arcs do not have rational coordinates in general. For this reason, we do not require the endpoints of the input arcs and segments to have rational coordinates.

The nested `Point_2` type defined by the traits class is therefore different than the `Kernel::Point_2` type. Its coordinates are of type `CoordNT`, which an instantiation of `Sqrt_extension<NT,ROOT>` where `NT = ROOT = Kernel::FT`. Moreover, the third and fourth (hidden) template parameters of `Sqrt_extension<NT,ROOT>` are set to `CGAL::Tag_true`, which enables efficient comparison among different extensions.

For more details see the documentation of `Sqrt_extension<NT,ROOT>`.

While `Arr_circle_segment_traits_2` models the concept `ArrangementDirectionalXMonotoneTraits_2`, the implementation of the `Are_mergeable_2` operation does not enforce the input curves to have the same direction as a precondition. Moreover, `Arr_circle_segment_traits_2` supports the merging of curves of opposite directions.

Is Model Of:

  `ArrangementTraits_2`

  `ArrangementDirectionalXMonotoneTraits_2`

Examples:
  Arrangement_on_surface_2/circles.cpp, Arrangement_on_surface_2/circular_arcs.cpp, and Arrangement_on_surface_2/edge_manipulation_curve_history.cpp.

## Classes
class | Curve_2
| The `Curve_2` class nested within the traits class can represent arbitrary circular arcs, full circles and line segments and support their construction in various ways. More...
class | Point_2
| The `Point_2` number-type nested within the traits class represents a Cartesian point whose coordinates are algebraic numbers of type `CoordNT`. More...
class | X_monotone_curve_2
| The `X_monotone_curve_2` class nested within the traits class can represent \( x\)-monotone and line segments (which are always weakly \( x\)-monotone). More...