Example #1
0
void SpatialMat::inertiaInvert(const SpatialMat &I)
{
  Mat3 Binv;
  Mat3 M, N;  /* temp storage */

  
  Binv.invert(I._B);
  Binv.negate();
  M.mult(I._D, Binv);
  N.mult(M, I._A);
  N.add(I._C);
  _B.invert(N);

  M.mult(_B, I._D);
  _A.mult(M, Binv);
  
  _D.xpose(_A);

  M.mult(I._A, _A);
  M.xrow().x -= 1.0; 
  M.yrow().y -= 1.0; 
  M.zrow().z -= 1.0;
  _C.mult(Binv, M);
  
  //Mat3 detI;

  //detI.mult(I._A, I._D);
  //M.mult(I._B, I._C);
  //detI.sub(M);
  //detI.invert();

  //_A.mult(detI, I._D);
  //_B.mult(detI, I._B);
  //_B.negate();
  //_C.mult(detI, I._C);
  //_C.negate();
  //_D.mult(detI, I._A);

  return;
}