VR-Forces 4.2 Class Documentation
List of all members | Public Types | Public Member Functions | Protected Attributes | Private Member Functions
DtKinematicStateCS Class Reference

class DtKinematicStateCS: DtKinematicStateCS contains the current kinematic state of an object in one Cartesian coordinate system. More...

Inheritance diagram for DtKinematicStateCS:
Inheritance graph
[legend]

Public Types

enum  DtSimOrientationType { BodyToLocal, BodyToBody, BodyToGeocentric }
enum  DtRotationConstraint {
  FixedRotation, RotateAboutX, RotateAboutY, RotateAboutZ,
  UnconstrainedRotation
}
- Public Types inherited from DtReaderWriter
typedef std::vector
< DtSymbolString > 
aliasContainer
typedef std::vector
< DtSymbolString >::iterator 
aliasIter
typedef std::vector
< DtSymbolString >
::const_iterator 
aliasConstIter
typedef std::pair
< DtSymbolString, DtString
DtVariableNameType
typedef DtReaderWriterFactory *(* DtReaderWriterFactoryCreatorFcn )()

Public Member Functions

 DtKinematicStateCS (DtSimOrientationType orientationType, const DtString &name=DtString::nullString(), DtReaderWriterRegistry *parentRegistry=NULL)
 Constructor which optionally sets the object up for reading/writing.
 DtKinematicStateCS (DtSimOrientationType orientationType, const DtSymbolString &name, DtReaderWriterRegistry *parentRegistry=NULL)
 DtKinematicStateCS (const DtKinematicStateCS &orig, const DtString &rwName=DtString::nullString(), DtReaderWriterRegistry *parentRegistry=NULL)
 Copy Constructor.
 DtKinematicStateCS (const DtKinematicStateCS &orig, const DtSymbolString &name, DtReaderWriterRegistry *parentRegistry=NULL)
const DtKinematicStateCSoperator= (const DtKinematicStateCS &orig)
 Assignment operator.
virtual ~DtKinematicStateCS ()
 Destructor.
virtual DtKinematicStateCSclone (const DtString &name=DtString::nullString(), DtReaderWriterRegistry *parentRegistry=NULL) const
 Clone.
virtual DtKinematicStateCSclone (const DtSymbolString &name, DtReaderWriterRegistry *parentRegistry=NULL) const
virtual const DtVectorposition () const
 Get / set position in this coordinate system.
virtual void setPosition (const DtVector &position)
virtual const DtVectorvelocity () const
 Get / set velocity in this coordinate system.
virtual void setVelocity (const DtVector &velocity, bool recomputeSpeed=true)
virtual DtReal speed () const
 You must set velocity, but you can access speed as well.
virtual void setSpeed (DtReal speed)
virtual const DtVectoracceleration () const
 Get / set acceleration in this coordinate system.
virtual void setAcceleration (const DtVector &acceleration)
virtual const DtTaitBryan & orientation () const
 Get / set orientation in this coordinate system.
virtual void setOrientation (const DtTaitBryan &orientation, DtRotationConstraint recomputeMatrix=RotateAboutX)
virtual const DtDcm & orientationMatrix () const
 Get / set orientation matrix in this coordinate system.
virtual void setOrientationMatrix (const DtDcm &orientationMatrix, bool recomputeEulers=true)
virtual DtSimOrientationType orientationType () const
 Get / set orientation type in this coordinate system.
virtual void setOrientationType (DtSimOrientationType orientationType)
virtual DtRotationConstraint rotationConstraint () const
virtual void setRotationConstraint (DtRotationConstraint contraint)
virtual void setCoordinateSystem (const Coordinate_System *coordinateSystem)
virtual void getSelf (DtlObjPtr args, const DtFilename &searchPath, const DtVariableBindingsList &variableBindings)
 Overridden to initialize myRecomputeMatrix to true.
- Public Member Functions inherited from DtReaderWriter
 DtReaderWriter ()
 default constructor
 DtReaderWriter (const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL, bool readonly=false)
 real constructor Setting the readonly flag prevents object from writing itself to the stream.
 DtReaderWriter (const DtSymbolString &name, DtReaderWriterRegistry *parentRegistry=NULL, bool readonly=false)
 DtReaderWriter (const DtString &name, const DtReaderWriter &orig, DtReaderWriterRegistry *parentRegistry=NULL)
 copy constructor
 DtReaderWriter (const DtSymbolString &name, const DtReaderWriter &orig, DtReaderWriterRegistry *parentRegistry=NULL)
const DtReaderWriteroperator= (const DtReaderWriter &orig)
 assignment operator
bool operator== (const DtReaderWriter &) const
 Equivalence operator.
bool operator!= (const DtReaderWriter &rhs)
virtual ~DtReaderWriter ()
 destructor
virtual void putSelf (FILE *fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
 Top level call to write itself to file.
virtual void getSelf (DtlObjPtr args, const DtFilename &searchPath=DtFilename::nullFilename(), const DtVariableBindingsList &variableBindings=nullVariableReference())
 Top level to read itself from an input stream.
virtual void writeSelf (FILE *fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
 Called from putSelf, calls myRegistry.putSelf which in turn calls putSelf on each reader/writer in the registry.
virtual DtSymbolString name () const
 Accessor for name of this readable/writable object.
virtual void addAlias (const DtSymbolString &alias)
 Add an alias as an alternative name for this object.
virtual bool hasAlias (const DtSymbolString &alias)
virtual const aliasContaineraliases () const
virtual void setReadonly (bool flag)
 Set read-only flag.
virtual bool isReadonly () const
virtual bool variableIsBound () const
virtual void unbindVariable ()
 Sets the myVariableIsBound flag to false.
virtual void setName (const DtString &)
 Set the name of the object.
virtual const char * readerWriterType () const
 Used to supply a string type that this reader writer type is.
virtual DtString prettyPrint () const
 Routine to return a human readable form of the reader/writer variable.
virtual void bindVariables (DtVariableBindingsList variableBindings)
 Runs a variable binding pass on this reader writer and any of its children.
virtual std::list
< DtVariableNameType
unboundVariables () const
bool invalid () const
virtual bool hasChild (const DtReaderWriter *p) const
 Returns true if this variable has a child p in it's chain.
virtual void setValueSpecified (bool specified, bool recurse=false)
 The specified flags are used for optional values.
virtual bool valueSpecified () const
 The specified flags are used for optional values.
virtual bool isVariableReference () const
 Specifies whether or not this reader writer is really a variable that is specified elsewhere.
virtual void setIsVariableReference (bool value)
virtual void clearAllVariableReferenceFlags ()
 Clears out all variable reference flags from all readerwriter items in registry recursively.
virtual DtSymbolString variableName () const
 The variable name, if this object is a variable reference.
virtual void setVariableName (const DtSymbolString variableName)
 The variable name, if this object is a variable reference.
const DtReaderWriterRegistryregistry () const
 Collection of child DtReaderWriter nodes owned by this object.
DtReaderWriterRegistryregistry ()
 Collection of child DtReaderWriter nodes owned by this object.

Protected Attributes

DtRotationConstraint myRecomputeMatrix
bool myRecomputeEulers
bool myRecomputeSpeed
DtRwVector myPosition
DtRwVector myVelocity
DtRwVector myAcceleration
DtSimOrientationType myOrientationType
DtRwTaitBryan myOrientation
DtDcm myOrientationMatrix
DtRotationConstraint myCurrentRotationConstraint
DtReal myCurrentSpeed
 derived quantity; used so much, it's worth caching
const Coordinate_System * myCoordinateSystemPtr
DtRwTaitBryan myTopoOrientation
 Retained for backwards compatibility.
- Protected Attributes inherited from DtReaderWriter
const DtSymbolString myName
DtReaderWriterRegistry myRegistry
bool myValueSpecified
bool myReadOnlyFlag
bool myIsVariableReference
DtSymbolString myVariableName
bool myVariableIsBound
aliasContainer myAliases
 Container for the aliases which represent alternative names for the object.
bool myInvalid
 Set to true if there is a problem reading this item.

Private Member Functions

 DtKinematicStateCS ()
 Default Constructor. Do not use.

Additional Inherited Members

- Static Public Member Functions inherited from DtReaderWriter
static void putIndent (FILE *fp, int indentLevel)
static const
DtVariableBindingsList
nullVariableReference ()
static void setPostGetSelfCallback (DtGetSelfCallbackFcn fcn, void *usrData)
static void setPrePutSelfCallback (DtPutSelfCallbackFcn fcn, void *usrData)
static const DtFilename & appPath ()
 Gets the current working directory.
static void setFactoryCreatorFunction (DtReaderWriterFactoryCreatorFcn fcn)
 Sets the function to create the DtReaderWriterFactory.
static void createReaderWriterFactory ()
static DtReaderWriterFactoryfactory ()
- Protected Member Functions inherited from DtReaderWriter
virtual void bindToRwAsVariable (const DtReaderWriter *rw)
 Copies values from the specified DtReaderWriter.
virtual void bindLocalVariables (const DtVariableBindingsList &variableBindings)
 Checks to see if this RW object is a variable reference that can be bound using the provided bindings.
virtual void putData (FILE *fp, int indentLevel=0)
 Deriving class overrides these to get/put class specific data.
virtual DtlObjPtr getData (DtlObjPtr args, const DtFilename &searchPath, const DtVariableBindingsList &variableBindings)
 Deriving class overrides these to get/put class specific data.
- Static Protected Attributes inherited from DtReaderWriter
static DtString theUnspecifiedValue
static DtGetSelfCallbackInfo thePostGetSelfCallback
static DtPutSelfCallbackInfo thePrePutSelfCallback
static const DtVariableBindingsList theEmptyVariableBindingsList
static bool theCreatorFcnSet
static DtReaderWriterFactorytheFactory
static
DtReaderWriterFactoryCreatorFcn 
theFactoryCreatorFcn

Detailed Description

class DtKinematicStateCS: DtKinematicStateCS contains the current kinematic state of an object in one Cartesian coordinate system.

It may be local (database) coordinates, network (geocentric) coordinates, or in the coordinate system of the object's parent object. Orientation (in Eulers) and Orientation Type together represent the same information as the OrientationMatrix; these values are linked so that if one is changed, the other will be converted the next time it is accessed.

Euler angles represent angles of rotation about another coordinate system, but this information is not enough to create a 3x3 rotation matrix. We need to support 3 types of orientation matrices, all of them pre-multiply: matrices that represent our body system wrt a local database system; matrices that represent one body system wrt to another; and matrices that represent our bodySystem wrt geocentric coordinates. Each DtKinematicStateCS in the the DtKinematicState object (see kinState.h) uses a different orientation type, and so needs different routines to go between Eulers and matrices (DtDcms).

Orientation may be constrained about a given axis, resulting in less expensive routines to go between Euler angles and matrices. This is used for articulating parts such as guns and turrets.

Member Enumeration Documentation

Enumerator:
BodyToLocal 
BodyToBody 
BodyToGeocentric 
Enumerator:
FixedRotation 
RotateAboutX 
RotateAboutY 
RotateAboutZ 
UnconstrainedRotation 

Constructor & Destructor Documentation

DtKinematicStateCS::DtKinematicStateCS ( DtSimOrientationType  orientationType,
const DtString name = DtString::nullString(),
DtReaderWriterRegistry parentRegistry = NULL 
)

Constructor which optionally sets the object up for reading/writing.

DtKinematicStateCS::DtKinematicStateCS ( DtSimOrientationType  orientationType,
const DtSymbolString &  name,
DtReaderWriterRegistry parentRegistry = NULL 
)
DtKinematicStateCS::DtKinematicStateCS ( const DtKinematicStateCS orig,
const DtString rwName = DtString::nullString(),
DtReaderWriterRegistry parentRegistry = NULL 
)

Copy Constructor.

DtKinematicStateCS::DtKinematicStateCS ( const DtKinematicStateCS orig,
const DtSymbolString &  name,
DtReaderWriterRegistry parentRegistry = NULL 
)
virtual DtKinematicStateCS::~DtKinematicStateCS ( )
virtual

Destructor.

DtKinematicStateCS::DtKinematicStateCS ( )
private

Default Constructor. Do not use.

Member Function Documentation

const DtKinematicStateCS& DtKinematicStateCS::operator= ( const DtKinematicStateCS orig)

Assignment operator.

virtual DtKinematicStateCS* DtKinematicStateCS::clone ( const DtString name = DtString::nullString(),
DtReaderWriterRegistry parentRegistry = NULL 
) const
virtual

Clone.

virtual DtKinematicStateCS* DtKinematicStateCS::clone ( const DtSymbolString &  name,
DtReaderWriterRegistry parentRegistry = NULL 
) const
virtual
virtual const DtVector& DtKinematicStateCS::position ( ) const
virtual

Get / set position in this coordinate system.

virtual void DtKinematicStateCS::setPosition ( const DtVector position)
virtual
virtual const DtVector& DtKinematicStateCS::velocity ( ) const
virtual

Get / set velocity in this coordinate system.

virtual void DtKinematicStateCS::setVelocity ( const DtVector velocity,
bool  recomputeSpeed = true 
)
virtual
virtual DtReal DtKinematicStateCS::speed ( ) const
virtual

You must set velocity, but you can access speed as well.

This is recomputed only as needed.

virtual void DtKinematicStateCS::setSpeed ( DtReal  speed)
virtual
virtual const DtVector& DtKinematicStateCS::acceleration ( ) const
virtual

Get / set acceleration in this coordinate system.

virtual void DtKinematicStateCS::setAcceleration ( const DtVector acceleration)
virtual
virtual const DtTaitBryan& DtKinematicStateCS::orientation ( ) const
virtual

Get / set orientation in this coordinate system.

virtual void DtKinematicStateCS::setOrientation ( const DtTaitBryan &  orientation,
DtRotationConstraint  recomputeMatrix = RotateAboutX 
)
virtual
virtual const DtDcm& DtKinematicStateCS::orientationMatrix ( ) const
virtual

Get / set orientation matrix in this coordinate system.

virtual void DtKinematicStateCS::setOrientationMatrix ( const DtDcm &  orientationMatrix,
bool  recomputeEulers = true 
)
virtual
virtual DtSimOrientationType DtKinematicStateCS::orientationType ( ) const
virtual

Get / set orientation type in this coordinate system.

virtual void DtKinematicStateCS::setOrientationType ( DtSimOrientationType  orientationType)
virtual
virtual DtRotationConstraint DtKinematicStateCS::rotationConstraint ( ) const
virtual
virtual void DtKinematicStateCS::setRotationConstraint ( DtRotationConstraint  contraint)
virtual
virtual void DtKinematicStateCS::setCoordinateSystem ( const Coordinate_System *  coordinateSystem)
virtual
virtual void DtKinematicStateCS::getSelf ( DtlObjPtr  args,
const DtFilename &  searchPath,
const DtVariableBindingsList variableBindings 
)
virtual

Overridden to initialize myRecomputeMatrix to true.

We only write out Tait-Bryan angles. So to force the rotation matrix to recomputed the next time it is requested, this flag must be true.

Also overridden to handle pre-3.5 oob files.

Member Data Documentation

DtRotationConstraint DtKinematicStateCS::myRecomputeMatrix
mutableprotected
bool DtKinematicStateCS::myRecomputeEulers
mutableprotected
bool DtKinematicStateCS::myRecomputeSpeed
mutableprotected
DtRwVector DtKinematicStateCS::myPosition
protected
DtRwVector DtKinematicStateCS::myVelocity
protected
DtRwVector DtKinematicStateCS::myAcceleration
protected
DtSimOrientationType DtKinematicStateCS::myOrientationType
protected
DtRwTaitBryan DtKinematicStateCS::myOrientation
mutableprotected
DtDcm DtKinematicStateCS::myOrientationMatrix
mutableprotected
DtRotationConstraint DtKinematicStateCS::myCurrentRotationConstraint
protected
DtReal DtKinematicStateCS::myCurrentSpeed
mutableprotected

derived quantity; used so much, it's worth caching

const Coordinate_System* DtKinematicStateCS::myCoordinateSystemPtr
protected
DtRwTaitBryan DtKinematicStateCS::myTopoOrientation
protected

Retained for backwards compatibility.

Used in parsing pre-3.5 version oob files. Registered as "orientation", and contains topocentric Euler angles. Replaced by myOrientation, which is registered as "orientation-tait-bryan" in the oob file. It contains Euler angles with respect to database coordinates. Only used in getSelf(), in which it is used to initialize myOrientaiton.


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

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)