GCOP
1.0
|
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