![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2001 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: kinStateCS.h,v $ $Revision: 1.22 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef kinStateCS_H_ 00009 #define kinStateCS_H_ 00010 00013 00014 #include "vrfutil/rwVector.h" 00015 #include "vrfutil/rwTaitBryan.h" 00016 00017 #include <matrix/LibMatrix.h> 00018 00019 class Coordinate_System; 00020 00021 00045 #include "vrfobjcore/vrfobjcoreDefines.h" 00046 class DT_DLL_vrfobjcore DtKinematicStateCS : public DtReaderWriter 00047 { 00048 public: 00049 00050 enum DtSimOrientationType 00051 { 00052 BodyToLocal, 00053 BodyToBody, 00054 BodyToGeocentric 00055 }; 00056 00057 enum DtRotationConstraint 00058 { 00059 FixedRotation, 00060 RotateAboutX, 00061 RotateAboutY, 00062 RotateAboutZ, 00063 UnconstrainedRotation 00064 }; 00065 00066 public: 00068 DtKinematicStateCS(DtSimOrientationType orientationType, 00069 const DtString& name = DtString::nullString(), 00070 DtReaderWriterRegistry* parentRegistry = NULL); 00071 00072 DtKinematicStateCS(DtSimOrientationType orientationType, 00073 const DtSymbolString& name, 00074 DtReaderWriterRegistry* parentRegistry = NULL); 00075 00077 DtKinematicStateCS(const DtKinematicStateCS& orig, 00078 const DtString& rwName = DtString::nullString(), 00079 DtReaderWriterRegistry* parentRegistry = NULL); 00080 00081 DtKinematicStateCS(const DtKinematicStateCS& orig, 00082 const DtSymbolString& name, 00083 DtReaderWriterRegistry* parentRegistry = NULL); 00084 00086 const DtKinematicStateCS& operator=(const DtKinematicStateCS& orig); 00087 00089 virtual ~DtKinematicStateCS(); 00090 00092 virtual DtKinematicStateCS* clone( 00093 const DtString& name = DtString::nullString(), 00094 DtReaderWriterRegistry* parentRegistry = NULL) const; 00095 00096 virtual DtKinematicStateCS* clone( 00097 const DtSymbolString& name, 00098 DtReaderWriterRegistry* parentRegistry = NULL) const; 00099 00101 virtual const DtVector& position() const; 00102 virtual void setPosition(const DtVector& position); 00103 00105 virtual const DtVector& velocity() const; 00106 virtual void setVelocity(const DtVector& velocity, 00107 bool recomputeSpeed = true); 00108 00111 virtual DtReal speed() const; 00112 virtual void setSpeed(DtReal speed); 00113 00115 virtual const DtVector& acceleration() const; 00116 virtual void setAcceleration(const DtVector& acceleration); 00117 00119 virtual const DtTaitBryan& orientation() const; 00120 00121 virtual void setOrientation(const DtTaitBryan& orientation, 00122 DtRotationConstraint recomputeMatrix = RotateAboutX); 00123 00125 virtual const DtDcm& orientationMatrix() const; 00126 virtual void setOrientationMatrix(const DtDcm& orientationMatrix, 00127 bool recomputeEulers = true); 00128 00130 virtual DtSimOrientationType orientationType() const; 00131 virtual void setOrientationType(DtSimOrientationType orientationType); 00132 00133 virtual DtRotationConstraint rotationConstraint() const; 00134 virtual void setRotationConstraint(DtRotationConstraint contraint); 00135 00136 virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem); 00137 00143 virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath, 00144 const DtVariableBindingsList& variableBindings); 00145 00146 private: 00147 00149 DtKinematicStateCS(); 00150 00151 protected: 00152 mutable DtRotationConstraint myRecomputeMatrix; 00153 mutable bool myRecomputeEulers; 00154 mutable bool myRecomputeSpeed; 00155 00156 DtRwVector myPosition; 00157 DtRwVector myVelocity; 00158 DtRwVector myAcceleration; 00159 00160 DtSimOrientationType myOrientationType; 00161 mutable DtRwTaitBryan myOrientation; 00162 mutable DtDcm myOrientationMatrix; 00163 DtRotationConstraint myCurrentRotationConstraint; 00164 00166 mutable DtReal myCurrentSpeed; 00167 00168 const Coordinate_System* myCoordinateSystemPtr; 00169 00177 DtRwTaitBryan myTopoOrientation; 00178 }; 00179 00180 #endif