VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/vrfKinState.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2007 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: vrfKinState.h,v $ $Revision: 1.37 $ $State: Exp $
00007 *******************************************************************************/
00008 #ifndef vrfKinState_H_
00009 #define vrfKinState_H_
00010 
00013 
00014 #include "vrfobjcore/kinState.h"
00015 #include "vrfobjcore/csValidVec.h"
00016 #include "vrfutil/lclVecIter.h"
00017 
00022 #include "vrfobjcore/vrfobjcoreDefines.h"
00023 class DT_DLL_vrfobjcore DtVrfKinematicState : public DtSimKinematicState
00024 {
00025 public:
00027    DtVrfKinematicState(const Coordinate_System* coordinateSystem,
00028       DtSimObjectStateRepository* stateRep,
00029       const DtString& rwName = DtString::nullString(),
00030       DtReaderWriterRegistry * parentRegistry = 0);
00031 
00033    DtVrfKinematicState(const DtVrfKinematicState& orig,
00034     const DtString& rwName = DtString::nullString(),
00035       DtReaderWriterRegistry * parentRegistry = 0);
00036 
00038    const DtVrfKinematicState& operator=(const DtVrfKinematicState& orig);
00039 
00041    virtual ~DtVrfKinematicState();
00042 
00044    virtual DtSimKinematicState* clone(
00045       const DtString& rwName = DtString::nullString(),
00046       DtReaderWriterRegistry * parentRegistry = 0) const;
00047 
00051    virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
00052    virtual const Coordinate_System* coordinateSystem() const;
00053 
00055    virtual const DtVector& localPosition() const;
00056    virtual void setLocalPosition(const DtVector& localPosition);
00057 
00059    virtual void setWorldVertices(const DtList& vertices, DtVector& newGeometricCenter);
00060 
00062    virtual const DtVector& localVelocity() const;
00063    virtual void setLocalVelocity(const DtVector& localVelocity,
00064       bool recomputeSpeed = true);
00065 
00067    virtual DtReal localSpeed() const;
00068    virtual void setLocalSpeed(DtReal localSpeed);
00069 
00071    virtual const DtVector& localAcceleration() const;
00072    virtual void setLocalAcceleration(const DtVector& localAcceleration);
00073 
00078    virtual const DtVector& relativeAcceleration() const;
00079    virtual void setRelativeAcceleration(const DtVector& localAcceleration);
00080 
00082    virtual const DtVector& relativeVelocity() const;
00083    virtual void setRelativeVelocity(const DtVector& localVelocity,
00084       bool recomputeSpeed = true);
00085 
00087    virtual DtVector bodyVelocity() const;
00088 
00089    virtual void invalidateRelativeVelocity();
00090    virtual void invalidateRelativeAcceleration();
00091 
00094    virtual const DtTaitBryan& localOrientationWrtDatabase() const;
00095    virtual void setLocalOrientationWrtDatabase(
00096       const DtTaitBryan& localOrientation,
00097       DtKinematicStateCS::DtRotationConstraint recomputeMatrix = DtKinematicStateCS::RotateAboutX);
00098 
00101    virtual const DtDcm& localOrientationMatrix() const;
00102    virtual void setLocalOrientationMatrix(const DtDcm& localOrientationMatrix,
00103       bool recomputeEulers = true);
00104 
00105    virtual void setRotationConstraint(
00106       DtKinematicStateCS::DtRotationConstraint constraint);
00107 
00109    virtual const DtVector& worldPosition() const;
00110    virtual void setWorldPosition(const DtVector& gecoentricPosition);
00111 
00113    virtual const DtVector& worldVelocity() const;
00114    virtual void setWorldVelocity(const DtVector& gecoentricVelocity,
00115       bool recomputeSpeed = true);
00116 
00118    virtual const DtVector& worldAcceleration() const;
00119    virtual void setWorldAcceleration(const DtVector& gecoentricAcceleration);
00120 
00123    virtual const DtTaitBryan& worldOrientation() const;
00124    virtual void setWorldOrientation(const DtTaitBryan& orientation,
00125      DtKinematicStateCS::DtRotationConstraint recomputeMatrix = DtKinematicStateCS::RotateAboutX);
00126 
00128    virtual void setParentOrientation(const DtTaitBryan& orientation,
00129       DtKinematicStateCS::DtRotationConstraint recomputeMatrix = DtKinematicStateCS::RotateAboutX);
00130 
00132    virtual void setParentPosition(const DtVector& position);
00133 
00136    virtual void setWorldOrientationMatrix(const DtDcm& orientationMatrix,
00137       bool recomputeEulers = true);
00138 #if 0
00139    virtual const DtDcm& worldOrientationMatrix() const;
00140 #endif
00141 
00143    virtual void parentKinematicsChanged();
00144 
00148    DtCoordSysValidationVector& localVV();
00149 
00151    virtual void validateLocalState();
00152    virtual void validateState();
00153 
00161    virtual const DtTaitBryan& localOrientation() const;
00162    virtual void setLocalOrientation(const DtTaitBryan& topoOrientation,
00163      DtKinematicStateCS::DtRotationConstraint recomputeMatrix = DtKinematicStateCS::RotateAboutX);
00165 
00168 public:
00170    virtual void addLocalVertex(const DtVector& vertex, DtVector& newGeometricCenter);
00171 
00175    virtual void setLocalVertices(const DtLocalVertexList& vertices, 
00176       DtVector& newGeometricCenter);
00177    virtual void setLocalVertices(const DtList& vertices, 
00178       DtVector& newGeometricCenter);
00180 
00182    virtual const DtLocalVertexList& localVertices() const;
00183    virtual const DtLocalVectorIterator& localVertexIterator() const;
00184    virtual void removeVertex(int i);
00185    virtual void setGeometryNeedsUpdate(bool b);
00186 
00191    virtual void invalidateLocalGeometry();
00192 
00193 protected:
00196    virtual const DtKinematicStateCS& localKinematicState() const;
00197    virtual DtKinematicStateCS& localKinematicState();
00198 
00199    virtual void setLocalKinematicState(
00200       const DtKinematicStateCS& localKinematicState);
00201    virtual void clearLocalVertices();
00202 
00203 private:
00204 
00205    DtVrfKinematicState();
00206 
00207 protected:
00208 
00212    mutable DtKinematicStateCS myLocalKinematicState;
00213 
00214    DtCoordSysValidationVector myLocalVV;
00215 
00216    const Coordinate_System* myCoordinateSystemPtr;
00217 
00221    DtTaitBryan myTopoOrientation;
00222 
00223    DtVector myRelativeAcceleration;
00224    bool myRelativeAccelerationInvalid;
00225 
00226    DtVector myRelativeVelocity;
00227    bool myRelativeVelocityInvalid;
00228 
00229    mutable bool myLocalObjectGeometryInvalid;
00230    mutable DtLocalVertexList myLocalVertexList;
00231 };
00232 
00233 
00234 inline void DtVrfKinematicState::setGeometryNeedsUpdate(bool b)
00235 {
00236    DtSimKinematicState::setGeometryNeedsUpdate(b);
00237 
00238    myLocalObjectGeometryInvalid = b;
00239 }
00240 
00241 #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)