Class G2solve3arc¶
Defined in File ClothoidList.hxx
Class Documentation¶
-
class G2lib::G2solve3arc¶
-
Construct a piecewise clothoids \( G(s) \) composed by 3 clothoid and one line segment that solve the G2 problem
match
\[\begin{split} \begin{array}{ll} \textrm{endpoints:}\quad& \begin{cases} G(0) = \mathbf{p}_0 & \\[0.5em] G(L) = \mathbf{p}_1 & \end{cases} \\[1em] \textrm{angles:}\quad& \begin{cases} \theta(0) = \theta_0 & \\[0.5em] \theta(L) = \theta_1 & \end{cases} \\[1em] \textrm{curvature:}\quad& \begin{cases} \kappa(0) = \kappa_0 & \\[0.5em] \kappa(L) = \kappa_1 & \end{cases} \end{array} \end{split}\]Reference
The solution algorithm is described in
E.Bertolazzi, M.Frego, On the G2 Hermite Interpolation Problem with clothoids Journal of Computational and Applied Mathematics, vol 341, pp. 99-116, 2018
Public Functions
-
inline G2solve3arc()¶
-
inline ~G2solve3arc()¶
-
void setMaxIter(int miter)¶
-
Fix maximum number of iteration for the G2 problem
-
int build(real_type x0, real_type y0, real_type theta0, real_type kappa0, real_type x1, real_type y1, real_type theta1, real_type kappa1, real_type Dmax = 0, real_type dmax = 0)¶
-
Compute the 3 arc clothoid spline that fit the data
- Parameters
-
x0 – [in] initial
xpositiony0 – [in] initial
ypositiontheta0 – [in] initial angle
kappa0 – [in] initial curvature
x1 – [in] final
xpositiony1 – [in] final
ypositiontheta1 – [in] final angle
kappa1 – [in] final curvature
Dmax – [in] rough desidered maximum angle variation, if 0 computed automatically
dmax – [in] rough desidered maximum angle divergence from guess, if 0 computed automatically
- Returns
-
number of iteration, -1 if fails
-
int build_fixed_length(real_type s0, real_type x0, real_type y0, real_type theta0, real_type kappa0, real_type s1, real_type x1, real_type y1, real_type theta1, real_type kappa1)¶
-
Compute the 3 arc clothoid spline that fit the data
- Parameters
-
s0 – [in] length of the first segment
x0 – [in] initial
xpositiony0 – [in] initial
ypositiontheta0 – [in] initial angle
kappa0 – [in] initial curvature
s1 – [in] length of the last segment
x1 – [in] final
xpositiony1 – [in] final
ypositiontheta1 – [in] final angle
kappa1 – [in] final curvature
- Returns
-
number of iteration, -1 if fails
-
inline ClothoidCurve const &getS0() const¶
-
- Returns
-
get the first clothoid for the 3 arc G2 fitting
-
inline ClothoidCurve const &getS1() const¶
-
- Returns
-
get the last clothoid for the 3 arc G2 fitting
-
inline ClothoidCurve const &getSM() const¶
-
- Returns
-
get the middle clothoid for the 3 arc G2 fitting
-
inline real_type thetaTotalVariation() const¶
-
- Returns
-
get the total angle variation of the 3 arc G2 fitting
-
inline real_type curvatureTotalVariation() const¶
-
- Returns
-
get the total curvature variation of the 3 arc G2 fitting
-
inline real_type integralCurvature2() const¶
-
- Returns
-
get the integral of the curvature squared of the 3 arc G2 fitting
-
inline real_type integralJerk2() const¶
-
- Returns
-
get the integral of the jerk squared of the 3 arc G2 fitting
-
inline real_type integralSnap2() const¶
-
- Returns
-
get the integral of the snap squared of the 3 arc G2 fitting
-
real_type thetaMinMax(real_type &thMin, real_type &thMax) const¶
-
- Parameters
-
thMin – [out] minimum angle in the 3 arc G2 fitting curve
thMax – [out] maximum angle in the 3 arc G2 fitting curve
- Returns
-
the difference of
thMaxandthMin
-
inline real_type deltaTheta() const¶
-
Return the difference of maximum-minimum angle in the 3 arc G2 fitting curve
-
real_type curvatureMinMax(real_type &kMin, real_type &kMax) const¶
-
- Parameters
-
kMin – [out] minimum curvature in the 3 arc G2 fitting curve
kMax – [out] maximum curvature in the 3 arc G2 fitting curve
- Returns
-
the difference of
kMaxandkMin
-
real_type theta_D(real_type s) const¶
-
Return angle derivative (curvature) as a function of curvilinear coordinate
-
real_type theta_DD(real_type s) const¶
-
Return angle second derivative (curvature derivative) as a function of curvilinear coordinate
-
real_type theta_DDD(real_type s) const¶
-
Return angle third derivative as a function of curvilinear coordinate
-
real_type X(real_type s) const¶
-
Return x coordinate of the3 arc clothoid as a function of curvilinear coordinate
-
real_type Y(real_type s) const¶
-
Return y coordinate of the3 arc clothoid as a function of curvilinear coordinate
-
void eval(real_type s, real_type &theta, real_type &kappa, real_type &x, real_type &y) const¶
-
Compute parameters of 3 arc clothoid at curvilinear coordinate
s- Parameters
-
s – [in] curvilinear coordinate of where curve is computed
theta – [out] the curve angle
kappa – [out] the curve curvature
x – [out] the curve x-coordinate
y – [out] the curve y-coordinate
-
void eval(real_type s, real_type &x, real_type &y) const¶
-
x and y-coordinate at curvilinear coordinate
s
-
void eval_D(real_type s, real_type &x_D, real_type &y_D) const¶
-
x and y-coordinate derivative at curvilinear coordinate
s
-
void eval_DD(real_type s, real_type &x_DD, real_type &y_DD) const¶
-
x and y-coordinate second derivative at curvilinear coordinate
s
-
void eval_DDD(real_type s, real_type &x_DDD, real_type &y_DDD) const¶
-
x and y-coordinate third derivative at curvilinear coordinate
s
-
void eval_ISO(real_type s, real_type offs, real_type &x, real_type &y) const¶
-
x and y-coordinate at curvilinear coordinate
swith offset
-
void eval_ISO_D(real_type s, real_type offs, real_type &x_D, real_type &y_D) const¶
-
x and y-coordinate derivative at curvilinear coordinate
swith offset
-
void eval_ISO_DD(real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const¶
-
x and y-coordinate second derivative at curvilinear coordinate
swith offset
-
void eval_ISO_DDD(real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const¶
-
x and y-coordinate third derivative at curvilinear coordinate
swith offset
-
inline void rotate(real_type angle, real_type cx, real_type cy)¶
-
Rotate curve by angle \( theta \) centered at point \( (c_x,c_y)\)
- Parameters
-
angle – [in] angle \( theta \)
cx – [in] \( c_x\)
cy – [in] \( c_y\)
-
inline void reverse()¶
-
Reverse curve parameterization
-
void save(ostream_type &stream) const¶
-
save clothoid list of a file stream
Friends
-
friend ostream_type &operator<<(ostream_type &stream, ClothoidCurve const &c)¶
