KrisLibrary  1.0.0
RigidBodyDynamics.h
1 #ifndef RIGID_BODY_DYNAMICS_H
2 #define RIGID_BODY_DYNAMICS_H
3 
5 using namespace Math3D;
6 
11 {
12  public:
14  void SetInertiaMatrix(const Matrix3& H);
15  void SetInertiaMatrix(const Vector3& Hdiag);
16  void ZeroForces();
17  void AddForce(const Vector3& f);
18  void AddMoment(const Vector3& m);
19  void AddForceAtPoint(const Vector3& f,const Vector3& p);
20  void AddLocalForceAtPoint(const Vector3& fLocal,const Vector3& pLocal);
21  //simulate using euler integration
22  void Advance(Real dt);
23 
24  //helpers
25  Vector3 Accel() const;
26  Vector3 AngularAccel() const;
27  void AccelJacobian(const Vector3& forcePt,Matrix3& J) const;
28  void AngularAccelJacobian(const Vector3& forcePt,Matrix3& J) const;
29  Vector3 Momentum() const;
30  Vector3 AngularMomentum() const;
31  Matrix3 WorldInertia() const;
32  Real KineticEnergy() const;
33 
35  Real m;
37  Matrix3 H,Hinv;
42 
43  //world coordinate force and moment accumulators
44  Vector3 faccum,maccum;
45 };
46 
47 
48 #endif
A 3D vector class.
Definition: math3d/primitives.h:136
Vector3 v
World space velocity and angular velocity.
Definition: RigidBodyDynamics.h:41
Matrix3 H
Local inertia matrix and inertia inverse.
Definition: RigidBodyDynamics.h:37
Class declarations for useful 3D math types.
RigidTransform T
Transform about the COM.
Definition: RigidBodyDynamics.h:39
A rigid-body transformation.
Definition: math3d/primitives.h:820
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:13
Real m
Mass.
Definition: RigidBodyDynamics.h:35
A 3x3 matrix class.
Definition: math3d/primitives.h:469
A class for simulating a rigid body. Uses Euler integration.
Definition: RigidBodyDynamics.h:10