VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
DtTrigonometricSmoother Class Reference

Instances of DtTrigonometricSmoother are used to provide approximated position and orientation information for entities. More...

+ Inheritance diagram for DtTrigonometricSmoother:
+ Collaboration diagram for DtTrigonometricSmoother:

Public Member Functions

 DtTrigonometricSmoother ()
 Default constructor.
virtual ~DtTrigonometricSmoother ()
 Destructor.
 DtTrigonometricSmoother (const DtTrigonometricSmoother &src)
 Copy constructor.
DtTrigonometricSmootheroperator= (const DtTrigonometricSmoother &src)
 Assignment operator.
bool operator== (const DtTrigonometricSmoother &orig) const
 equality Operator.
virtual DtApproximatorclone () const
 Create a copy of this object.
virtual void setLocation (const DtVector &loc, DtTime t)
 Set absolute location.
virtual const DtVectorapproxLocation (DtTime t) const
 Get the approximated location at the specified time.
virtual void setVelocity (const DtVector32 &vel, DtTime t)
 Set absolute velocity.
virtual const DtVector32approxVelocity (DtTime t) const
 Get the approximated velocity at the specified time.
const DtVector32approxUnsmoothedVelocity (DtTime curTime) const
 Get the approximated velocity at the specified time without taking into account smoothing.
virtual void setOrientation (const DtTaitBryan &ori, DtTime t)
 Set absolute orientation.
virtual const DtTaitBryanapproxEuler (DtTime t) const
 Get approximated orientation (Euler angles) at the specified time.
virtual void setAcceleration (const DtVector32 &acc, DtTime t)
 Set/Get absolute acceleration.
virtual const DtVector32acceleration (DtTime t) const
virtual void setRotationalVelocity (const DtVector32 &vel, DtTime t)
 Set/Get absolute rotational velocity.
virtual const DtVector32rotationalVelocity (DtTime t) const
virtual const DtDcmapproxBodyToGeoc (DtTime t) const
 Get the approximated data body to geocentric coordinate matrix.
virtual void setSmoothPeriod (DtTime t)
 Set/Get smoothing period - the amount of time, in seconds, over which smoothing takes place.
virtual DtTime smoothPeriod () const
virtual void setOriSmoothPeriod (DtTime t)
 Set/Get orientation smoothing period - the amount of time, in seconds, over which orientation smoothing takes place.
virtual DtTime oriSmoothPeriod () const
virtual void setSmoothEnable (bool onOff)
virtual bool smoothEnable () const
- Public Member Functions inherited from DtDeadReckoner
 DtDeadReckoner ()
 Default CTOR.
 DtDeadReckoner (const DtDeadReckoner &orig)
 Copy CTOR.
virtual ~DtDeadReckoner ()
 Virtual DTOR.
DtDeadReckoneroperator= (const DtDeadReckoner &orig)
 Assignment Operator.
bool operator== (const DtDeadReckoner &orig) const
 equality Operator.
virtual const DtVectordeadReckonedLocation (DtTime curTime) const
 Get the dead-reckoned location at the specified time.
virtual const DtVector32deadReckonedVelocity (DtTime curTime) const
 Get the dead-reckoned velocity at the specified time.
virtual const DtTaitBryandeadReckonedEuler (DtTime curTime) const
 Get dead-reckoned orientation (Euler angles) at the specified time.
virtual const DtTimelocationUpdateTime () const
 Get the last update time of the absolute location.
virtual const DtTimevelocityUpdateTime () const
 Get the last update time of the absolute velocity.
virtual const DtTimeorientationUpdateTime () const
 Get the last update time of the absolute orientation.
virtual const DtDcmdeadReckonedBodyToGeoc (DtTime curTime) const
 Get the dead-reckoned body to geocentric coordinate matrix.
virtual void setAlgorithm (DtDeadReckonTypes alg)
 Set/Get the dead reckoning algorithm used for generating the approximated values from the absolute values.
virtual DtDeadReckonTypes algorithm () const
virtual int isRotational () const
 Returns 1 if the dead reckoning algorithm is a rotational one, 0 otherwise.
virtual void deadReckonPosition (DtTime dt, const DtVector &oldPos, const DtVector32 &oldVel, const DtVector32 &oldAccel, DtVector32 &newVel, DtVector &newPos) const
 Calculate the dead reckon position information based on the algorithm type.
virtual void deadReckonOrientation (DtTime dt, const DtDcm &old_b2w, const DtDirectedRotRate &drr, DtDcm &new_b2w) const
 Calculate the orientation matrix based on the algorithm type.
- Public Member Functions inherited from DtApproximator
virtual ~DtApproximator ()
 Virtual DTOR.
DtApproximatoroperator= (const DtApproximator &orig)
 Assignment operator.
virtual void setFrozen (bool frozen)
 Set/Get whether the dead-reckoner is frozen.
virtual bool isFrozen () const

Static Public Member Functions

static void setDfltSmoothPeriod (DtTime smoothPeriod)
 Set/Get the default smoothing period.
static DtTime dfltSmoothPeriod ()
static void setMasterSmoothEnable (bool onOff)
 Set/Get the value of the "master" smoothing-enabled switch.
static bool masterSmoothEnable ()
static void rotAngleAndAxisFromRotMatrix (DtVector &n, double &phi, const DtDcm &m)
static void rotMatrixFromRotRatesAndTime (DtDcm &m, DtDcm &o, DtVector &n, double &w, const DtVector32 &r, double t)
- Static Public Member Functions inherited from DtDeadReckoner
static int isRotational (DtDeadReckonTypes algorithm)
 Returns 1 if the dead reckoning algorithm is a rotational one, 0 otherwise.
static void deadReckonPosition (DtTime dt, DtDeadReckonTypes algorithm, const DtVector &oldPos, const DtVector32 &oldVel, const DtVector32 &oldAccel, DtVector32 &newVel, DtVector &newPos)
 Calculate the dead reckon position information.
static void deadReckonOrientation (DtTime dt, DtDeadReckonTypes algorithm, const DtDcm &old_b2w, const DtDirectedRotRate &drr, DtDcm &new_b2w)
 Calculate the orientation matrix.

Protected Member Functions

virtual void resetPosSmoother (DtTime t)
virtual void resetOriSmoother (DtTime t)
virtual const DtVectorsmoothPosition (DtTime t)
virtual const DtVector32smoothVelocity (DtTime t)
virtual const DtDcmsmoothBodyToGeoc (DtTime t)
virtual void initSmootherParams ()
virtual void initSmoothOriParams ()
DtTrigonometricSmootherself () const
 Get rid of constness on the "this" pointer in order to access non-const functions from const member functions (such as simple accessors).
- Protected Member Functions inherited from DtDeadReckoner
virtual void deadReckonLoc (DtTime curTime) const
 If the last dead reckoned position is not valid for the specified time, recalculate it and update the time at which this value is valid.
virtual void deadReckonBodyToGeoc (DtTime curTime) const
 If the last dead reckoned body to geocentric coordinate matrix is not valid for the specified time, recalculate it and update the time at which this value is valid.
virtual void deadReckonEuler (DtTime curTime) const
 If the last dead reckoned orientation (Euler angles) is not valid for the specified time, recalculate it and update the time at which this value is valid.
- Protected Member Functions inherited from DtApproximator
 DtApproximator ()
 Default CTOR.
 DtApproximator (const DtApproximator &orig)
 Copy CTOR.

Protected Attributes

DtVector myLastDrPos
DtVector32 myLastDrVel
DtVector mySmoothPos
DtVector32 mySmoothVel
DtVector myX1
DtVector myV1
DtVector myA1
DtVector myA2
DtTime myTau
DtTime myTau2
DtTime myTau2Inv
DtTime myTauSq4
DtTime myTauSq4Inv
DtTime myLastSetTime
DtTime myPostSmoothTime
DtTime myHalfSmoothTime
DtTime myOriTau
DtTime myLastSetOriTime
DtTime myPostSmoothOriTime
DtTime myLastSmoothOriTime
DtTime myLastSmoothTbTime
double mySmoothRotRate
DtDcm myLastDrOri
DtDcm mySmoothOri
DtDcm mySmoothOmegaMx
DtVector mySmoothRotAxis
DtTaitBryan mySmoothTb
bool myIsDirty
bool myOriIsDirty
bool myTbIsDirty
bool mySmoothEnable
- Protected Attributes inherited from DtDeadReckoner
DtVector myLocAtTimeOfValidity
DtVector32 myVelAtTimeOfValidity
DtTime mySimTimePosDataValid
DtDcm myBodyToGeocAtTimeOfValidity
DtTime mySimTimeOrientDataValid
DtVector myDRLoc
DtVector32 myDRVel
DtTime myDRPosTime
DtDcm myDRBodyToGeoc
DtTime myDRBodyToGeocTime
DtTaitBryan myDREuler
DtTime myDREulerTime
DtDirectedRotRate myDirectedRotRate
DtDeadReckonTypes myAlgorithm
DtVector32 myAccel
DtBodyRates myRotVel
- Protected Attributes inherited from DtApproximator
bool myFrozenFlag

Static Protected Attributes

static double theTimeTolerance
static bool theMasterSmoothEnable
static DtTime theDfltSmoothPeriod

Detailed Description

Instances of DtTrigonometricSmoother are used to provide approximated position and orientation information for entities.

Position and orientation information is approximated over time from the last set absolute (non-approximated) information. When a new position is set, the current position moves smoothly to reflect the new information, rather than jumping to the new absolute position. This smoother uses a sinusoidal line as it approaches the new position. In some situations, this smoothing will not look correct, in which case we recommend the DtExponentialSmoother instead.

Constructor & Destructor Documentation

DtTrigonometricSmoother::DtTrigonometricSmoother ( )

Default constructor.

virtual DtTrigonometricSmoother::~DtTrigonometricSmoother ( )
virtual

Destructor.

DtTrigonometricSmoother::DtTrigonometricSmoother ( const DtTrigonometricSmoother src)

Copy constructor.

Member Function Documentation

virtual const DtVector32& DtTrigonometricSmoother::acceleration ( DtTime  t) const
virtual

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

virtual const DtDcm& DtTrigonometricSmoother::approxBodyToGeoc ( DtTime  t) const
virtual

Get the approximated data body to geocentric coordinate matrix.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

virtual const DtTaitBryan& DtTrigonometricSmoother::approxEuler ( DtTime  t) const
virtual

Get approximated orientation (Euler angles) at the specified time.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

virtual const DtVector& DtTrigonometricSmoother::approxLocation ( DtTime  t) const
virtual

Get the approximated location at the specified time.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

const DtVector32& DtTrigonometricSmoother::approxUnsmoothedVelocity ( DtTime  curTime) const

Get the approximated velocity at the specified time without taking into account smoothing.

virtual const DtVector32& DtTrigonometricSmoother::approxVelocity ( DtTime  t) const
virtual

Get the approximated velocity at the specified time.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

virtual DtApproximator* DtTrigonometricSmoother::clone ( ) const
virtual

Create a copy of this object.

Memory is allocated and it is the responsibility of the caller to free the memory via delete.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

static DtTime DtTrigonometricSmoother::dfltSmoothPeriod ( )
static

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::initSmootherParams ( )
protectedvirtual
virtual void DtTrigonometricSmoother::initSmoothOriParams ( )
protectedvirtual
static bool DtTrigonometricSmoother::masterSmoothEnable ( )
static

Reimplemented in DtExponentialSmoother.

DtTrigonometricSmoother& DtTrigonometricSmoother::operator= ( const DtTrigonometricSmoother src)

Assignment operator.

bool DtTrigonometricSmoother::operator== ( const DtTrigonometricSmoother orig) const

equality Operator.

virtual DtTime DtTrigonometricSmoother::oriSmoothPeriod ( ) const
virtual
virtual void DtTrigonometricSmoother::resetOriSmoother ( DtTime  t)
protectedvirtual
virtual void DtTrigonometricSmoother::resetPosSmoother ( DtTime  t)
protectedvirtual
static void DtTrigonometricSmoother::rotAngleAndAxisFromRotMatrix ( DtVector n,
double phi,
const DtDcm m 
)
static
virtual const DtVector32& DtTrigonometricSmoother::rotationalVelocity ( DtTime  t) const
virtual

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

static void DtTrigonometricSmoother::rotMatrixFromRotRatesAndTime ( DtDcm m,
DtDcm o,
DtVector n,
double w,
const DtVector32 r,
double  t 
)
static
DtTrigonometricSmoother * DtTrigonometricSmoother::self ( ) const
inlineprotected

Get rid of constness on the "this" pointer in order to access non-const functions from const member functions (such as simple accessors).

This should be used sparingly since it bypasses the const protection. Note: This is essentially like an operator and is non-virtual, since can't override based on return type. Allows derived classes to also define this member.

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::setAcceleration ( const DtVector32 acc,
DtTime  t 
)
virtual

Set/Get absolute acceleration.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

static void DtTrigonometricSmoother::setDfltSmoothPeriod ( DtTime  smoothPeriod)
static

Set/Get the default smoothing period.

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::setLocation ( const DtVector loc,
DtTime  t 
)
virtual

Set absolute location.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

static void DtTrigonometricSmoother::setMasterSmoothEnable ( bool  onOff)
static

Set/Get the value of the "master" smoothing-enabled switch.

Master smoothing switch defaults to on.

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::setOrientation ( const DtTaitBryan ori,
DtTime  t 
)
virtual

Set absolute orientation.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::setOriSmoothPeriod ( DtTime  t)
virtual

Set/Get orientation smoothing period - the amount of time, in seconds, over which orientation smoothing takes place.

Pass a value of -1 to indicate use of the default smoothing period.

virtual void DtTrigonometricSmoother::setRotationalVelocity ( const DtVector32 vel,
DtTime  t 
)
virtual

Set/Get absolute rotational velocity.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::setSmoothEnable ( bool  onOff)
virtual

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::setSmoothPeriod ( DtTime  t)
virtual

Set/Get smoothing period - the amount of time, in seconds, over which smoothing takes place.

Pass a value of -1 to indicate use of the default smoothing period.

Reimplemented in DtExponentialSmoother.

virtual void DtTrigonometricSmoother::setVelocity ( const DtVector32 vel,
DtTime  t 
)
virtual

Set absolute velocity.

Reimplemented from DtDeadReckoner.

Reimplemented in DtExponentialSmoother.

virtual const DtDcm& DtTrigonometricSmoother::smoothBodyToGeoc ( DtTime  t)
protectedvirtual
virtual bool DtTrigonometricSmoother::smoothEnable ( ) const
virtual

Reimplemented in DtExponentialSmoother.

virtual DtTime DtTrigonometricSmoother::smoothPeriod ( ) const
virtual

Reimplemented in DtExponentialSmoother.

virtual const DtVector& DtTrigonometricSmoother::smoothPosition ( DtTime  t)
protectedvirtual
virtual const DtVector32& DtTrigonometricSmoother::smoothVelocity ( DtTime  t)
protectedvirtual

Member Data Documentation

DtVector DtTrigonometricSmoother::myA1
protected
DtVector DtTrigonometricSmoother::myA2
protected
DtTime DtTrigonometricSmoother::myHalfSmoothTime
protected
bool DtTrigonometricSmoother::myIsDirty
protected
DtDcm DtTrigonometricSmoother::myLastDrOri
protected
DtVector DtTrigonometricSmoother::myLastDrPos
protected
DtVector32 DtTrigonometricSmoother::myLastDrVel
protected
DtTime DtTrigonometricSmoother::myLastSetOriTime
protected
DtTime DtTrigonometricSmoother::myLastSetTime
protected
DtTime DtTrigonometricSmoother::myLastSmoothOriTime
protected
DtTime DtTrigonometricSmoother::myLastSmoothTbTime
protected
bool DtTrigonometricSmoother::myOriIsDirty
protected
DtTime DtTrigonometricSmoother::myOriTau
protected
DtTime DtTrigonometricSmoother::myPostSmoothOriTime
protected
DtTime DtTrigonometricSmoother::myPostSmoothTime
protected
bool DtTrigonometricSmoother::mySmoothEnable
protected
DtDcm DtTrigonometricSmoother::mySmoothOmegaMx
protected
DtDcm DtTrigonometricSmoother::mySmoothOri
protected
DtVector DtTrigonometricSmoother::mySmoothPos
protected
DtVector DtTrigonometricSmoother::mySmoothRotAxis
protected
double DtTrigonometricSmoother::mySmoothRotRate
protected
DtTaitBryan DtTrigonometricSmoother::mySmoothTb
protected
DtVector32 DtTrigonometricSmoother::mySmoothVel
protected
DtTime DtTrigonometricSmoother::myTau
protected
DtTime DtTrigonometricSmoother::myTau2
protected
DtTime DtTrigonometricSmoother::myTau2Inv
protected
DtTime DtTrigonometricSmoother::myTauSq4
protected
DtTime DtTrigonometricSmoother::myTauSq4Inv
protected
bool DtTrigonometricSmoother::myTbIsDirty
protected
DtVector DtTrigonometricSmoother::myV1
protected
DtVector DtTrigonometricSmoother::myX1
protected
DtTime DtTrigonometricSmoother::theDfltSmoothPeriod
staticprotected
bool DtTrigonometricSmoother::theMasterSmoothEnable
staticprotected
double DtTrigonometricSmoother::theTimeTolerance
staticprotected

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

Document ID: Generated on Thu Feb 22 04:26:36 EST 2018 from SVN revision 186468
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)