VR-Forces 4.2 Class Documentation
kinState.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2001 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
9 
10 #include "vrfobjcore/kinStateCS.h"
11 #include "vrfutil/rdrWritr.h"
12 #include <vlpi/disEnums.h>
13 #include "vrfobjcore/csValidVec.h"
14 #include "vrfutil/rwVector.h"
15 #include "vrfutil/vertexList.h"
16 
17 #include <matrix/vlTaitBryan.h>
18 
19 class DtVertexList;
21 class DtRwVectorIterator;
22 
31 {
32 public:
33 
36  const DtString& name = DtString::nullString(),
37  DtReaderWriterRegistry * parentRegistry = NULL);
38 
40  const DtSymbolString& name,
41  DtReaderWriterRegistry * parentRegistry = NULL);
42 
45  const DtString& name = DtString::nullString(),
46  DtReaderWriterRegistry * parentRegistry = 0);
47 
49  const DtSymbolString& name,
50  DtReaderWriterRegistry * parentRegistry = 0);
51 
54 
56  virtual ~DtSimKinematicState();
57 
59  virtual DtSimKinematicState* clone(const DtString& name = DtString::nullString(),
60  DtReaderWriterRegistry* parentRegistry = NULL) const;
61 
62  virtual DtSimKinematicState* clone(const DtSymbolString& name,
63  DtReaderWriterRegistry* parentRegistry = NULL) const;
64 
65  virtual const DtVector& parentPosition() const;
66  virtual void setParentPosition(const DtVector& position);
67 
68  virtual const DtVector& parentVelocity() const;
69  virtual void setParentVelocity(const DtVector& velocity,
70  bool recomputeSpeed = true);
71  virtual DtReal parentSpeed() const;
72 
73  virtual const DtVector& parentAcceleration() const;
74  virtual void setParentAcceleration(const DtVector& acceleration);
75 
76  virtual const DtTaitBryan& parentOrientation() const;
77  virtual void setParentOrientation(const DtTaitBryan& orientation,
79 
80  virtual const DtDcm& parentOrientationMatrix() const;
81  virtual void setParentOrientationMatrix(const DtDcm& orientationMatrix,
82  bool recomputeEulers = true);
83 
84  virtual const DtVector& worldPosition() const;
85  virtual void setWorldPosition(const DtVector& position);
86 
87  virtual const DtVector& worldVelocity() const;
88  virtual void setWorldVelocity(const DtVector& velocity,
89  bool recomputeSpeed = true);
90 
91  virtual DtReal worldSpeed() const;
92 
93  virtual const DtVector& worldAcceleration() const;
94  virtual void setWorldAcceleration(const DtVector& acceleration);
95 
96  virtual const DtTaitBryan& worldOrientation() const;
97  virtual void setWorldOrientation(const DtTaitBryan& orientation,
99 
100  virtual const DtDcm& worldOrientationMatrix() const;
101  virtual void setWorldOrientationMatrix(const DtDcm& orientationMatrix,
102  bool recomputeEulers = true);
103 
104  virtual DtVector bodyVelocity() const;
107  virtual DtTaitBryan topoEuler() const;
110  virtual double heading() const;
113  virtual double pitch() const;
116  virtual double roll() const;
117 
118  virtual const DtVector& rotationalVelocity() const;
119  virtual void setRotationalVelocity(const DtVector& rotationalVelocity);
120 
121  virtual DtKinematicStateCS::DtRotationConstraint rotationConstraint()
122  const;
123 
124  virtual void setRotationConstraint(
126 
128  virtual DtKinematicStateCS::DtSimOrientationType orientationType() const;
129  virtual void setOrientationType(
131 
132  virtual DtSimObjectStateRepository* stateRepository() const;
133 
134  virtual void parentKinematicsChanged();
135 
136  DtCoordSysValidationVector& parentVV();
137  DtCoordSysValidationVector& worldVV();
138 
142  virtual void putSelf(FILE *fp, int indentLevel = 0, bool writeUnspecified = false,
143  const DtFilename& path = DtReaderWriter::appPath());
144 
146  virtual void validateParentState();
147  virtual void validateWorldState();
148  virtual void validateState();
149 
151  virtual void clearWorldVertices();
152  virtual void copyWorldVertices(const DtList&);
153 
156 public:
158  virtual void addWorldVertex(const DtVector& vertex, DtVector& newGeometricCenter);
159 
161  virtual void setWorldVertices(const DtVertexList& vertices, DtVector& newGeometricCenter);
162  virtual void setWorldVertices(const DtList& vertices, DtVector& newGeometricCenter);
163 
165  virtual const DtVertexList& worldVertices() const;
166  virtual const DtRwVectorIterator& worldVertexIterator() const;
167 
169  virtual void removeVertex(int);
170 
172  virtual void setGeometryNeedsUpdate(bool);
173 
177  virtual void invalidateWorldGeometry();
178 
179 protected:
180 
183  virtual const DtKinematicStateCS& parentKinematicState() const;
184  virtual DtKinematicStateCS& parentKinematicState();
185 
186  virtual void setParentKinematicState(
187  const DtKinematicStateCS& parentKinematicState);
188 
191  virtual const DtKinematicStateCS& worldKinematicState() const;
192  virtual DtKinematicStateCS& worldKinematicState();
193 
194  virtual void setWorldKinematicState(
195  const DtKinematicStateCS& worldKinematicState);
196 
198  virtual void setWorldPositionFromParent();
199 
201  virtual void setWorldOrientationFromParent();
202 
203 protected:
205  virtual bool calculateGeometricCenter(const DtList& vertices, DtVector& geometricCenter) const;
206 
210  virtual void calculateBodyCoordinates(const DtList& worldVertices);
211 
212 private:
213 
216 
217 protected:
221 
226 
231 
235 
238 
241 
242 
244 
245  DtTaitBryan myTopoEuler;
247 
251 };
252 
254 {
256 }
257 

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)