153 C6DBody(std::string sSimObjectName, ISimObjectCreator* pCreator);
155#ifdef FH_VISUALIZATION
157 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
160 virtual void RenderUpdate(
const double T,
const double*
const X);
165 virtual void OdeFcn(
const double dT,
const double*
const adX,
166 double*
const adXDot)
const;
168 bool HasJacobians()
const override;
169 void OdeJacobian(
double T,
const double* X,
double* J,
int nStates)
override;
170 int GetJacobianSparsity(
int nStates,
int* rowPtr,
int* colIdx)
override;
174 const double adLocalMoments[3],
175 const double adGlobalForces[3],
176 const double adGlobalMoments[3],
177 const double adVelLocal[3],
178 const double adOmegaLocal[3],
179 const double adQuater[4],
180 double adVelLocalDot[3],
181 double adOmegaLocalDot[3])
const;
183#ifdef USE_FULL_MASS_MATRIX
185 const double adXVel_d[3],
186 const double adXOmega[3],
187 const double adXQuater[4],
188 const double R[3][3],
189 double adXPos_n_DotOut[3],
190 double adXVel_d_DotOut[3],
191 double adXOmega_DotOut[3],
192 double adXQuater_DotOut[4]);
198 virtual const double* Position(
const double dT,
const double*
const adX);
199 virtual const double* Velocity(
const double dT,
const double*
const adX);
200 virtual const double* Quater(
const double dT,
const double*
const adX);
201 virtual const double* LocalVel(
const double dT,
const double*
const adX);
202 virtual const double* AngVel(
const double dT,
const double*
const adX);
215#ifdef USE_FULL_MASS_MATRIX
216 bool m_bHasFullMassMatrix;
217 double m_mdMassInverse[6][6];
220#ifdef FH_VISUALIZATION
221 std::string m_sMaterial;
222 std::string m_sMeshName;
224 double m_adMeshScale[3];
225 double m_adMeshOrigin[3];
227 double m_dLengthScale;
228 double m_dHeightScale;
229 double m_dCurvatureScale;
230 Ogre::Quaternion m_InitOrientation;
231 Ogre::Entity* m_pRenderEntity;
232 Ogre::SceneNode* m_pRenderNode;
233 Ogre::SceneManager* m_pSceneMgr;
Definition BodyKinematics6Dof.h:37
int m_IStatePos
Index of the global position in the state std::vector.
Definition C6DBody.h:209
double m_adDiagonalMass[6]
The diagonal of the mass matrix, assuming all cross coupling terms to be zero.
Definition C6DBody.h:207
ISignalPort * m_pInForce
A pointer to the input force.
Definition C6DBody.h:197
double m_dGravity
The gravitational acceleration.
Definition C6DBody.h:205
BodyKinematics6Dof m_kinematics
The states Pos, Quater, LocalVel and AngVel and their kinematics.
Definition C6DBody.h:208
virtual void OdeFcn(const double dT, const double *const adX, double *const adXDot) const
Calculates the state derivatives.
double m_adBodySize[3]
The size of the body along x-, y- and z-axis.
Definition C6DBody.h:214
ISignalPort * m_pInMoment
A pointer to the input moment.
Definition C6DBody.h:196
int m_IStateQuater
Index of the quaternions in the state std::vector.
Definition C6DBody.h:210
int m_IStateLocalVel
Index of the local velocity in the state std::vector.
Definition C6DBody.h:211
virtual void CalcDerivatives(const double adLocalForces[3], const double adLocalMoments[3], const double adGlobalForces[3], const double adGlobalMoments[3], const double adVelLocal[3], const double adOmegaLocal[3], const double adQuater[4], double adVelLocalDot[3], double adOmegaLocalDot[3]) const
Calculates the derivatives of the velocities when the forces and moments are known.
int m_IStateOmega
Index of the local angular velocity in the state std::vector.
Definition C6DBody.h:212