Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. void RigidBodyDerivatives( const float t, const void *clientData, const float *state, float *derivatives ) {
  2. const idPhysics_RigidBody *p = (idPhysics_RigidBody *) clientData;
  3. rigidBodyIState_t *s = (rigidBodyIState_t *) state;
  4. // NOTE: this struct should be build conform rigidBodyIState_t
  5. struct rigidBodyDerivatives_s {
  6. idVec3 linearVelocity;
  7. idMat3 angularMatrix;
  8. idVec3 force;
  9. idVec3 torque;
  10. } *d = (struct rigidBodyDerivatives_s *) derivatives;
  11. idVec3 angularVelocity;
  12. idMat3 inverseWorldInertiaTensor;
  13.  
  14. inverseWorldInertiaTensor = s->orientation * p->inverseInertiaTensor * s->orientation.Transpose();
  15. angularVelocity = inverseWorldInertiaTensor * s->angularMomentum;
  16. // derivatives
  17. d->linearVelocity = p->inverseMass * s->linearMomentum;
  18. d->angularMatrix = SkewSymmetric( angularVelocity ) * s->orientation;
  19. d->force = - p->linearFriction * s->linearMomentum + p->current.externalForce;
  20. d->torque = - p->angularFriction * s->angularMomentum + p->current.externalTorque;
  21. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement