VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rwSimKinematicState.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 
13 #include <vlpi/disEnums.h>
15 #include "readerWriter/rwVector.h"
16 #include "vrfutil/vertexList.h"
17 #include "vrfutil/rwUUID.h"
18 
19 #include <matrix/vlTaitBryan.h>
20 #include <boost/signals2.hpp>
21 
22 namespace makVrf
23 {
24  class DtStateData;
25  class DtLocationStateComponent;
26  class DtEntityLocationStateComponent;
27 
37  {
38  public:
39 
43 
45  DtRwSimKinematicState(const DtString& name,
46  DtReaderWriterRegistry * parentRegistry = NULL);
47 
49  DtReaderWriterRegistry * parentRegistry = NULL);
50 
52  DtRwSimKinematicState(const DtRwSimKinematicState& orig, const DtString& name,
53  DtReaderWriterRegistry * parentRegistry = 0);
54 
56  const DtSymbolString& name,
57  DtReaderWriterRegistry * parentRegistry = 0);
58 
60  const DtRwSimKinematicState& operator=(const DtRwSimKinematicState& orig);
61 
63  virtual ~DtRwSimKinematicState();
64 
66  virtual DtRwSimKinematicState* clone(const DtString& name = DtString::nullString(),
67  DtReaderWriterRegistry* parentRegistry = NULL) const;
68 
69  virtual DtRwSimKinematicState* clone(const DtSymbolString& name,
70  DtReaderWriterRegistry* parentRegistry = NULL) const;
71 
72  virtual const DtVector& parentPosition() const;
73  virtual void setParentPosition(const DtVector& position);
74 
75  virtual const DtVector& parentVelocity() const;
76  virtual void setParentVelocity(const DtVector& velocity,
77  bool recomputeSpeed = true);
78  virtual DtReal parentSpeed() const;
79 
80  virtual const DtVector& parentAcceleration() const;
81  virtual void setParentAcceleration(const DtVector& acceleration);
82 
83  virtual const DtTaitBryan& parentOrientation() const;
84  virtual void setParentOrientation(const DtTaitBryan& orientation,
86 
87  virtual const DtDcm& parentOrientationMatrix() const;
88  virtual void setParentOrientationMatrix(const DtDcm& orientationMatrix,
89  bool recomputeEulers = true);
90 
91  virtual const DtVector& worldPosition() const;
92  virtual void setWorldPosition(const DtVector& position);
93 
94  virtual const DtVector& worldVelocity() const;
95  virtual void setWorldVelocity(const DtVector& velocity,
96  bool recomputeSpeed = true);
97 
98  virtual DtReal worldSpeed() const;
99 
100  virtual const DtVector& worldAcceleration() const;
101  virtual void setWorldAcceleration(const DtVector& acceleration);
102 
103  virtual const DtTaitBryan& worldOrientation() const;
104  virtual void setWorldOrientation(const DtTaitBryan& orientation,
106 
107  virtual const DtDcm& worldOrientationMatrix() const;
108  virtual void setWorldOrientationMatrix(const DtDcm& orientationMatrix,
109  bool recomputeEulers = true);
110 
111  virtual DtVector bodyVelocity() const;
114  virtual const DtTaitBryan& topoEuler() const;
117  virtual double heading() const;
120  virtual double pitch() const;
123  virtual double roll() const;
124 
125  virtual const DtVector& rotationalVelocity() const;
126  virtual void setRotationalVelocity(const DtVector& rotationalVelocity);
127 
128  virtual DtKinematicStateCS::DtRotationConstraint rotationConstraint()
129  const;
130 
131  virtual void setRotationConstraint(
133 
135  virtual DtKinematicStateCS::DtSimOrientationType orientationType() const;
136  virtual void setOrientationType(
138 
139  virtual void setAttachedTo(const DtStateData* stateData, const DtUUID& uuid);
140  const DtStateData* attachedTo() const
141  {
142  return myAttachedTo;
143  }
144 
145  const DtUUID& attachedToUUID() const
146  {
147  return myAttachedToUUID;
148  }
149 
150  bool isAttachedTo() const;
151 
152  virtual void detach();
153  virtual void attach();
154 
155  DtCoordSysValidationVector& parentVV();
156  DtCoordSysValidationVector& worldVV();
157 
158  const DtCoordSysValidationVector& parentVV() const;
159  const DtCoordSysValidationVector& worldVV() const;
160 
164  virtual void putSelf(std::string& fp, int indentLevel = 0, bool writeUnspecified = false,
165  const DtFilename& path = DtReaderWriter::appPath());
166 
168  virtual void validateParentState();
169  virtual void validateWorldState();
170  virtual void invalidateState();
171  virtual void validateState();
172 
173  bool operator==(const DtRwSimKinematicState& orig) const;
174  bool operator!=(const DtRwSimKinematicState& orig) const
175  {
176  return !(*this == orig);
177  }
178 
179  void setFrozen(bool b) { myFrozen = b; };
180  bool frozen() const { return myFrozen; };
181 
182  public:
183 
186  virtual const DtKinematicStateCS& parentKinematicState() const;
187  virtual DtKinematicStateCS& parentKinematicState();
188 
189  virtual void setParentKinematicState(
190  const DtKinematicStateCS& parentKinematicState);
191 
194  virtual const DtKinematicStateCS& worldKinematicState() const;
195  virtual DtKinematicStateCS& worldKinematicState();
196 
197  virtual void setWorldKinematicState(
198  const DtKinematicStateCS& worldKinematicState);
199 
201  virtual const DtVector& setWorldPositionFromParent();
202 
204  virtual void setWorldOrientationFromParent();
205 
206  protected:
207  virtual void postGetSelf();
208  virtual const DtLocationStateComponent* attachedLocationStateComponent() const;
209  virtual const DtEntityLocationStateComponent* attachedEntityLocationStateComponent() const;
210 
211  protected:
215 
220 
224 
228 
231 
234 
240 
241  DtTaitBryan myTopoEuler;
243 
244  boost::signals2::connection myRemovalConnection;
245  bool myFrozen;
246  };
247 }
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
const DtLocationStateComponent * myAttachedLocationComponent
Definition: rwSimKinematicState.h:237
DtKinematicStateCS myParentKinematicState
position, velocity, acceleration, orientation (Euler and DCM), and rotational velocity in parent&#39;s co...
Definition: rwSimKinematicState.h:214
DtCoordSysValidationVector myParentVV
XXX This will not be here... This belongs in the network interface. just have to figure out how it ge...
Definition: rwSimKinematicState.h:229
const DtStateData * myAttachedTo
Definition: rwSimKinematicState.h:235
Definition: symbolString.h:20
class DtKinematicStateCS: DtKinematicStateCS contains the current kinematic state of an object in one...
Definition: kinematicStateCS.h:43
void setFrozen(bool b)
Definition: rwSimKinematicState.h:179
The DtLocationStateComponent interface contains the interface that all DtLocationStateComponents can ...
Definition: locationStateComponent.h:25
boost::signals2::connection myRemovalConnection
Definition: rwSimKinematicState.h:244
2) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: entityLocationStateComponent.h:116
DT_DLL_VRFGUICORE bool operator==(const std::vector< makArchives::DtEnvironmentRecord::DtElevationalConfigurationRecord > &lhs, const std::vector< makArchives::DtEnvironmentRecord::DtElevationalConfigurationRecord > &rhs)
DtKinematicStateCS myWorldKinematicState
position, velocity, acceleration, orientation (Euler and DCM), and rotational velocity in database ...
Definition: rwSimKinematicState.h:223
Definition: readerWriter.h:85
bool operator!=(const DtRwSimKinematicState &orig) const
Definition: rwSimKinematicState.h:174
Definition: readerWriterRegistry.h:39
Contains the DtUUID class declaration.
bool myFrozen
Definition: rwSimKinematicState.h:245
DtCoordSysValidationVector myWorldVV
Definition: rwSimKinematicState.h:230
const DtUUID & attachedToUUID() const
Definition: rwSimKinematicState.h:145
class DtRwSimKinematicState: This class encapsulates the kinematic state of an object wrt to the netw...
Definition: rwSimKinematicState.h:36
DtRotationConstraint
Definition: kinematicStateCS.h:54
Definition: rwVector.h:23
bool frozen() const
Definition: rwSimKinematicState.h:180
const DtEntityLocationStateComponent * myAttachedEntityLocationComponent
Definition: rwSimKinematicState.h:238
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:336
bool myCheckedEntityLocationComponent
Definition: rwSimKinematicState.h:239
DtTaitBryan myTopoEuler
Definition: rwSimKinematicState.h:241
DtRwVector myRotationalVelocity
this is the rate at which the object is rolling, pitching and yawing
Definition: rwSimKinematicState.h:233
Definition: kinematicStateCS.h:57
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
DtSimOrientationType
Definition: kinematicStateCS.h:47
Definition: coordSysValidationVector.h:20
bool myTopoInvalid
Definition: rwSimKinematicState.h:242
DtUUID myAttachedToUUID
Definition: rwSimKinematicState.h:236
const DtStateData * attachedTo() const
Definition: rwSimKinematicState.h:140
File: rwVector.h.
static const DtFilename & appPath()
Gets the current working directory. The first time this accessor is called, it determines the current...

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)