42 #include <visp3/core/vpColVector.h>
43 #include <visp3/core/vpDebug.h>
44 #include <visp3/vs/vpAdaptiveGain.h>
73 this ->initFromVoid ();
109 initStandard(gain_at_zero, gain_at_infinity, slope_at_zero);
161 const double gain_at_infinity,
162 const double slope_at_zero)
166 this ->coeff_a = gain_at_zero - gain_at_infinity;
168 if (std::fabs(
this ->coeff_a) <= std::numeric_limits<double>::epsilon())
174 this ->coeff_b = slope_at_zero / (
this ->coeff_a);
176 this ->coeff_c = gain_at_infinity;
179 this ->coeff_a,
this ->coeff_b,
this ->coeff_c);
199 double res =
this ->coeff_a +
this ->coeff_c;
203 this ->coeff_c = res;
227 double res =
this ->coeff_a * exp (-
this ->coeff_b * x) +
this ->coeff_c;
243 double res =
this ->coeff_c;
265 this ->lambda =
this ->value_const (x);
282 this ->lambda =
this ->limitValue_const ();
312 return this ->value (x);
324 return this ->limitValue ();
336 return this ->value (x .infinityNorm());
357 os <<
"Zero= " << lambda .coeff_a + lambda .coeff_c
358 <<
"\tInf= " << lambda .coeff_c
359 <<
"\tDeriv= " << lambda .coeff_a * lambda .coeff_b;
Adaptive gain computation.
static const double DEFAULT_LAMBDA_ZERO
static const double DEFAULT_LAMBDA_INFINITY
static const double DEFAULT_LAMBDA_SLOPE
double value(double x) const
void initStandard(double gain_at_zero, double gain_at_infinity, double slope_at_zero)
double limitValue_const(void) const
double operator()(void) const
double value_const(double x) const
void initFromConstant(double c)
friend std::ostream & operator<<(std::ostream &s, const vpArray2D< Type > &A)
Implementation of column vector and the associated operations.
double limitValue(void) const