![]() |
Trax3 3.1.0
trax track library
|
Combines the effect of two twists by adding them. More...
#include <C:/Trend/Development/Trax3/Code/trax/RoadwayTwist.h>

Public Member Functions | |
| virtual void | AttachTwist1 (std::unique_ptr< RoadwayTwist > pTwist)=0 |
| Populates the first slot. | |
| virtual RoadwayTwist & | Twist1 () const noexcept=0 |
| virtual std::unique_ptr< RoadwayTwist > | DetachTwist1 ()=0 |
| virtual void | AttachTwist2 (std::unique_ptr< RoadwayTwist > pTwist)=0 |
| Populates the second slot. | |
| virtual RoadwayTwist & | Twist2 () const noexcept=0 |
| virtual std::unique_ptr< RoadwayTwist > | DetachTwist2 ()=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< CombinedTwist > | Make () noexcept |
| Makes a CombinedTwist object. | |
| static dclspc std::unique_ptr< CombinedTwist > | Make (const RoadwayTwist &fromTwist) noexcept |
| Makes a CombinedTwist 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 | |
| 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 } |
| Protected Member Functions inherited from trax::RoadwayTwist | |
| RoadwayTwist (const RoadwayTwist &)=default | |
Combines the effect of two twists by adding them.
If a slot of the combined twist is empty, it will be populated with a ConstantTwist with a zero angle. The combined twist is symmetric in the twist1 slot and the twist2 slot, meaning RoadwayTwist::Equals() returns true if only the twists in the slots are switched.
|
pure virtual |
Populates the first slot.
| std::invalid_argument | if pTwist is null or the combined twist would end up with two dynamic twists. |
| std::logic_error | if this twist is attached to a track. |
|
pure virtual |
Populates the second slot.
| std::invalid_argument | if pTwist is null or the combined twist would end up with two dynamic twists. |
| std::logic_error | if this twist is attached to a track. |