GCOP  1.0
body3dmanifold.h
Go to the documentation of this file.
00001 #ifndef GCOP_BODY3DMANIFOLD_H
00002 #define GCOP_BODY3DMANIFOLD_H
00003 
00004 #include "manifold.h"
00005 
00006 namespace gcop {
00007   
00008   using namespace std;
00009   using namespace Eigen;
00010 
00011   typedef Matrix<double, 9, 1> Vector9d;
00012   typedef Matrix<double, 12, 1> Vector12d;
00013   typedef Matrix<double, 12, 12> Matrix12d;
00014   typedef pair<Matrix3d, Vector9d> Body3dState;
00015   
00016   class Body3dManifold : public Manifold<Body3dState, 12> {
00017     
00018   public:
00019     static Body3dManifold& Instance();
00020 
00021     void Lift(Vector12d &v,
00022               const Body3dState &xa,
00023               const Body3dState &xb);      
00024 
00025     void Retract(Body3dState &xb, 
00026                  const Body3dState &xa,
00027                  const Vector12d &v);
00028 
00029     void dtau(Matrix12d &M, const Vector12d &v);
00030 
00031     void Adtau(Matrix12d &M, const Vector12d &v);
00032 
00033   private:
00034     Body3dManifold();
00035   };  
00036 }
00037 
00038 
00039 #endif