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