CGAL 5.3 - 2D Circular Geometry Kernel
CGAL::Circular_arc_2< CircularKernel > Class Template Reference

#include <CGAL/Circular_arc_2.h>

Definition

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< CircularKernelsupporting_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< CircularKernelsource ()
 
Circular_arc_point_2< CircularKerneltarget ()
 

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< CircularKernelleft ()
 
Circular_arc_point_2< CircularKernelright ()
 
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

◆ Circular_arc_2() [1/2]

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.

◆ Circular_arc_2() [2/2]

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

◆ left()

template<typename CircularKernel >
Circular_arc_point_2<CircularKernel> CGAL::Circular_arc_2< CircularKernel >::left ( )
Precondition
ca.is_x_monotone().

◆ right()

template<typename CircularKernel >
Circular_arc_point_2<CircularKernel> CGAL::Circular_arc_2< CircularKernel >::right ( )
Precondition
ca.is_x_monotone().

Friends And Related Function Documentation

◆ operator==()

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.