CGAL::Circular_arc_2<CircularKernel>

#include <CGAL/Circular_arc_2.h>

Is Model for the Concepts

CircularKernel::CircularArc_2

Creation

Circular_arc_2<CircularKernel> ca ( Circle_2<CircularKernel> c);
Constructs an arc from a full circle.


Circular_arc_2<CircularKernel> ca ( Circle_2<CircularKernel> c,
Circular_arc_point_2<CircularKernel> p,
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<CircularKernel> ca ( Point_2<CircularKernel> p, Point_2<CircularKernel> q, 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.

Access Functions

Circle_2<CircularKernel> ca.supporting_circle ()

Point_2<CircularKernel> ca.center () const returns the center of the supporting circle.
CircularKernel::FT ca.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>
ca.source ()
Circular_arc_point_2<CircularKernel>
ca.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>
ca.left ()
Precondition: ca.is_x_monotone().
Circular_arc_point_2<CircularKernel>
ca.right ()
Precondition: ca.is_x_monotone().

Bbox_2 ca.bbox () const Returns a bounding box containing the arc.

Query Functions

bool ca.is_x_monotone () Tests whether the arc is x-monotone.
bool ca.is_y_monotone () Tests whether the arc is y-monotone.

Operations

bool ca1 == ca2 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.

bool ca1 != ca2 Test for non-equality

I/O

istream& std::istream& is >> Circular_arc_2 & ca
ostream& std::ostream& os << Circular_arc_2 ca

See Also

CGAL::Circular_arc_point_2<CircularKernel>
CGAL::Line_arc_2<CircularKernel>