 CGAL 5.6 - 2D Arrangements
CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2 Class Reference

#include <CGAL/Arr_conic_traits_2.h>

## Definition

A functor that constructs a conic arc.

## Public Member Functions

Curve_2 operator() (const typename RatKernel::Segment_2 &seg) const
constructs an arc corresponding to the line segment seg.

Curve_2 operator() (const typename RatKernel::Circle_2 &circ) const
constructs an arc corresponding to the full circle circ (note that this circle has a center point with rational coordinates and rational squared radius).

Curve_2 operator() (const typename RatKernel::Circle_2 &circ, Orientation o, const Point_2 &ps, const Point_2 &pt) const
constructs a circular arc supported by the circle circ, going in the given orientation o from the source point ps to its target point pt. More...

Curve_2 operator() (const typename RatKernel::Point_2 &p1, const typename RatKernel::Point_2 &p2, const typename RatKernel::Point_2 &p3) const
constructs a circular arc going from p1 (its source point) through p2 to p3 (its target point). More...

Curve_2 operator() (const Rational &r, const Rational &s, const Rational &t, const Rational &u, const Rational &v, const Rational &w) const
constructs a conic arc that corresponds to the full conic curve $$r x^2 + s y^2 + t x y + u x + v y + w = 0$$. More...

Curve_2 operator() (const Rational &r, const Rational &s, const Rational &t, const Rational &u, const Rational &v, const Rational &w, Orientation o, const Point_2 &ps, const Point_2 &pt) const
constructs a conic arc supported by the conic curve $$r x^2 + s y^2 + t x y + u x + v y + w = 0$$, going in the given orientation o from the source point ps to its target point pt. More...

Curve_2 operator() (const typename RatKernel::Point_2 &p1, const typename RatKernel::Point_2 &p2, const typename RatKernel::Point_2 &p3, const typename RatKernel::Point_2 &p4, const typename RatKernel::Point_2 &p5) const
constructs a conic arc going from p1 (its source point) through p2, p3 and p4 (in this order) to p5 (its target point). More...

Curve_2 operator() (const Rational &r, const Rational &s, const Rational &t, const Rational &u, const Rational &v, const Rational &w, Orientation o, const Point_2 &app_ps, const Rational &r1, const Rational &s1, const Rational &t1, const Rational &u1, const Rational &v1, const Rational &w1, const Point_2 &app_pt, const Rational &r2, const Rational &s2, const Rational &t2, const Rational &u2, const Rational &v2, const Rational &w2) const
constructs a conic arc supported by the conic curve $$r x^2 + s y^2 + t x y + u x + v y + w = 0$$, going in the given orientation o from its source point to its target Point. More...

## ◆ operator()() [1/6]

template<typename RatKernel , typename AlgKernel , typename NtTraits >
 Curve_2 CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2::operator() ( const typename RatKernel::Circle_2 & circ, Orientation o, const Point_2 & ps, const Point_2 & pt ) const

constructs a circular arc supported by the circle circ, going in the given orientation o from the source point ps to its target point pt.

Precondition
ps and pt both lie on the circle circ.
o is not COLLINEAR.

## ◆ operator()() [2/6]

template<typename RatKernel , typename AlgKernel , typename NtTraits >
 Curve_2 CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2::operator() ( const typename RatKernel::Point_2 & p1, const typename RatKernel::Point_2 & p2, const typename RatKernel::Point_2 & p3 ) const

constructs a circular arc going from p1 (its source point) through p2 to p3 (its target point).

Note that all three points have rational coordinates. The orientation of the arc is determined automatically.

Precondition
The three points are not collinear.

## ◆ operator()() [3/6]

template<typename RatKernel , typename AlgKernel , typename NtTraits >
 Curve_2 CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2::operator() ( const Rational & r, const Rational & s, const Rational & t, const Rational & u, const Rational & v, const Rational & w ) const

constructs a conic arc that corresponds to the full conic curve $$r x^2 + s y^2 + t x y + u x + v y + w = 0$$.

Precondition
As a conic arc must be bounded, the given curve must be an ellipse, that is $$4 r s - t^2 > 0$$.

## ◆ operator()() [4/6]

template<typename RatKernel , typename AlgKernel , typename NtTraits >
 Curve_2 CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2::operator() ( const Rational & r, const Rational & s, const Rational & t, const Rational & u, const Rational & v, const Rational & w, Orientation o, const Point_2 & ps, const Point_2 & pt ) const

constructs a conic arc supported by the conic curve $$r x^2 + s y^2 + t x y + u x + v y + w = 0$$, going in the given orientation o from the source point ps to its target point pt.

Precondition
ps and pt both satisfy the equation of the supporting conic curve and define a bounded segment of this curve (e.g. in case of a hyperbolic arc, both point should be located on the same branch of the hyperbola).
o is not COLLINEAR if the supporting conic is curves, and must be COLLINEAR if it is not curved (a line or a line-pair).

## ◆ operator()() [5/6]

template<typename RatKernel , typename AlgKernel , typename NtTraits >
 Curve_2 CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2::operator() ( const typename RatKernel::Point_2 & p1, const typename RatKernel::Point_2 & p2, const typename RatKernel::Point_2 & p3, const typename RatKernel::Point_2 & p4, const typename RatKernel::Point_2 & p5 ) const

constructs a conic arc going from p1 (its source point) through p2, p3 and p4 (in this order) to p5 (its target point).

Note that all five points have rational coordinates. The orientation of the arc is determined automatically.

Precondition
No three points of the five are not collinear.
The five points define a valid arc, in their given order.

## ◆ operator()() [6/6]

template<typename RatKernel , typename AlgKernel , typename NtTraits >
 Curve_2 CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2::operator() ( const Rational & r, const Rational & s, const Rational & t, const Rational & u, const Rational & v, const Rational & w, Orientation o, const Point_2 & app_ps, const Rational & r1, const Rational & s1, const Rational & t1, const Rational & u1, const Rational & v1, const Rational & w1, const Point_2 & app_pt, const Rational & r2, const Rational & s2, const Rational & t2, const Rational & u2, const Rational & v2, const Rational & w2 ) const

constructs a conic arc supported by the conic curve $$r x^2 + s y^2 + t x y + u x + v y + w = 0$$, going in the given orientation o from its source point to its target Point.

In this case only some approximations of the endpoints (app_ps and app_pt, respectively) is available, and their exact locations are given implicitly, specified by the intersections of the supporting conic curve with $$r_1 x^2 + s_1 y^2 + t_1 x y + u_1 x + v_1 y + w_1 = 0$$ and $$r_2 x^2 + s_2 y^2 + t_2 x y + u_2 x + v_2 y + w_2 = 0$$, respectively.

Precondition
The two auxiliary curves specifying the endpoints really intersect with the supporting conic curve, such that the arc endpoints define a bounded segment of the supporting curve (e.g. in case of a hyperbolic arc, both point should be located on the same branch of the hyperbola).
o is not COLLINEAR if the supporting conic is curves, and must be COLLINEAR if it is not curved (a line or a line-pair).