#ifndef GENERAL_MODEL_H #define GENERAL_MODEL_H #include <iclArray.h> #include <iclImg.h> namespace icl{ /// GeneralModel class /** A general Model is a formalisation of a model that should be The template is pre-build for types icl32f and icl64f */ template<class T> class GeneralModel{ public: virtual ~GeneralModel(){} virtual void features(T x,T y, T *dst) const =0; virtual Array<T> x(T y) const = 0; virtual Array<T> y(T x) const = 0; int dim()const; const T *constraints()const; void setIdentityConstraintMatrix(); T *params(){ return *m_oCurrParams; } const T *params() const{ return *m_oCurrParams; } T &operator[](int i){ return m_oCurrParams[i]; } const T &operator[](int i) const { return m_oCurrParams[i]; } protected: GeneralModel(int dim); Array<T> m_oConstraintMatrix; Array<T> m_oCurrParams; int m_iDim; }; } #endif