39 #include <visp3/core/vpLine.h> 41 #include <visp3/core/vpDebug.h> 42 #include <visp3/core/vpMath.h> 44 #include <visp3/core/vpFeatureDisplay.h> 86 const double &oA2,
const double &oB2,
const double &oC2,
const double &oD2)
154 for (
unsigned int i = 0; i < 4; i++) {
221 double A1, A2, B1, B2, C1, C2, D1, D2;
234 a = A2 * D1 - A1 * D2;
235 b = B2 * D1 - B1 * D2;
236 c = C2 * D1 - C1 * D2;
240 printf(
"Degenerate case: the image of the straight line is a point!\n");
246 double theta = atan2(b, a);
334 double a1, a2, b1, b2, c1, c2, d1, d2;
335 double A1, A2, B1, B2, C1, C2, D1, D2;
350 A1 = cMo[0][0] * a1 + cMo[0][1] * b1 + cMo[0][2] * c1;
351 B1 = cMo[1][0] * a1 + cMo[1][1] * b1 + cMo[1][2] * c1;
352 C1 = cMo[2][0] * a1 + cMo[2][1] * b1 + cMo[2][2] * c1;
353 D1 = d1 - (cMo[0][3] * A1 + cMo[1][3] * B1 + cMo[2][3] * C1);
355 A2 = cMo[0][0] * a2 + cMo[0][1] * b2 + cMo[0][2] * c2;
356 B2 = cMo[1][0] * a2 + cMo[1][1] * b2 + cMo[1][2] * c2;
357 C2 = cMo[2][0] * a2 + cMo[2][1] * b2 + cMo[2][2] * c2;
358 D2 = d2 - (cMo[0][3] * A2 + cMo[1][3] * B2 + cMo[2][3] * C2);
370 a2 = B1 * C2 - C1 * B2;
371 b2 = C1 * A2 - A1 * C2;
372 c2 = A1 * B2 - B1 * A2;
375 a1 = A2 * D1 - A1 * D2;
376 b1 = B2 * D1 - B1 * D2;
377 c1 = C2 * D1 - C1 * D2;
379 if (fabs(D2) < fabs(D1))
388 d1 = 1.0 / sqrt(a1 * a1 + b1 * b1 + c1 * c1);
389 cP_[0] = A1 = a1 * d1;
390 cP_[1] = B1 = b1 * d1;
391 cP_[2] = C1 = c1 * d1;
396 a1 = b2 * C1 - c2 * B1;
397 b1 = c2 * A1 - a2 * C1;
398 c1 = a2 * B1 - b2 * A1;
401 d1 = 1.0 / sqrt(a1 * a1 + b1 * b1 + c1 * c1);
407 D2 /= (A2 * a1 + B2 * b1 + C2 * c1);
466 unsigned int thickness)
487 unsigned int thickness)
515 const vpColor &color,
unsigned int thickness)
550 const vpColor &color,
unsigned int thickness)
void changeFrame(const vpHomogeneousMatrix &cMo, vpColVector &cP) const
Implementation of an homogeneous matrix and operations on such kind of matrices.
Class to define RGB colors available for display functionnalities.
vpLine * duplicate() const
error that can be emited by ViSP classes.
unsigned int getRows() const
Class that defines a 3D line in the object frame and allows forward projection of the line in the cam...
void setWorldCoordinates(const double &oA1, const double &oB1, const double &oC1, const double &oD1, const double &oA2, const double &oB2, const double &oC2, const double &oD2)
Generic class defining intrinsic camera parameters.
void resize(unsigned int i, bool flagNullify=true)
Implementation of column vector and the associated operations.
static void displayLine(double rho, double theta, const vpCameraParameters &cam, const vpImage< unsigned char > &I, const vpColor &color=vpColor::green, unsigned int thickness=1)
void display(const vpImage< unsigned char > &I, const vpCameraParameters &cam, const vpColor &color=vpColor::green, unsigned int thickness=1)