41 #include "EST_Track.h"
43 # define MAX_DELTA_ORDER 2
45 # define MAX_REGRESSION_LENGTH 4
47 static float compute_gradient(
const EST_FVector &x,
int num_points);
51 int reg_index, this_index;
54 if ((regression_length < 2)||(regression_length > MAX_REGRESSION_LENGTH)){
55 cerr <<
"delta(EST_Track&, int) : ERROR : regression_length is "
56 << regression_length << endl;
67 for (reg_index=0; reg_index<regression_length; reg_index++)
71 this_index = i - reg_index;
73 temp[reg_index] = tr.
a(this_index, j);
79 else if (i < regression_length - 1)
82 d.
a(i, j) = compute_gradient(temp, i + 1);
85 d.
a(i, j) = compute_gradient(temp, regression_length);
91 int reg_index, this_index;
94 if ((regression_length < 2)||(regression_length > MAX_REGRESSION_LENGTH)){
95 cerr <<
"delta(EST_Track&, int) : ERROR : regression_length is "
96 << regression_length << endl;
107 for (reg_index=0; reg_index<regression_length; reg_index++)
111 this_index = i - reg_index;
113 temp.a_no_check(reg_index) = (float)tr.
a(this_index, j);
119 else if (i < regression_length - 1)
122 d.
a(i, j) = (short)compute_gradient(temp, i + 1);
125 d.
a(i, j) = (short)compute_gradient(temp, regression_length);
129 static float compute_gradient(
const EST_FVector &x,
int num_points)
147 gradient = x(0) - x(1);
151 gradient = (x(0) -x(2)) / 2.0;
155 gradient = ( (3.0*x(0)) + x(1) - x(2) - (3.0 * x(3)) ) / 10.0;
160 cerr <<
"compute_gradient(float*, int) : ERROR : num_points is"
161 << num_points << endl;