#include <CircleModel.h> namespace icl{ template<class T> CircleModel<T>::CircleModel():QuadraticModel<T>(4){ } template<class T> T CircleModel<T>::px(T y) const{ // return b/a; return (*this)[1]/(*this)[0]; } template<class T> T CircleModel<T>::qx(T y) const{ // return (a*y*y+c*y+d)/a; return ((*this)[0]*y*y+(*this)[2]*y+(*this)[3])/(*this)[0]; } template<class T> T CircleModel<T>::py(T x) const{ // return c/a; return (*this)[2]/(*this)[0]; } template<class T> T CircleModel<T>::qy(T x) const{ // return (a*x*x+b*x+d)/a; return ((*this)[0]*x*x+(*this)[1]*x+(*this)[3])/(*this)[0]; } template<class T> void CircleModel<T>::features(T x,T y, T *dst) const{ dst[0] = x*x+y*y; dst[1] = x; dst[2] = y; dst[3] = 1; } template<class T> void CircleModel<T>::center(T &x, T &y) const{ // x=-b/(2a) // y=-c/(2a) const CircleModel<T> &M=*this; x = -M[1]/(2*M[0]); y = -M[2]/(2*M[0]); } template class CircleModel<icl32f>; template class CircleModel<icl64f>; }