bool operator()( double const* const paramsX, double const* const paramsY, double* residuals) const { BezierCurve<float, double> bezierX; BezierCurve<float, double> bezierY; for (int i = 0; i <= TBezierX; ++i) { bezierX.addPoint(paramsX[i]); } for (int i = 0; i <= TBezierY; ++i) { bezierY.addPoint(paramsY[i]); } const double vx = bezierX(x); const double vy = bezierY(y); *residuals = vx * vy - intensity; CHECK(std::isfinite(*residuals)); return true; }