1 #ifndef __JFIT__JLINE1ZESTIMATOR__
2 #define __JFIT__JLINE1ZESTIMATOR__
18 namespace JPP {
using namespace JFIT; }
111 const int N =
distance(__begin, __end);
113 if (N >= NUMBER_OF_PARAMETERS) {
117 for (T i = __begin; i != __end; ++i) {
137 double xi =
j->getX() - getX();
138 double yi =
j->getY() - getY();
141 for (
bool done =
false; !done; ) {
143 if ((done = (++
j == __end))) {
147 double xj =
j->getX() - getX();
148 double yj =
j->getY() - getY();
155 const double y = ((xj + xi) * dx +
187 __x += V.a00 * y0 + V.a01 * y1 + V.a02 * y2;
188 __y += V.a10 * y0 + V.a11 * y1 + V.a12 * y2;
189 __t = V.a20 * y0 + V.a21 * y1 + V.a22 * y2;
195 throw JValueOutOfRange(
"JEstimator<JLine1Z>::JEstimator(): Not enough data points.");
222 const int N =
distance(__begin, __end);
224 if (N >= NUMBER_OF_PARAMETERS) {
236 const double dx = i->getX() - getX();
237 const double dy = i->getY() - getY();
239 const double rt = sqrt(dx*dx + dy*dy);
254 const double dx =
j->getX() - getX();
255 const double dy =
j->getY() - getY();
256 const double dz =
j->getZ() - getZ();
258 const double rt = sqrt(dx*dx + dy*dy);
271 x1 += xr * (*col) * ts;
272 y1 += yr * (*col) * ts;
273 t1 += tr * (*col) * ts;
275 V.a00 += xr * (*col) * xc;
276 V.a01 += xr * (*col) * yc;
277 V.a02 += xr * (*col) * tc;
278 V.a11 += yr * (*col) * yc;
279 V.a12 += yr * (*col) * tc;
280 V.a22 += tr * (*col) * tc;
290 __x += V.a00 * x1 + V.a01 * y1 + V.a02 * t1;
291 __y += V.a10 * x1 + V.a11 * y1 + V.a12 * t1;
292 __t = V.a20 * x1 + V.a21 * y1 + V.a22 * t1;
295 throw JValueOutOfRange(
"JEstimator<JLine1Z>::update(): Not enough data points.");
300 static const int NUMBER_OF_PARAMETERS = 3;