FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
CRigidCompositeBody.h
1#ifndef CRigidCompositeBody_H
2#define CRigidCompositeBody_H
3
9#include "CRigidBody.h"
10
11#include <list>
12using std::list;
13
14namespace rigidbody
15{
17{
18 public:
19 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
20 struct rbody
21 {
22 CRigidBody* body;
23 vec6 orientation;
24 };
27 void AddComponent(CRigidBody* component, const vec6& orientation);
28 mat6 GetInertiaMatrix(const vec3& r, double time, const double* states, environment::EnvironmentProvider* environment);
29 vec6 GetInternalForces(const vec6& dX, const vec3& r, const quat& q, environment::EnvironmentProvider* environment, double time, const double* states);
30 mat64 GetGravityForceDerivative(const quat& q);
31
32
33#ifdef FH_VISUALIZATION
34 void DrawBody(Ogre::SceneNode* renderNode, Ogre::SceneManager* sceneMgr);
35#endif
36
37 protected:
39 static quat ComponentQuaternion(const vec3& thetaC);
40
41 list<rbody, Eigen::aligned_allocator<rbody>> clist;
42 mat6 m_inertia;
43};
44}; // namespace rigidbody
45#endif
Definition CRigidBody.h:30
Definition CRigidCompositeBody.h:17
mat64 GetGravityForceDerivative(const quat &q)
static quat ComponentQuaternion(const vec3 &thetaC)
The quaternion of a component's rotation vector thetaC.
Definition CRigidCompositeBody.h:21