#include namespace icl{ template CircleModel::CircleModel():QuadraticModel(4){ } template T CircleModel::px(T y) const{ // return b/a; return (*this)[1]/(*this)[0]; } template T CircleModel::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 T CircleModel::py(T x) const{ // return c/a; return (*this)[2]/(*this)[0]; } template T CircleModel::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 void CircleModel::features(T x,T y, T *dst) const{ dst[0] = x*x+y*y; dst[1] = x; dst[2] = y; dst[3] = 1; } template void CircleModel::center(T &x, T &y) const{ // x=-b/(2a) // y=-c/(2a) const CircleModel &M=*this; x = -M[1]/(2*M[0]); y = -M[2]/(2*M[0]); } template class CircleModel; template class CircleModel; }