![]() |
Trax3 3.1.0
trax track library
|
A twist that varies linearly between two values. More...
#include <C:/Trend/Development/Trax3/Code/trax/RoadwayTwist.h>

Public Types | |
| using | Data = common::Interval<Angle> |
| Data describing the twist. | |
| Public Types inherited from trax::RoadwayTwist | |
| enum class | TwistType : char { Unknown = -2 , None = -1 , Zero = 0 , Constant , Linear , Piecewise , PiecewiseLinear , PiecewiseCircular , PiecewiseDirectional , Directional , Positional , Combined , Parallel } |
Public Member Functions | |
| virtual void | From (Angle twist) noexcept=0 |
| Set starting twist value. | |
| virtual Angle | From () const noexcept=0 |
| Get starting twist value. | |
| virtual void | To (Angle twist) noexcept=0 |
| Set ending twist value. | |
| virtual Angle | To () const noexcept=0 |
| Get ending twist value. | |
| virtual const Data & | GetData () const noexcept=0 |
| virtual void | Create (const Data &data) noexcept=0 |
| Public Member Functions inherited from trax::RoadwayTwist | |
| virtual const char * | TypeName () const noexcept=0 |
| Name for the object type that implements this interface. | |
| virtual TwistType | GetTwistType () const noexcept=0 |
| virtual std::unique_ptr< RoadwayTwist > | Clone () const =0 |
| Make a clone from this object. | |
| virtual bool | IsValid () const noexcept=0 |
| virtual Angle | Twist (Length s) const =0 |
| virtual AnglePerLength | D1 (Length s) const =0 |
| virtual bool | ZeroFlip (bool bActive) noexcept=0 |
| virtual void | Flip () noexcept=0 |
| Flips the effect of the twist along the track. After calling this function, the Twist() and D1() methods will give pi - Twist(Track::GetLength() - s) and -D1(Track::GetLength() - s). Calling Flip() a second time will nullify the effect. | |
| virtual void | Mirror () noexcept=0 |
| Multiplies all twist angle by -1. | |
| virtual bool | Offset (Angle offset) noexcept=0 |
| Adds a global offset angle to the Twist. | |
| virtual bool | IsDynamic () const noexcept=0 |
| A twist is dynamic if it relates to geometry global to the track. | |
| virtual bool | IsDirectionalConstant () const noexcept=0 |
| Find wether the twist is directional only offsetted by a constant. | |
| virtual bool | IsConstant () const noexcept=0 |
| virtual void | Freeze (bool bFreeze=true) noexcept=0 |
| Freezes the twist, so that dynamic twists like DirectionalTwist don't update anymore. | |
| virtual bool | IsFrozen () const noexcept=0 |
| virtual bool | IsNull () const noexcept=0 |
| virtual bool | Equals (const RoadwayTwist &toTwist, Angle epsilon_angle=epsilon__angle) const noexcept=0 |
| Comparison. | |
| virtual void | OnAttach (const TrackBuilder &track) noexcept=0 |
| Called on attachment to a track. | |
| virtual void | OnDetach () noexcept=0 |
| Called on detachment from a track. | |
| virtual Angle | DoTwist (Length) const =0 |
| virtual AnglePerLength | DoD1 (Length) const =0 |
| RoadwayTwist (RoadwayTwist &&)=delete | |
| RoadwayTwist & | operator= (const RoadwayTwist &)=delete |
| RoadwayTwist & | operator= (RoadwayTwist &&)=delete |
Static Public Member Functions | |
| static dclspc std::unique_ptr< LinearTwist > | Make (Angle from=0_deg, Angle to=0_deg) noexcept |
| Makes a LinearTwist object. | |
| static dclspc std::unique_ptr< LinearTwist > | Make (const RoadwayTwist &fromTwist) noexcept |
| Makes a LinearTwist object from another twist. | |
| Static Public Member Functions inherited from trax::RoadwayTwist | |
| static dclspc std::unique_ptr< RoadwayTwist > | Make (TwistType type) noexcept |
| Makes a RoadwayTwist object. | |
| static dclspc std::unique_ptr< RoadwayTwist > | Make (TwistType type, const RoadwayTwist &fromTwist) noexcept |
| Makes a RoadwayTwist object from another twist. | |
Additional Inherited Members | |
| Protected Member Functions inherited from trax::RoadwayTwist | |
| RoadwayTwist (const RoadwayTwist &)=default | |
A twist that varies linearly between two values.
| using trax::LinearTwist::Data = common::Interval<Angle> |
Data describing the twist.
This is used for persistence. GetData() receives the data and there is a Create() method to create the twist from this data set without any caculations made that might distort the values during many read/write cycles.