Trax3 3.1.0
trax track library
Loading...
Searching...
No Matches
trax::CombinedTwist Struct Referenceabstract

Combines the effect of two twists by adding them. More...

#include <C:/Trend/Development/Trax3/Code/trax/RoadwayTwist.h>

Inheritance diagram for trax::CombinedTwist:

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< CombinedTwistMake () noexcept
 Makes a CombinedTwist object.
static dclspc std::unique_ptr< CombinedTwistMake (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

Detailed Description

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.

Member Function Documentation

◆ AttachTwist1()

virtual void trax::CombinedTwist::AttachTwist1 ( std::unique_ptr< RoadwayTwist > pTwist)
pure virtual

Populates the first slot.

Exceptions
std::invalid_argumentif pTwist is null or the combined twist would end up with two dynamic twists.
std::logic_errorif this twist is attached to a track.

◆ AttachTwist2()

virtual void trax::CombinedTwist::AttachTwist2 ( std::unique_ptr< RoadwayTwist > pTwist)
pure virtual

Populates the second slot.

Exceptions
std::invalid_argumentif pTwist is null or the combined twist would end up with two dynamic twists.
std::logic_errorif this twist is attached to a track.

The documentation for this struct was generated from the following file: