GCOP  1.0
manifold.h
Go to the documentation of this file.
00001 #ifndef GCOP_MANIFOLD_H
00002 #define GCOP_MANIFOLD_H
00003 
00004 #include <Eigen/Dense>
00005 #include <assert.h>
00006 #include <iostream>
00007 
00008 namespace gcop {
00009   
00010   using namespace Eigen;
00016   template <typename T, int _n = Dynamic> class Manifold {
00017   public:
00018   typedef Matrix<double, _n, 1> Vectornd;
00019   typedef Matrix<double, _n, _n> Matrixnd;
00020 
00027   Manifold(int n = _n);
00028   
00029 
00046   virtual void Lift(Vectornd &v, const T &xa, const T &xb) = 0;
00047   
00048   
00062   virtual void Retract(T &xb, const T &xa, const Vectornd &v) = 0;
00063 
00064 
00071   virtual void dtau(Matrixnd &M, const Vectornd &v) { M.setIdentity(); };
00072 
00079   virtual void Adtau(Matrixnd &M, const Vectornd &v) {M.setIdentity(); };
00080    
00081   int n;  
00082   
00083   bool bnd;    
00084   T lb;        
00085   T ub;        
00086 
00087   };
00088 
00089   template <typename T, int _n>
00090     Manifold<T, _n>::Manifold(int n) : n(_n != Dynamic ? _n : n), bnd(false) {
00091   }
00092 }
00093 
00094 #endif