VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/kinStateCS.h
Go to the documentation of this file.
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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)