ClothoidCurve Class Reference

Clothoids: G2lib::ClothoidCurve Class Reference
Clothoids
G2lib::ClothoidCurve Class Reference

#include <Clothoid.hxx>

Inheritance diagram for G2lib::ClothoidCurve:
G2lib::BaseCurve

Public Member Functions

 ClothoidCurve (string const &name)
 
 ClothoidCurve (ClothoidCurve const &s)
 
void setup (GenericContainer const &gc) override
 
 ClothoidCurve (real_type x0, real_type y0, real_type theta0, real_type k, real_type dk, real_type L, string const &name)
 
 ClothoidCurve (real_type const P0[], real_type theta0, real_type const P1[], real_type theta1, string const &name)
 
void copy (ClothoidCurve const &c)
 
 ClothoidCurve (LineSegment const &LS)
 
 ClothoidCurve (CircleArc const &C)
 
 ClothoidCurve (BaseCurve const *pC)
 
ClothoidCurve const & operator= (ClothoidCurve const &s)
 
CurveType type () const override
 
void build (real_type x0, real_type y0, real_type theta0, real_type k, real_type dk, real_type L)
 
int build_G1 (real_type x0, real_type y0, real_type theta0, real_type x1, real_type y1, real_type theta1, real_type tol=1e-12)
 
int build_G1_D (real_type x0, real_type y0, real_type theta0, real_type x1, real_type y1, real_type theta1, real_type L_D[2], real_type k_D[2], real_type dk_D[2], real_type tol=1e-12)
 
bool build_forward (real_type x0, real_type y0, real_type theta0, real_type kappa0, real_type x1, real_type y1, real_type tol=1e-12)
 
void build (LineSegment const &LS)
 
void build (CircleArc const &)
 
void build (ClothoidCurve const &)
 
void build (Biarc const &)
 
void build (PolyLine const &)
 
void build (BiarcList const &)
 
void build (ClothoidList const &)
 
void build (Dubins const &)
 
void build (Dubins3p const &)
 
void Pinfinity (real_type &x, real_type &y, bool plus=true) const
 
real_type dkappa () const
 
real_type theta_total_variation () const
 
real_type theta_min_max (real_type &thMin, real_type &thMax) const
 
real_type delta_theta () const
 
real_type curvature_min_max (real_type &kMin, real_type &kMax) const
 
real_type curvature_total_variation () const
 
real_type integral_curvature2 () const
 
real_type integral_jerk2 () const
 
real_type integral_snap2 () const
 
void optimized_sample_ISO (real_type offs, integer npts, real_type max_angle, vector< real_type > &s) const
 
void optimized_sample_SAE (real_type offs, integer npts, real_type max_angle, vector< real_type > &s) const
 
real_type closest_point_by_sample (real_type ds, real_type qx, real_type qy, real_type &X, real_type &Y, real_type &S) const
 
real_type distance_by_sample (real_type ds, real_type qx, real_type qy, real_type &S) const
 
real_type distance_by_sample (real_type ds, real_type qx, real_type qy) const
 
bool bbTriangle (real_type &xx0, real_type &yy0, real_type &xx1, real_type &yy1, real_type &xx2, real_type &yy2) const
 
bool bbTriangle_ISO (real_type offs, real_type &xx0, real_type &yy0, real_type &xx1, real_type &yy1, real_type &xx2, real_type &yy2) const
 
bool bbTriangle_SAE (real_type offs, real_type &xx0, real_type &yy0, real_type &xx1, real_type &yy1, real_type &xx2, real_type &yy2) const
 
bool bbTriangle (Triangle2D &t, integer icurve=0) const
 
bool bbTriangle_ISO (real_type offs, Triangle2D &t, integer icurve=0) const
 
bool bbTriangle_SAE (real_type offs, Triangle2D &t, integer icurve=0) const
 
void bb_triangles_ISO (real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override
 
void bb_triangles_SAE (real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override
 
void bb_triangles (vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override
 
void bbox (real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
 
void bbox_ISO (real_type offs, real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override
 
real_type length () const override
 
real_type length_ISO (real_type) const override
 
real_type theta_begin () const override
 
real_type kappa_begin () const override
 
real_type x_begin () const override
 
real_type x_end () const override
 
real_type y_begin () const override
 
real_type y_end () const override
 
real_type tx_begin () const override
 
real_type ty_begin () const override
 
real_type nx_begin_ISO () const override
 
real_type ny_begin_ISO () const override
 
real_type tx (real_type s) const override
 
real_type ty (real_type s) const override
 
real_type tx_D (real_type s) const override
 
real_type ty_D (real_type s) const override
 
real_type tx_DD (real_type s) const override
 
real_type ty_DD (real_type s) const override
 
real_type tx_DDD (real_type s) const override
 
real_type ty_DDD (real_type s) const override
 
void tg (real_type s, real_type &tx, real_type &ty) const override
 
void tg_D (real_type s, real_type &tx_D, real_type &ty_D) const override
 
void tg_DD (real_type s, real_type &tx_DD, real_type &ty_DD) const override
 
void tg_DDD (real_type s, real_type &tx_DDD, real_type &ty_DDD) const override
 
real_type theta (real_type s) const override
 
real_type theta_D (real_type s) const override
 
real_type theta_DD (real_type) const override
 
real_type theta_DDD (real_type) const override
 
real_type X (real_type s) const override
 
real_type X_D (real_type s) const override
 
real_type X_DD (real_type s) const override
 
real_type X_DDD (real_type s) const override
 
real_type Y (real_type s) const override
 
real_type Y_D (real_type s) const override
 
real_type Y_DD (real_type s) const override
 
real_type Y_DDD (real_type s) const override
 
real_type X_ISO (real_type s, real_type offs) const override
 
real_type X_ISO_D (real_type s, real_type offs) const override
 
real_type X_ISO_DD (real_type s, real_type offs) const override
 
real_type X_ISO_DDD (real_type s, real_type offs) const override
 
real_type Y_ISO (real_type s, real_type offs) const override
 
real_type Y_ISO_D (real_type s, real_type offs) const override
 
real_type Y_ISO_DD (real_type s, real_type offs) const override
 
real_type Y_ISO_DDD (real_type s, real_type offs) const override
 
void eval (real_type s, real_type &x, real_type &y) const override
 
void eval_D (real_type s, real_type &x_D, real_type &y_D) const override
 
void eval_DD (real_type s, real_type &x_DD, real_type &y_DD) const override
 
void eval_DDD (real_type s, real_type &x_DDD, real_type &y_DDD) const override
 
void eval_ISO (real_type s, real_type offs, real_type &x, real_type &y) const override
 
void eval_ISO_D (real_type s, real_type offs, real_type &x_D, real_type &y_D) const override
 
void eval_ISO_DD (real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const override
 
void eval_ISO_DDD (real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const override
 
void translate (real_type tx, real_type ty) override
 translate curve by \((t_x,t_y)\)
 
void rotate (real_type angle, real_type cx, real_type cy) override
 
void scale (real_type s) override
 
void reverse () override
 
void change_origin (real_type newx0, real_type newy0) override
 
void trim (real_type s_begin, real_type s_end) override
 
void change_curvilinear_origin (real_type s0, real_type newL)
 
integer closest_point_ISO (real_type qx, real_type qy, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const override
 
integer closest_point_ISO (real_type qx, real_type qy, real_type offs, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const override
 
bool approximate_collision_ISO (real_type offs, ClothoidCurve const &c, real_type c_offs, real_type max_angle, real_type max_size) const
 
bool collision (ClothoidCurve const &C) const
 
bool collision_ISO (real_type offs, ClothoidCurve const &C, real_type offs_C) const
 
bool collision (BaseCurve const *pC) const override
 
bool collision_ISO (real_type offs, BaseCurve const *pC, real_type offs_C) const override
 
void intersect_ISO (real_type offs, ClothoidCurve const &C, real_type offs_C, IntersectList &ilist) const
 
void intersect (ClothoidCurve const &C, IntersectList &ilist) const
 
void intersect (BaseCurve const *pC, IntersectList &ilist) const override
 
void intersect_ISO (real_type offs, BaseCurve const *pC, real_type offs_LS, IntersectList &ilist) const override
 
string info () const
 
void info (ostream_type &stream) const override
 
virtual real_type theta_end () const
 
virtual real_type x_begin_ISO (real_type offs) const
 
virtual real_type y_begin_ISO (real_type offs) const
 
virtual real_type x_end_ISO (real_type offs) const
 
virtual real_type y_end_ISO (real_type offs) const
 
real_type x_begin_SAE (real_type offs) const
 
real_type y_begin_SAE (real_type offs) const
 
real_type x_end_SAE (real_type offs) const
 
real_type y_end_SAE (real_type offs) const
 
virtual real_type tx_end () const
 
virtual real_type ty_end () const
 
virtual real_type nx_end_ISO () const
 
virtual real_type ny_end_ISO () const
 
real_type nx_begin_SAE () const
 
real_type ny_begin_SAE () const
 
real_type nx_end_SAE () const
 
real_type ny_end_SAE () const
 
real_type X_SAE (real_type s, real_type offs) const
 
real_type X_SAE_D (real_type s, real_type offs) const
 
real_type X_SAE_DD (real_type s, real_type offs) const
 
real_type X_SAE_DDD (real_type s, real_type offs) const
 
real_type Y_SAE (real_type s, real_type offs) const
 
real_type Y_SAE_D (real_type s, real_type offs) const
 
real_type Y_SAE_DD (real_type s, real_type offs) const
 
real_type Y_SAE_DDD (real_type s, real_type offs) const
 
virtual void evaluate_ISO (real_type s, real_type offs, real_type &th, real_type &k, real_type &x, real_type &y) const
 
virtual void evaluate_SAE (real_type s, real_type offs, real_type &th, real_type &k, real_type &x, real_type &y) const
 
void eval_SAE (real_type s, real_type offs, real_type &x, real_type &y) const
 
void eval_SAE_D (real_type s, real_type offs, real_type &x_D, real_type &y_D) const
 
void eval_SAE_DD (real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const
 
void eval_SAE_DDD (real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const
 
integer closest_point_SAE (real_type qx, real_type qy, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const
 
integer closest_point_SAE (real_type qx, real_type qy, real_type offs, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const
 
real_type distance_ISO (real_type qx, real_type qy, real_type offs) const
 
real_type distance_SAE (real_type qx, real_type qy, real_type offs) const
 
- Public Member Functions inherited from G2lib::BaseCurve
 BaseCurve (BaseCurve const &)=delete
 
BaseCurve const & operator= (BaseCurve const &)=delete
 
 BaseCurve (string const &name)
 
void build (GenericContainer const &gc)
 
string name () const
 
string type_name () const
 
real_type length_SAE (real_type offs) const
 
void bbox_SAE (real_type offs, real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const
 
virtual real_type kappa_end () const
 
real_type x_begin_SAE (real_type offs) const
 
real_type y_begin_SAE (real_type offs) const
 
real_type x_end_SAE (real_type offs) const
 
real_type y_end_SAE (real_type offs) const
 
real_type nx_begin_SAE () const
 
real_type ny_begin_SAE () const
 
real_type nx_end_SAE () const
 
real_type ny_end_SAE () const
 
real_type kappa (real_type s) const
 
real_type kappa_D (real_type s) const
 
real_type kappa_DD (real_type s) const
 
real_type nx_ISO (real_type s) const
 
real_type nx_ISO_D (real_type s) const
 
real_type nx_ISO_DD (real_type s) const
 
real_type nx_ISO_DDD (real_type s) const
 
real_type ny_ISO (real_type s) const
 
real_type ny_ISO_D (real_type s) const
 
real_type ny_ISO_DD (real_type s) const
 
real_type ny_ISO_DDD (real_type s) const
 
real_type nx_SAE (real_type s) const
 
real_type nx_SAE_D (real_type s) const
 
real_type nx_SAE_DD (real_type s) const
 
real_type nx_SAE_DDD (real_type s) const
 
real_type ny_SAE (real_type s) const
 
real_type ny_SAE_D (real_type s) const
 
real_type ny_SAE_DD (real_type s) const
 
real_type ny_SAE_DDD (real_type s) const
 
void nor_ISO (real_type s, real_type &nx, real_type &ny) const
 
void nor_ISO_D (real_type s, real_type &nx_D, real_type &ny_D) const
 
void nor_ISO_DD (real_type s, real_type &nx_DD, real_type &ny_DD) const
 
void nor_ISO_DDD (real_type s, real_type &nx_DDD, real_type &ny_DDD) const
 
void nor_SAE (real_type s, real_type &nx, real_type &ny) const
 
void nor_SAE_D (real_type s, real_type &nx_D, real_type &ny_D) const
 
void nor_SAE_DD (real_type s, real_type &nx_DD, real_type &ny_DD) const
 
void nor_SAE_DDD (real_type s, real_type &nx_DDD, real_type &ny_DDD) const
 
virtual void evaluate (real_type s, real_type &th, real_type &k, real_type &x, real_type &y) const
 
real_type X_SAE (real_type s, real_type offs) const
 
real_type Y_SAE (real_type s, real_type offs) const
 
real_type X_SAE_D (real_type s, real_type offs) const
 
real_type Y_SAE_D (real_type s, real_type offs) const
 
real_type X_SAE_DD (real_type s, real_type offs) const
 
real_type Y_SAE_DD (real_type s, real_type offs) const
 
real_type X_SAE_DDD (real_type s, real_type offs) const
 
real_type Y_SAE_DDD (real_type s, real_type offs) const
 
void eval_SAE (real_type s, real_type offs, real_type &x, real_type &y) const
 
void eval_SAE_D (real_type s, real_type offs, real_type &x_D, real_type &y_D) const
 
void eval_SAE_DD (real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const
 
void eval_SAE_DDD (real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const
 
bool collision_SAE (real_type offs, BaseCurve const *pC, real_type offs_C) const
 
void intersect_SAE (real_type offs, BaseCurve const *pC, real_type offs_C, IntersectList &ilist) const
 
integer closest_point_SAE (real_type qx, real_type qy, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const
 
integer closest_point_SAE (real_type qx, real_type qy, real_type offs, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const
 
virtual real_type distance (real_type qx, real_type qy) const
 
real_type distance_ISO (real_type qx, real_type qy, real_type offs) const
 
real_type distance_SAE (real_type qx, real_type qy, real_type offs) const
 
bool findST_ISO (real_type x, real_type y, real_type &s, real_type &t) const
 
bool findST_SAE (real_type x, real_type y, real_type &s, real_type &t) const
 

Friends

class ClothoidList
 
ostream_typeoperator<< (ostream_type &stream, ClothoidCurve const &c)
 

Detailed Description

Class to manage Clothoid Curve. A clothoid curve is described by the following generalized Fresnel integrals

\[ \begin{cases} x(s) = x_0 + \displaystyle\int_0^s \cos(as^2+bs+c)\,\mathrm{d}t \\[1em] y(s) = y_0 + \displaystyle\int_0^s \sin(as^2+bs+c)\,\mathrm{d}t \end{cases} \]

'

Constructor & Destructor Documentation

◆ ClothoidCurve() [1/7]

G2lib::ClothoidCurve::ClothoidCurve ( string const & name)

eof: BaseCurve_using.hxx Build an empty clothoid curve

◆ ClothoidCurve() [2/7]

G2lib::ClothoidCurve::ClothoidCurve ( ClothoidCurve const & s)

Build a copy of an existing clothoid curve

◆ ClothoidCurve() [3/7]

G2lib::ClothoidCurve::ClothoidCurve ( real_type x0,
real_type y0,
real_type theta0,
real_type k,
real_type dk,
real_type L,
string const & name )
explicit

Construct a clothoid with the standard parameters.

Parameters
[in]x0starting position \(x\)-coordinate
[in]y0starting position \(y\)-coordinate
[in]theta0initial angle
[in]kcurvature
[in]dkcurvature derivative
[in]Llength
[in]namename of the clothoid curve

◆ ClothoidCurve() [4/7]

G2lib::ClothoidCurve::ClothoidCurve ( real_type const P0[],
real_type theta0,
real_type const P1[],
real_type theta1,
string const & name )
explicit

Construct a clothoid \( G(s) \) solving the \( G^1 \) problem.

\[ \begin{array}{rcl} G(0) &=& \mathbf{p}_0 \\[1em] G(L) &=& \mathbf{p}_1 \\[1em] G'(0) &=& (\cos\theta_0,\sin\theta_0)^T \\[1em] G'(L) &=& (\cos\theta_1,\sin\theta_1)^T \\[1em] \end{array} \]

Parameters
[in]P0initial point \( \mathbf{p}_0 \)
[in]theta0initial angle \( \theta_0 \)
[in]P1final point \( \mathbf{p}_1 \)
[in]theta1final angle \( \theta_1 \)
[in]namename of the clothoid curve

◆ ClothoidCurve() [5/7]

G2lib::ClothoidCurve::ClothoidCurve ( LineSegment const & LS)
explicit

Build a clothoid copying an existing line segment.

◆ ClothoidCurve() [6/7]

G2lib::ClothoidCurve::ClothoidCurve ( CircleArc const & C)
explicit

Build a clothoid copying an existing circle arc.

◆ ClothoidCurve() [7/7]

G2lib::ClothoidCurve::ClothoidCurve ( BaseCurve const * pC)
explicit

Build a clothoid copying an existing curve.

Member Function Documentation

◆ approximate_collision_ISO()

bool G2lib::ClothoidCurve::approximate_collision_ISO ( real_type offs,
ClothoidCurve const & C,
real_type offs_C,
real_type max_angle,
real_type max_size ) const

Collision detection

Parameters
[in]offscurve offset
[in]Ccurve to compare for collision detection
[in]offs_Ccurve offset
[in]max_anglemaximum angle variation
[in]max_sizeif the segment is larger then this parameter is split

◆ bb_triangles()

void G2lib::ClothoidCurve::bb_triangles ( vector< Triangle2D > & tvec,
real_type max_angle = Utils::m_pi/6,
real_type max_size = 1e100,
integer icurve = 0 ) const
inlineoverridevirtual

Build a cover with triangles of the curve.

Parameters
[out]tveclist of covering triangles
[out]max_anglemaximum angle variation of the curve covered by a triangle
[out]max_sizemaximum admissible size of the covering tirnagles
[out]icurveindex of the covering triangles
'

Implements G2lib::BaseCurve.

◆ bb_triangles_ISO()

void G2lib::ClothoidCurve::bb_triangles_ISO ( real_type offs,
vector< Triangle2D > & tvec,
real_type max_angle = Utils::m_pi/6,
real_type max_size = 1e100,
integer icurve = 0 ) const
overridevirtual

Build a cover with triangles of the curve with offset (ISO).

Parameters
[out]offscurve offset
[out]tveclist of covering triangles
[out]max_anglemaximum angle variation of the curve covered by a triangle
[out]max_sizemaximum admissible size of the covering tirnagles
[out]icurveindex of the covering triangles

Implements G2lib::BaseCurve.

◆ bb_triangles_SAE()

void G2lib::ClothoidCurve::bb_triangles_SAE ( real_type offs,
vector< Triangle2D > & tvec,
real_type max_angle = Utils::m_pi/6,
real_type max_size = 1e100,
integer icurve = 0 ) const
inlineoverridevirtual

Build a cover with triangles of the curve with offset (SAE).

Parameters
[out]offscurve offset
[out]tveclist of covering triangles
[out]max_anglemaximum angle variation of the arc covered by a triangle
[out]max_sizemaximum admissible size of the covering tirnagles
[out]icurveindex of the covering triangles

Implements G2lib::BaseCurve.

◆ bbox()

void G2lib::ClothoidCurve::bbox ( real_type & xmin,
real_type & ymin,
real_type & xmax,
real_type & ymax ) const
inlineoverridevirtual

Compute the bounding box of the curve.

Parameters
[out]xminleft bottom
[out]yminleft bottom
[out]xmaxright top
[out]ymaxright top

Implements G2lib::BaseCurve.

◆ bbox_ISO()

void G2lib::ClothoidCurve::bbox_ISO ( real_type offs,
real_type & xmin,
real_type & ymin,
real_type & xmax,
real_type & ymax ) const
overridevirtual

Compute the bounding box of the curve with offset (ISO).

Parameters
[in]offscurve offset
[out]xminleft bottom
[out]yminleft bottom
[out]xmaxright top
[out]ymaxright top

Implements G2lib::BaseCurve.

◆ bbTriangle()

bool G2lib::ClothoidCurve::bbTriangle ( real_type & xx0,
real_type & yy0,
real_type & xx1,
real_type & yy1,
real_type & xx2,
real_type & yy2 ) const
inline

Get the triangle bounding box (if angle variation less that \( \pi/2 \) )

◆ bbTriangle_ISO()

bool G2lib::ClothoidCurve::bbTriangle_ISO ( real_type offs,
real_type & xx0,
real_type & yy0,
real_type & xx1,
real_type & yy1,
real_type & xx2,
real_type & yy2 ) const
inline

Get the triangle bounding box (if angle variation less that \( \pi/2 \))

◆ bbTriangle_SAE()

bool G2lib::ClothoidCurve::bbTriangle_SAE ( real_type offs,
real_type & xx0,
real_type & yy0,
real_type & xx1,
real_type & yy1,
real_type & xx2,
real_type & yy2 ) const
inline

Get the triangle bounding box (if angle variation less that \( \pi/2 \))

◆ build() [1/3]

void G2lib::ClothoidCurve::build ( CircleArc const & C)

Build a clothoid from a circle arc.

◆ build() [2/3]

void G2lib::ClothoidCurve::build ( LineSegment const & LS)

Build a clothoid from a line segment.

◆ build() [3/3]

void G2lib::ClothoidCurve::build ( real_type x0,
real_type y0,
real_type theta0,
real_type k,
real_type dk,
real_type L )

Build a clothoid with the standard parameters

Parameters
[in]x0starting position \(x\)-coordinate
[in]y0starting position \(y\)-coordinate
[in]theta0initial angle
[in]kcurvature
[in]dkcurvature derivative
[in]Llength

◆ build_forward()

bool G2lib::ClothoidCurve::build_forward ( real_type x0,
real_type y0,
real_type theta0,
real_type kappa0,
real_type x1,
real_type y1,
real_type tol = 1e-12 )

Build a clothoid by solving the forward problem.

Parameters
[in]x0initial \(x\)-position \( x_0 \)
[in]y0initial \(y\)-position \( y_0 \)
[in]theta0initial angle \( \theta_0 \)
[in]kappa0initial curvature \( \kappa_0 \)
[in]x1final \(x\)-position \( x_1 \)
[in]y1final \(y\)-position \( y_1 \)
[in]toltolerance of the forward problem

◆ build_G1()

int G2lib::ClothoidCurve::build_G1 ( real_type x0,
real_type y0,
real_type theta0,
real_type x1,
real_type y1,
real_type theta1,
real_type tol = 1e-12 )

Build a clothoid by solving the hermite \( G^1 \) problem.

Parameters
[in]x0initial x position \( x_0 \)
[in]y0initial y position \( y_0 \)
[in]theta0initial angle \( \theta_0 \)
[in]x1final x position \( x_1 \)
[in]y1final y position \( y_1 \)
[in]theta1final angle \( \theta_1 \)
[in]toltolerance
Returns
number of iteration performed

◆ build_G1_D()

int G2lib::ClothoidCurve::build_G1_D ( real_type x0,
real_type y0,
real_type theta0,
real_type x1,
real_type y1,
real_type theta1,
real_type L_D[2],
real_type k_D[2],
real_type dk_D[2],
real_type tol = 1e-12 )

Build a clothoid by solving the hermite \( G^1 \) problem.

Parameters
[in]x0initial x position \( x_0 \)
[in]y0initial y position \( y_0 \)
[in]theta0initial angle \( \theta_0 \)
[in]x1final x position \( x_1 \)
[in]y1final y position \( y_1 \)
[in]theta1final angle \( \theta_1 \)
[out]L_Dderivative of the length \( L(\theta_0,\theta_1) \)
[out]k_Dderivative of the curvature \( \kappa(\theta_0,\theta_1) \)
[out]dk_Dderivative of the curvature variation \( \kappa'(\theta_0,\theta_1) \)
[out]tol= \(10^{-12}\)
Returns
number of iteration performed

◆ change_curvilinear_origin()

void G2lib::ClothoidCurve::change_curvilinear_origin ( real_type s0,
real_type newL )
inline

change the origin of the clothoid at \( s_0 \) and the length to \( L \).

Parameters
[in]s0\( s_0 \)
[in]newL\( L \)

◆ change_origin()

void G2lib::ClothoidCurve::change_origin ( real_type newx0,
real_type newy0 )
inlineoverridevirtual

Translate curve so that origin will be (newx0, newy0).

Implements G2lib::BaseCurve.

◆ closest_point_by_sample()

real_type G2lib::ClothoidCurve::closest_point_by_sample ( real_type ds,
real_type qx,
real_type qy,
real_type & X,
real_type & Y,
real_type & S ) const

Compute the point on clothoid at minimal distance from a given point.

Parameters
dssampling step
qx\( x \)-coordinate of the given point
qy\( y \)-coordinate of the given point
X\( x \)-coordinate of the point on clothoid at minimal distance
Y\( y \)-coordinate of the point on clothoid at minimal distance
Scurvilinear coordinate of the point (X,Y) on the clothoid
Returns
the distance of the point from the clothoid

◆ closest_point_ISO() [1/2]

integer G2lib::ClothoidCurve::closest_point_ISO ( real_type qx,
real_type qy,
real_type & x,
real_type & y,
real_type & s,
real_type & t,
real_type & dst ) const
overridevirtual

Compute the point on clothoid at minimal distance from a given point using the optimized algorithm described in the publication:

  • E.Bertolazzi, M.Frego, Point-Clothoid distance and projection computation SIAM J. Scientific Computing, Vol. 41, No. 5, pp. A3326-A3353
Parameters
qx\(x\)-coordinate of the given point
qy\(y\)-coordinate of the given point
x\(x\)-coordinate of the point on clothoid at minimal distance
y\(y\)-coordinate of the point on clothoid at minimal distance
scurvilinear coordinate of the point (X,Y) on the clothoid
tnormal coordinate of the point (X,Y) on the clothoid
dstthe distance of the point from the clothoid
Returns
1 = point is projected orthogonal 0 = more than one projection (first returned) -1 = minimum point is not othogonal projection to curve

Implements G2lib::BaseCurve.

◆ closest_point_ISO() [2/2]

integer G2lib::ClothoidCurve::closest_point_ISO ( real_type qx,
real_type qy,
real_type offs,
real_type & x,
real_type & y,
real_type & s,
real_type & t,
real_type & dst ) const
overridevirtual

Given a point find closest point on the curve.

Parameters
qx\(x\)-coordinate of the point
qy\(y\)-coordinate of the point
offsoffset of the curve
x\(x\)-coordinate of the projected point on the curve
y\(y\)-coordinate of the projected point on the curve
sparameter on the curve of the projection
tcurvilinear coordinate of the point x,y (if orthogonal projection)
dstdistance point projected point
Returns
1 = point is projected orthogonal 0 = more than one projection (first returned) -1 = minimum point is not othogonal projection to curve

Implements G2lib::BaseCurve.

◆ closest_point_SAE() [1/2]

integer G2lib::BaseCurve::closest_point_SAE ( real_type qx,
real_type qy,
real_type & x,
real_type & y,
real_type & s,
real_type & t,
real_type & dst ) const
inline

Given a point find closest point on the curve.

Parameters
qx\(x\)-coordinate of the point
qy\(y\)-coordinate of the point
x\(x\)-coordinate of the projected point on the curve
y\(y\)-coordinate of the projected point on the curve
sparameter on the curve of the projection
tcurvilinear coordinate of the point x,y (if orthogonal projection)
dstdistance point projected point
Returns
1 = point is projected orthogonal 0 = more than one projection (first returned) -1 = minimum point is not othogonal projection to curve

◆ closest_point_SAE() [2/2]

integer G2lib::BaseCurve::closest_point_SAE ( real_type qx,
real_type qy,
real_type offs,
real_type & x,
real_type & y,
real_type & s,
real_type & t,
real_type & dst ) const
inline

Given a point find closest point on the curve.

Parameters
qx\(x\)-coordinate of the point
qy\(y\)-coordinate of the point
offsoffset of the curve
x\(x\)-coordinate of the projected point on the curve
y\(y\)-coordinate of the projected point on the curve
sparameter on the curve of the projection
tcurvilinear coordinate of the point x,y (if orthogonal projection)
dstdistance point projected point
Returns
1 = point is projected orthogonal 0 = more than one projection (first returned) -1 = minimum point is not othogonal projection to curve

◆ collision()

bool G2lib::ClothoidCurve::collision ( BaseCurve const * pC) const
overridevirtual

Check collision with another curve.

Implements G2lib::BaseCurve.

◆ collision_ISO()

bool G2lib::ClothoidCurve::collision_ISO ( real_type offs,
BaseCurve const * pC,
real_type offs_C ) const
overridevirtual

Check collision with another curve with offset (ISO).

Parameters
[in]offscurve offset
[in]pCsecond curve to check collision
[in]offs_Ccurve offset of the second curve
Returns
true if collision is detected

Implements G2lib::BaseCurve.

◆ copy()

void G2lib::ClothoidCurve::copy ( ClothoidCurve const & c)

Build a clothoid copying an existing one.

◆ curvature_min_max()

real_type G2lib::ClothoidCurve::curvature_min_max ( real_type & kMin,
real_type & kMax ) const

Max and min of the curvatire of the clothoid curve.

◆ curvature_total_variation()

real_type G2lib::ClothoidCurve::curvature_total_variation ( ) const

Clothoid total curvature variation.

◆ delta_theta()

real_type G2lib::ClothoidCurve::delta_theta ( ) const
inline

Clothoid angle range.

◆ distance_by_sample() [1/2]

real_type G2lib::ClothoidCurve::distance_by_sample ( real_type ds,
real_type qx,
real_type qy ) const
inline

Approximate the point on clothoid at minimal distance from a given point using simple sampling.

Parameters
dssampling step
qx\(x\)-coordinate of the given point
qy\(y\)-coordinate of the given point
Returns
the distance of the point from the clothoid

◆ distance_by_sample() [2/2]

real_type G2lib::ClothoidCurve::distance_by_sample ( real_type ds,
real_type qx,
real_type qy,
real_type & S ) const
inline

Approximate the point on clothoid at minimal distance from a given point using simple sampling.

Parameters
dssampling step
qx\( x \)-coordinate of the given point
qy\( y \)-coordinate of the given point
Scurvilinear coordinate of the point (X,Y) on the clothoid
Returns
the distance of the point from the clothoid

◆ distance_ISO()

real_type G2lib::BaseCurve::distance_ISO ( real_type qx,
real_type qy,
real_type offs ) const
inline

Compute the distance between a point \(q=(q_x,q_y)\) and the curve with offset (ISO).

Parameters
[in]qxcomponent \(q_x\)
[in]qycomponent \(q_y\)
[in]offsoffset of the curve
Returns
the computed distance

◆ distance_SAE()

real_type G2lib::BaseCurve::distance_SAE ( real_type qx,
real_type qy,
real_type offs ) const
inline

Compute the distance between a point \(q=(q_x,q_y)\) and the curve with offset (SAE).

Parameters
[in]qxcomponent \(q_x\)
[in]qycomponent \(q_y\)
[in]offsoffset of the curve
Returns
the computed distance

◆ dkappa()

real_type G2lib::ClothoidCurve::dkappa ( ) const
inline

Derivative of the curvature of the clothoid.

◆ eval()

void G2lib::ClothoidCurve::eval ( real_type s,
real_type & x,
real_type & y ) const
inlineoverridevirtual

x and \(y\)-coordinate at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ eval_D()

void G2lib::ClothoidCurve::eval_D ( real_type s,
real_type & x_D,
real_type & y_D ) const
inlineoverridevirtual

x and \(y\)-coordinate derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ eval_DD()

void G2lib::ClothoidCurve::eval_DD ( real_type s,
real_type & x_DD,
real_type & y_DD ) const
inlineoverridevirtual

x and \(y\)-coordinate second derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ eval_DDD()

void G2lib::ClothoidCurve::eval_DDD ( real_type s,
real_type & x_DDD,
real_type & y_DDD ) const
inlineoverridevirtual

x and \(y\)-coordinate third derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ eval_ISO()

void G2lib::ClothoidCurve::eval_ISO ( real_type s,
real_type offs,
real_type & x,
real_type & y ) const
inlineoverridevirtual

Compute curve at position s with offset offs (ISO).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]xcoordinate
[out]ycoordinate

Reimplemented from G2lib::BaseCurve.

◆ eval_ISO_D()

void G2lib::ClothoidCurve::eval_ISO_D ( real_type s,
real_type offs,
real_type & x_D,
real_type & y_D ) const
inlineoverridevirtual

Compute derivative curve at position s with offset offs (ISO).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]x_D\(x\)-coordinate
[out]y_D\(y\)-coordinate

Reimplemented from G2lib::BaseCurve.

◆ eval_ISO_DD()

void G2lib::ClothoidCurve::eval_ISO_DD ( real_type s,
real_type offs,
real_type & x_DD,
real_type & y_DD ) const
inlineoverridevirtual

Compute second derivative curve at position s with offset offs (ISO).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]x_DD\(x\)-coordinate second derivative
[out]y_DD\(y\)-coordinate second derivative

Reimplemented from G2lib::BaseCurve.

◆ eval_ISO_DDD()

void G2lib::ClothoidCurve::eval_ISO_DDD ( real_type s,
real_type offs,
real_type & x_DDD,
real_type & y_DDD ) const
inlineoverridevirtual

Compute third derivative curve at position s with offset offs (ISO).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]x_DDD\(x\)-coordinate third derivative
[out]y_DDD\(y\)-coordinate third derivative

Reimplemented from G2lib::BaseCurve.

◆ eval_SAE()

void G2lib::BaseCurve::eval_SAE ( real_type s,
real_type offs,
real_type & x,
real_type & y ) const
inline

Compute curve at position s with offset offs (SAE).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]xcoordinate
[out]ycoordinate

◆ eval_SAE_D()

void G2lib::BaseCurve::eval_SAE_D ( real_type s,
real_type offs,
real_type & x_D,
real_type & y_D ) const
inline

Compute derivative curve at position s with offset offs (SAE).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]x_D\(x\)-coordinate first derivative
[out]y_D\(y\)-coordinate first derivative

◆ eval_SAE_DD()

void G2lib::BaseCurve::eval_SAE_DD ( real_type s,
real_type offs,
real_type & x_DD,
real_type & y_DD ) const
inline

Compute second derivative curve at position s with offset offs (SAE).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]x_DD\(x\)-coordinate second derivative
[out]y_DD\(y\)-coordinate second derivative

◆ eval_SAE_DDD()

void G2lib::BaseCurve::eval_SAE_DDD ( real_type s,
real_type offs,
real_type & x_DDD,
real_type & y_DDD ) const
inline

Compute third derivative curve at position s with offset offs (SAE).

Parameters
[in]sparameter on the curve
[in]offsoffset of the curve
[out]x_DDD\(x\)-coordinate third derivative
[out]y_DDD\(y\)-coordinate third derivative

◆ evaluate_ISO()

virtual void G2lib::BaseCurve::evaluate_ISO ( real_type s,
real_type offs,
real_type & th,
real_type & k,
real_type & x,
real_type & y ) const
inlinevirtual

Evaluate curve with offset at curvilinear coordinate \(s\) (ISO).

Parameters
[in]scurvilinear coordinate
[in]offsoffset
[out]thangle
[out]kcurvature
[out]x\(x\)-coordinate
[out]y\(y\)-coordinate

Reimplemented from G2lib::BaseCurve.

◆ evaluate_SAE()

virtual void G2lib::BaseCurve::evaluate_SAE ( real_type s,
real_type offs,
real_type & th,
real_type & k,
real_type & x,
real_type & y ) const
inlinevirtual

Evaluate curve with offset at curvilinear coordinate \(s\) (SAE).

Parameters
[in]scurvilinear coordinate
[in]offsoffset
[out]thangle
[out]kcurvature
[out]x\(x\)-coordinate
[out]y\(y\)-coordinate

Reimplemented from G2lib::BaseCurve.

◆ info()

void G2lib::ClothoidCurve::info ( ostream_type & stream) const
inlineoverridevirtual

Pretty print of the curve data.

Implements G2lib::BaseCurve.

◆ integral_curvature2()

real_type G2lib::ClothoidCurve::integral_curvature2 ( ) const

Given the clothoid curve \( P(s) \) compute.

\[ \int_0^L |P''(s)|^2 \mathrm{d}s \]

◆ integral_jerk2()

real_type G2lib::ClothoidCurve::integral_jerk2 ( ) const

Given the clothoid curve \( P(s) \) compute.

\[ \int_0^L |P'''(s)|^2 \mathrm{d}s \]

◆ integral_snap2()

real_type G2lib::ClothoidCurve::integral_snap2 ( ) const

Given the clothoid curve \( P(s) \) compute.

\[ \int_0^L |P''''(s)|^2 \mathrm{d}s \]

◆ intersect()

void G2lib::ClothoidCurve::intersect ( BaseCurve const * pC,
IntersectList & ilist ) const
overridevirtual

Intersect the curve with another curve.

Parameters
[in]pCsecond curve intersect
[out]ilistlist of the intersection (as parameter on the curves)

Implements G2lib::BaseCurve.

◆ intersect_ISO()

void G2lib::ClothoidCurve::intersect_ISO ( real_type offs,
BaseCurve const * pC,
real_type offs_C,
IntersectList & ilist ) const
overridevirtual

Intersect the curve with another curve with offset (ISO)

Parameters
[in]offsoffset first curve
[in]pCsecond curve intersect
[in]offs_Coffset second curve
[out]ilistlist of the intersection (as parameter on the curves)

Implements G2lib::BaseCurve.

◆ kappa_begin()

real_type G2lib::ClothoidCurve::kappa_begin ( ) const
inlineoverridevirtual

Initial curvature.

Reimplemented from G2lib::BaseCurve.

◆ length()

real_type G2lib::ClothoidCurve::length ( ) const
inlineoverridevirtual

The length of the curve

Implements G2lib::BaseCurve.

◆ length_ISO()

real_type G2lib::ClothoidCurve::length_ISO ( real_type offs) const
overridevirtual

The length of the curve with offset (ISO)

Implements G2lib::BaseCurve.

◆ nx_begin_ISO()

real_type G2lib::ClothoidCurve::nx_begin_ISO ( ) const
inlineoverridevirtual

Intial normal \(x\)-coordinate (ISO).

Reimplemented from G2lib::BaseCurve.

◆ nx_begin_SAE()

real_type G2lib::BaseCurve::nx_begin_SAE ( ) const
inline

Intial normal \(x\)-coordinate (SAE).

◆ nx_end_ISO()

virtual real_type G2lib::BaseCurve::nx_end_ISO ( ) const
inlinevirtual

Final normal \(x\)-coordinate (ISO).

Reimplemented from G2lib::BaseCurve.

◆ nx_end_SAE()

real_type G2lib::BaseCurve::nx_end_SAE ( ) const
inline

Final normal \(x\)-coordinate (SAE).

◆ ny_begin_ISO()

real_type G2lib::ClothoidCurve::ny_begin_ISO ( ) const
inlineoverridevirtual

Intial normal \(y\)-coordinate (ISO).

Reimplemented from G2lib::BaseCurve.

◆ ny_begin_SAE()

real_type G2lib::BaseCurve::ny_begin_SAE ( ) const
inline

Intial normal \(y\)-coordinate (SAE).

◆ ny_end_ISO()

virtual real_type G2lib::BaseCurve::ny_end_ISO ( ) const
inlinevirtual

Final normal \(y\)-coordinate (ISO).

Reimplemented from G2lib::BaseCurve.

◆ ny_end_SAE()

real_type G2lib::BaseCurve::ny_end_SAE ( ) const
inline

Intial normal \(y\)-coordinate (SAE).

◆ operator=()

ClothoidCurve const & G2lib::ClothoidCurve::operator= ( ClothoidCurve const & s)
inline

Copy an existing clothoid.

◆ optimized_sample_ISO()

void G2lib::ClothoidCurve::optimized_sample_ISO ( real_type offs,
integer npts,
real_type max_angle,
vector< real_type > & s ) const

Return a vector of optimized sample parameters for plotting.

Parameters
offsoffset of the sampled curve
nptssuggested minimum number of sampled points
max_anglemaximum angle variation between two sampled points
svector of computed parameters

◆ optimized_sample_SAE()

void G2lib::ClothoidCurve::optimized_sample_SAE ( real_type offs,
integer npts,
real_type max_angle,
vector< real_type > & s ) const
inline

Return a vector of optimized sample parameters for plotting.

Parameters
offsoffset of the sampled curve
nptssuggested minimum number of sampled points
max_anglemaximum angle variation between two sampled points
svector of computed parameters

◆ Pinfinity()

void G2lib::ClothoidCurve::Pinfinity ( real_type & x,
real_type & y,
bool plus = true ) const
inline

Return the point at infinity of the clothoids \( P(s) \).

Parameters
[out]x\(x\)-coordinate of the \(\infty\) point
[out]y\(y\)-coordinate of the \(\infty\) point
[out]plusit true return \( \lim_{s\to+\infty} P(s) \) otherwise return \( \lim_{s\to-\infty} P(s) \)
'

◆ reverse()

void G2lib::ClothoidCurve::reverse ( )
inlineoverridevirtual

Reverse curve parameterization.

Implements G2lib::BaseCurve.

◆ rotate()

void G2lib::ClothoidCurve::rotate ( real_type angle,
real_type cx,
real_type cy )
inlineoverridevirtual

Rotate curve by angle \(\theta\) centered at point \((c_x,c_y)\).

Parameters
[in]angleangle \(\theta\)
[in]cx\(c_x\)
[in]cy\(c_y\)

Implements G2lib::BaseCurve.

◆ scale()

void G2lib::ClothoidCurve::scale ( real_type sc)
inlineoverridevirtual

Scale curve by factor sc.

Implements G2lib::BaseCurve.

◆ setup()

void G2lib::ClothoidCurve::setup ( GenericContainer const & gc)
overridevirtual

Implements G2lib::BaseCurve.

◆ tg()

void G2lib::ClothoidCurve::tg ( real_type s,
real_type & tg_x,
real_type & tg_y ) const
inlineoverridevirtual

Tangent at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ tg_D()

void G2lib::ClothoidCurve::tg_D ( real_type s,
real_type & tg_x_D,
real_type & tg_y_D ) const
inlineoverridevirtual

Tangent derivative at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ tg_DD()

void G2lib::ClothoidCurve::tg_DD ( real_type s,
real_type & tg_x_DD,
real_type & tg_y_DD ) const
inlineoverridevirtual

Tangent second derivative at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ tg_DDD()

void G2lib::ClothoidCurve::tg_DDD ( real_type s,
real_type & tg_x_DDD,
real_type & tg_y_DDD ) const
inlineoverridevirtual

Tangent third derivative at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ theta()

real_type G2lib::ClothoidCurve::theta ( real_type s) const
inlineoverridevirtual

Get clothoid angle at curvilinear cooordinate s.

Parameters
scurvilinear cooordinate
Returns
angle (radiant) at curvilinear cooordinate s

Implements G2lib::BaseCurve.

◆ theta_begin()

real_type G2lib::ClothoidCurve::theta_begin ( ) const
inlineoverridevirtual

Initial angle of the curve.

Reimplemented from G2lib::BaseCurve.

◆ theta_D()

real_type G2lib::ClothoidCurve::theta_D ( real_type s) const
inlineoverridevirtual

Get clothoid angle derivative (=curvature) at curvilinear cooordinate s.

Parameters
scurvilinear cooordinate
Returns
angle derivative (radiant/s) at curvilinear cooordinate s

Implements G2lib::BaseCurve.

◆ theta_DD()

real_type G2lib::ClothoidCurve::theta_DD ( real_type ) const
inlineoverridevirtual

Get clothoid angle second derivative at curvilinear cooordinate s.

Returns
angle second derivative (radiant/s^2) at curvilinear cooordinate s

Implements G2lib::BaseCurve.

◆ theta_DDD()

real_type G2lib::ClothoidCurve::theta_DDD ( real_type ) const
inlineoverridevirtual

Get clothoid angle third derivative at curvilinear cooordinate s.

Returns
angle third derivative (radiant/s^3) at curvilinear cooordinate s

Implements G2lib::BaseCurve.

◆ theta_end()

virtual real_type G2lib::BaseCurve::theta_end ( ) const
inlinevirtual

Final angle of the curve.

Reimplemented from G2lib::BaseCurve.

◆ theta_min_max()

real_type G2lib::ClothoidCurve::theta_min_max ( real_type & thMin,
real_type & thMax ) const

Max and min angle of the curve.

◆ theta_total_variation()

real_type G2lib::ClothoidCurve::theta_total_variation ( ) const

Clothoid curve total variation of the angle.

◆ translate()

void G2lib::ClothoidCurve::translate ( real_type tx,
real_type ty )
inlineoverridevirtual

translate curve by \((t_x,t_y)\)

Implements G2lib::BaseCurve.

◆ trim()

void G2lib::ClothoidCurve::trim ( real_type s_begin,
real_type s_end )
inlineoverridevirtual

Cut curve at parametric coordinate s_begin and s_end.

Implements G2lib::BaseCurve.

◆ tx()

real_type G2lib::ClothoidCurve::tx ( real_type s) const
inlineoverridevirtual

Tangent \(x\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ tx_begin()

real_type G2lib::ClothoidCurve::tx_begin ( ) const
inlineoverridevirtual

Initial tangent \(x\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ tx_D()

real_type G2lib::ClothoidCurve::tx_D ( real_type s) const
inlineoverridevirtual

Tangent derivative \(x\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ tx_DD()

real_type G2lib::ClothoidCurve::tx_DD ( real_type s) const
inlineoverridevirtual

Tangent second derivative \(x\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ tx_DDD()

real_type G2lib::ClothoidCurve::tx_DDD ( real_type s) const
inlineoverridevirtual

Tangent third derivative \(x\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ tx_end()

virtual real_type G2lib::BaseCurve::tx_end ( ) const
inlinevirtual

Final tangent \(x\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ ty()

real_type G2lib::ClothoidCurve::ty ( real_type s) const
inlineoverridevirtual

Tangent \(y\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ ty_begin()

real_type G2lib::ClothoidCurve::ty_begin ( ) const
inlineoverridevirtual

Initial tangent \(y\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ ty_D()

real_type G2lib::ClothoidCurve::ty_D ( real_type s) const
inlineoverridevirtual

Tangent derivative \(y\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ ty_DD()

real_type G2lib::ClothoidCurve::ty_DD ( real_type s) const
inlineoverridevirtual

Tangent second derivative \(y\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ ty_DDD()

real_type G2lib::ClothoidCurve::ty_DDD ( real_type s) const
inlineoverridevirtual

Tangent third derivative \(y\)-coordinate at curvilinear coordinate \(s\).

Reimplemented from G2lib::BaseCurve.

◆ ty_end()

virtual real_type G2lib::BaseCurve::ty_end ( ) const
inlinevirtual

Final tangent \(y\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ type()

CurveType G2lib::ClothoidCurve::type ( ) const
inlineoverridevirtual

The name of the curve type

Implements G2lib::BaseCurve.

◆ X()

real_type G2lib::ClothoidCurve::X ( real_type s) const
inlineoverridevirtual

Clothoid \(x\) coordinate at curvilinear coordinate \(s\).

Parameters
scurvilinear coordinate
Returns
clothoid \(x\) coordinate

Implements G2lib::BaseCurve.

◆ x_begin()

real_type G2lib::ClothoidCurve::x_begin ( ) const
inlineoverridevirtual

Initial \(x\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ x_begin_ISO()

virtual real_type G2lib::BaseCurve::x_begin_ISO ( real_type offs) const
inlinevirtual

Initial \(x\)-coordinate with offset (ISO standard).

Reimplemented from G2lib::BaseCurve.

◆ x_begin_SAE()

real_type G2lib::BaseCurve::x_begin_SAE ( real_type offs) const
inline

Initial \(x\)-coordinate with offset (SAE standard).

◆ X_D()

real_type G2lib::ClothoidCurve::X_D ( real_type s) const
inlineoverridevirtual

\(x\)-coordinate derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ X_DD()

real_type G2lib::ClothoidCurve::X_DD ( real_type s) const
inlineoverridevirtual

\(x\)-coordinate second derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ X_DDD()

real_type G2lib::ClothoidCurve::X_DDD ( real_type s) const
inlineoverridevirtual

\(x\)-coordinate third derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ x_end()

real_type G2lib::ClothoidCurve::x_end ( ) const
inlineoverridevirtual

Final \(x\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ x_end_ISO()

virtual real_type G2lib::BaseCurve::x_end_ISO ( real_type offs) const
inlinevirtual

Final \(x\)-coordinate with offset (ISO standard).

Reimplemented from G2lib::BaseCurve.

◆ x_end_SAE()

real_type G2lib::BaseCurve::x_end_SAE ( real_type offs) const
inline

Final \(y\)-coordinate with offset (SAE standard).

◆ X_ISO()

real_type G2lib::ClothoidCurve::X_ISO ( real_type s,
real_type offs ) const
inlineoverridevirtual

Clothoid \(x\) coordinate at curvilinear coordinate \(s\).

Parameters
scurvilinear coordinate
offslateral offset
Returns
clothoid \(x\) coordinate

Reimplemented from G2lib::BaseCurve.

◆ X_ISO_D()

real_type G2lib::ClothoidCurve::X_ISO_D ( real_type s,
real_type offs ) const
inlineoverridevirtual

\(x\)-coordinate derivative at curvilinear coordinate \(s\) with offset offs (ISO).

Reimplemented from G2lib::BaseCurve.

◆ X_ISO_DD()

real_type G2lib::ClothoidCurve::X_ISO_DD ( real_type s,
real_type offs ) const
inlineoverridevirtual

\(x\)-coordinate second derivative at curvilinear coordinate \(s\) with offset offs (ISO).

Reimplemented from G2lib::BaseCurve.

◆ X_ISO_DDD()

real_type G2lib::ClothoidCurve::X_ISO_DDD ( real_type s,
real_type offs ) const
inlineoverridevirtual

\(x\)-coordinate third derivative at curvilinear coordinate \(s\) with offset offs (ISO).

Reimplemented from G2lib::BaseCurve.

◆ X_SAE()

real_type G2lib::BaseCurve::X_SAE ( real_type s,
real_type offs ) const
inline

\(x\)-coordinate at curvilinear coordinate \(s\) with offset offs (SAE).

◆ X_SAE_D()

real_type G2lib::BaseCurve::X_SAE_D ( real_type s,
real_type offs ) const
inline

\(x\)-coordinate derivative at curvilinear coordinate \(s\) with offset offs (SAE).

◆ X_SAE_DD()

real_type G2lib::BaseCurve::X_SAE_DD ( real_type s,
real_type offs ) const
inline

\(x\)-coordinate second derivative at curvilinear coordinate \(s\) with offset offs (SAE).

◆ X_SAE_DDD()

real_type G2lib::BaseCurve::X_SAE_DDD ( real_type s,
real_type offs ) const
inline

\(x\)-coordinate third derivative at curvilinear coordinate \(s\) with offset offs (SAE).

◆ Y()

real_type G2lib::ClothoidCurve::Y ( real_type s) const
inlineoverridevirtual

Clothoid \(y\) coordinate at curvilinear coordinate \(s\).

Parameters
scurvilinear coordinate
Returns
clothoid \(y\) coordinate

Implements G2lib::BaseCurve.

◆ y_begin()

real_type G2lib::ClothoidCurve::y_begin ( ) const
inlineoverridevirtual

Initial \(y\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ y_begin_ISO()

virtual real_type G2lib::BaseCurve::y_begin_ISO ( real_type offs) const
inlinevirtual

Initial \(y\)-coordinate with offset (ISO standard).

Reimplemented from G2lib::BaseCurve.

◆ y_begin_SAE()

real_type G2lib::BaseCurve::y_begin_SAE ( real_type offs) const
inline

Initial \(y\)-coordinate with offset (SAE standard).

◆ Y_D()

real_type G2lib::ClothoidCurve::Y_D ( real_type s) const
inlineoverridevirtual

\(y\)-coordinate derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ Y_DD()

real_type G2lib::ClothoidCurve::Y_DD ( real_type s) const
inlineoverridevirtual

\(y\)-coordinate second derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ Y_DDD()

real_type G2lib::ClothoidCurve::Y_DDD ( real_type s) const
inlineoverridevirtual

\(y\)-coordinate third derivative at curvilinear coordinate \(s\).

Implements G2lib::BaseCurve.

◆ y_end()

real_type G2lib::ClothoidCurve::y_end ( ) const
inlineoverridevirtual

Final \(y\)-coordinate.

Reimplemented from G2lib::BaseCurve.

◆ y_end_ISO()

virtual real_type G2lib::BaseCurve::y_end_ISO ( real_type offs) const
inlinevirtual

Final \(y\)-coordinate with offset (ISO standard).

Reimplemented from G2lib::BaseCurve.

◆ y_end_SAE()

real_type G2lib::BaseCurve::y_end_SAE ( real_type offs) const
inline

Final \(y\)-coordinate with offset (ISO standard).

◆ Y_ISO()

real_type G2lib::ClothoidCurve::Y_ISO ( real_type s,
real_type offs ) const
inlineoverridevirtual

Clothoid \(y\) coordinate at curvilinear coordinate \(s\).

Parameters
scurvilinear coordinate
offslateral offset
Returns
clothoid \(y\) coordinate

Reimplemented from G2lib::BaseCurve.

◆ Y_ISO_D()

real_type G2lib::ClothoidCurve::Y_ISO_D ( real_type s,
real_type offs ) const
inlineoverridevirtual

\(y\)-coordinate derivative at curvilinear coordinate \(s\) with offset offs (ISO).

Reimplemented from G2lib::BaseCurve.

◆ Y_ISO_DD()

real_type G2lib::ClothoidCurve::Y_ISO_DD ( real_type s,
real_type offs ) const
inlineoverridevirtual

\(y\)-coordinate second derivative at curvilinear coordinate \(s\) with offset offs (ISO).

Reimplemented from G2lib::BaseCurve.

◆ Y_ISO_DDD()

real_type G2lib::ClothoidCurve::Y_ISO_DDD ( real_type s,
real_type offs ) const
inlineoverridevirtual

\(y\)-coordinate third derivative at curvilinear coordinate \(s\) with offset offs (ISO).

Reimplemented from G2lib::BaseCurve.

◆ Y_SAE()

real_type G2lib::BaseCurve::Y_SAE ( real_type s,
real_type offs ) const
inline

\(y\)-coordinate at curvilinear coordinate \(s\) with offset offs (SAE).

◆ Y_SAE_D()

real_type G2lib::BaseCurve::Y_SAE_D ( real_type s,
real_type offs ) const
inline

\(y\)-coordinate derivative at curvilinear coordinate \(s\) with offset offs (SAE).

◆ Y_SAE_DD()

real_type G2lib::BaseCurve::Y_SAE_DD ( real_type s,
real_type offs ) const
inline

\(y\)-coordinate second derivative at curvilinear coordinate \(s\) with offset offs (SAE).

◆ Y_SAE_DDD()

real_type G2lib::BaseCurve::Y_SAE_DDD ( real_type s,
real_type offs ) const
inline

\(y\)-coordinate third derivative at curvilinear coordinate \(s\) with offset offs (SAE).

Friends And Related Symbol Documentation

◆ operator<<

ostream_type & operator<< ( ostream_type & stream,
ClothoidCurve const & c )
friend

Print on strem the ClothoidCurve object

Parameters
streamthe output stream
can instance of ClothoidCurve object
Returns
the output stream

The documentation for this class was generated from the following files:
  • /Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Clothoids/src/Clothoids/Clothoid.hxx
  • /Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Clothoids/src/Clothoid.cc
  • /Users/enrico/Ricerca/develop/PINS/pins-mechatronix/LibSources/submodules/Clothoids/src/ClothoidDistance.cc