![]() |
Trax3 3.1.0
trax track library
|
Curve with linear increasing curvature. Also called 'Euler Spiral'. More...
#include <C:/Trend/Development/Trax3/Code/trax/Curve.h>

Classes | |
| struct | Data |
| Data defining the curve. More... | |
Public Member Functions | |||
| virtual spat::SquareMatrix< One, 2 > | Jacobian (Length s) const =0 | ||
| Returns the partial derivatives of the position P to the parameters a and s in a matrix, customly called a 'Jacobian matrix'. | |||
| virtual const Data & | GetData () const noexcept=0 | ||
| Retrieves the data to construct this curve type. A roundtrip is guaranteed to be invariant. | |||
Creation | |||
| |||
| virtual common::Interval< Length > | Create (Area a2)=0 | ||
| Create a clothoid with a*a. | |||
| virtual common::Interval< Length > | Create (AnglePerLength curvature0, AnglePerLength curvature1, Length length)=0 | ||
| Create a clothoid from a starting and ending curvature and a total length. | |||
| virtual common::Interval< Length > | Create (Length radius0, Length radius1, Length length)=0 | ||
| Create a clothoid from a starting and ending radius and a total length. | |||
| virtual common::Interval< Length > | Create (const Data &data)=0 | ||
| Create the Clothoid from data set for which it is guaranteed, that no calculational drift will happen e.g. in write/read cycles. | |||
| Public Member Functions inherited from trax::Curve | |||
| virtual const char * | TypeName () const noexcept=0 | ||
| virtual CurveType | GetCurveType () const noexcept=0 | ||
| virtual bool | IsValid () const noexcept=0 | ||
| virtual AnglePerLength | Curvature (Length s) const =0 | ||
| virtual AnglePerLength | Torsion (Length s) const =0 | ||
| virtual bool | IsFlat () const noexcept=0 | ||
| virtual void | Transition (Length s, spat::Position< Length > &pos) const =0 | ||
| Copies the 3D Position at the specified location to pos. | |||
| virtual void | Transition (Length s, spat::Vector< One > &tan) const =0 | ||
| Copies the 3D tangential vector at the specified location to tan. | |||
| virtual void | Transition (Length s, spat::VectorBundle< Length, One > &bundle) const =0 | ||
| Copies the 3D Position and tangential vector at the specified location to bundle. | |||
| virtual void | Transition (Length s, spat::VectorBundle2< Length, One > &bundle) const =0 | ||
| Copies the 3D Position and tangential and normal vectors at the specified location to bundle. | |||
| virtual void | Transition (Length s, spat::Frame< Length, One > &frame) const =0 | ||
| Copies the 3D TBN-Frame at the specified location to frame. | |||
| virtual std::vector< Length > | ZeroSet () const =0 | ||
| Returns a list of parameters at which the normal vector flips from one side to the other. | |||
| virtual common::Interval< Length > | Range () const =0 | ||
| virtual spat::Vector< One > | LocalUp () const =0 | ||
| Gives the Curve's idiosyncratic up direction. Some curves maintain some idea about where they have their upside, either because of their form (e.g Helix) or because it is extra defined (e.g. for Line). Some curves maintain no such notion (e.g. many Cubics). | |||
| virtual spat::Frame< Length, One > | GetCurveLocalTransformation () const =0 | ||
| virtual std::unique_ptr< Curve > | Clone () const =0 | ||
| make an exact copy of this curve. | |||
| virtual bool | Mirror (const spat::VectorBundle< Length, One > &mirrorPlane)=0 | ||
| Make a Curve with mirrored geometry (but of course one thet returns right handed frames). | |||
| virtual bool | Equals (const Curve &toCurve, common::Interval< Length > range, Length epsilon_length=epsilon__length, Angle epsilon_angle=epsilon__angle) const =0 | ||
| Comparison. | |||
| Curve (Curve &&)=delete | |||
| Curve & | operator= (const Curve &)=delete | ||
| Curve & | operator= (Curve &&)=delete | ||
Static Public Member Functions | |||||||||||||
| static dclspc std::unique_ptr< Clothoid > | Make () noexcept | ||||||||||||
| Makes a Clothoid object. | |||||||||||||
| static Angle dclspc | MaxAngle () noexcept | ||||||||||||
| Gets a limiting angle value. | |||||||||||||
Limits | |||||||||||||
Returns the limits on Clothoid creation from two curve radii and the curve length between those two points. One of the values can be changed inside the returned limits so that the curve will still create.
| |||||||||||||
| static std::tuple< common::Interval< AnglePerLength >, common::Interval< AnglePerLength >, common::Interval< Length > > dclspc | Limits (AnglePerLength curvature0, AnglePerLength curvature1, Length length) | ||||||||||||
| static std::tuple< common::Interval< Length >, common::Interval< Length >, common::Interval< Length > > dclspc | Limits (Length radius0, Length radius1, Length length) | ||||||||||||
Additional Inherited Members | |
| Public Types inherited from trax::Curve | |
| enum class | CurveType { none = 0 , Line , Arc , Helix , LineP , ArcP , HelixP , Clothoid , Cubic , Spline , Rotator , RotatorWithOffset , RotatorChain , PolygonalChain , SampledCurve , Parallel , EEPCurve , EEPResidual , EEPAlternative , Unknown , UserDefined } |
| Curve type identification values. More... | |
| Protected Member Functions inherited from trax::Curve | |
| Curve (const Curve &)=default | |
Curve with linear increasing curvature. Also called 'Euler Spiral'.
The curve starts at the Origin with tangent {1,0,0} and curvature k = s/a² with some fixed a.
|
pure virtual |
Create a clothoid from a starting and ending curvature and a total length.
a2 = l / (k1 - k0), [k0*a2,k1*a2]; l > 0_m, k1 > k0.
| curvature0 | curvature at the interval's near position. |
| curvature1 | curvature at the interval's far position. |
| length | total length of the interval returned. |
|
pure virtual |
Create a clothoid with a*a.
| a2 | a*a, the Clothoids paramter squared. |
| std::invalid_argument | if a2 < 0. |
|
pure virtual |
Create the Clothoid from data set for which it is guaranteed, that no calculational drift will happen e.g. in write/read cycles.
| data | data set to create the curve from. |
|
pure virtual |
Create a clothoid from a starting and ending radius and a total length.
| radius0 | radius at the interval's near position. |
| radius1 | radius at the interval's far position. |
| length | total length of the interval returned. |
|
pure virtual |
Returns the partial derivatives of the position P to the parameters a and s in a matrix, customly called a 'Jacobian matrix'.
For a general cuve C(x0(u),x1(u),...) where the parameters xi are functions of another parameter u it holds that:
/// /// dC/du = J * dx/du /// ///
| s | parameter to evaluate the derivatives. |
| std::bad_alloc | on memory exhaustion. |
|
staticnoexcept |
Gets a limiting angle value.
Due to numerical complexity, the Clothoid can not get evaluated past this value. T = s*s/(2*a*a) <= MaximumAngle().