\( \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 Circular Geometry Kernel

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Related Functions
CGAL::Circular_arc_2< CircularKernel > Class Template Reference
Geometric Kernel and Classes

`#include <CGAL/Circular_arc_2.h>`

## Definition

Is Model Of:
  `CircularKernel::CircularArc_2`

See Also
  `CGAL::Circular_arc_point_2<CircularKernel>`
  `CGAL::Line_arc_2<CircularKernel>`

Examples:
  Circular_kernel_2/functor_has_on_2.cpp, and Circular_kernel_2/intersecting_arcs.cpp.

## Related Functions
(Note that these are not member functions.)
bool | operator== (const Circular_arc_2< CircularKernel > &ca1, const Circular_arc_2< CircularKernel > &ca2)
| Test for equality. More...
bool | operator!= (const Circular_arc_2< CircularKernel > &ca1, const Circular_arc_2< CircularKernel > &ca2)
| Test for non-equality.
istream & | operator>> (std::istream &is, Circular_arc_2 &ca)
ostream & | operator<< (std::ostream &os, const Circular_arc_2 &ca)

## Creation
| Circular_arc_2 (const Circle_2< CircularKernel > &c)
| Constructs an arc from a full circle.
| Circular_arc_2 (const Circle_2< CircularKernel > &c, const Circular_arc_point_2< CircularKernel > &p, const Circular_arc_point_2< CircularKernel > &q)
| Constructs the circular arc supported by `c`, whose source is `p` and whose target is `q` when traversing the circle in counterclockwise direction. More...
| Circular_arc_2 (const Point_2< CircularKernel > &p, const Point_2< CircularKernel > &q, const Point_2< CircularKernel > &r)
| Constructs an arc that is supported by the circle of type `Circle_2<CircularKernel>` passing through the points `p`, `q` and `r`. More...

## Access Functions
Circle_2< CircularKernel > | supporting_circle ()
Point_2< CircularKernel > const & | center () const
| returns the center of the supporting circle.
CircularKernel::FT const & | squared_radius () const
| returns the squared radius of the supporting circle.
A circular arc is not oriented. Still, its source and target endpoints can be defined, supposing that its supporting circle in traversed the counterclockwise direction from `source` to `target`.
Circular_arc_point_2 < CircularKernel > | source ()
Circular_arc_point_2 < CircularKernel > | target ()
When the methods `source` and `target` return the same point, then the arc is in fact a full circle. When an arc is x-monotone, its left and right points can be accessed directly:
Circular_arc_point_2 < CircularKernel > | left ()
Circular_arc_point_2 < CircularKernel > | right ()
Bbox_2 | bbox () const
| Returns a bounding box containing the arc.

## Query Functions
bool | is_x_monotone ()
| Tests whether the arc is x-monotone.
bool | is_y_monotone ()
| Tests whether the arc is y-monotone.

## Constructor & Destructor Documentation

template<typename CircularKernel >

CGAL::Circular_arc_2< CircularKernel >::Circular_arc_2 | ( | const Circle_2< CircularKernel > & | c,
|  | const Circular_arc_point_2< CircularKernel > & | p,
|  | const Circular_arc_point_2< CircularKernel > & | q
| ) |  |

Constructs the circular arc supported by `c`, whose source is `p` and whose target is `q` when traversing the circle in counterclockwise direction.

Precondition
  `p` and `q` lie on `c`.

template<typename CircularKernel >

CGAL::Circular_arc_2< CircularKernel >::Circular_arc_2 | ( | const Point_2< CircularKernel > & | p,
|  | const Point_2< CircularKernel > & | q,
|  | const Point_2< CircularKernel > & | r
| ) |  |

Constructs an arc that is supported by the circle of type `Circle_2<CircularKernel>` passing through the points `p`, `q` and `r`.

The source and target are respectively `p` and `r`, when traversing the supporting circle in the counterclockwise direction. Note that, depending on the orientation of the point triple `(p,q,r)`, `q` may not lie on the arc.

Precondition
  `p`, `q`, and `r` are not collinear.

## Member Function Documentation

template<typename CircularKernel >

Circular_arc_point_2<CircularKernel> CGAL::Circular_arc_2< CircularKernel >::left | ( | ) |  |

Precondition
  `ca`.`is_x_monotone()`.

template<typename CircularKernel >

Circular_arc_point_2<CircularKernel> CGAL::Circular_arc_2< CircularKernel >::right | ( | ) |  |

Precondition
  `ca`.`is_x_monotone()`.

## Friends And Related Function Documentation

template<typename CircularKernel >

bool operator== | ( | const Circular_arc_2< CircularKernel > & | ca1,
|  | const Circular_arc_2< CircularKernel > & | ca2
| ) |  |
| related

Test for equality.

Two arcs are equal, iff their non-oriented supporting circles are equal (i.e. they have same center and same squared radius) and their endpoints are equal.