CGAL 6.0.1 - 2D Arrangements
Loading...
Searching...
No Matches
CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2 Class Reference

#include <CGAL/Arr_conic_traits_2.h>

Definition

template<typename RatKernel, typename AlgKernel, typename NtTraits>
class CGAL::Arr_conic_traits_2< RatKernel, AlgKernel, NtTraits >::Construct_curve_2

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.
 
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).
 
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\).
 
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.
 
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).
 
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.
 

Member Function Documentation

◆ 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 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()() [2/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).

◆ 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,
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()() [4/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()() [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

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()() [6/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.