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 &A2,
const double &B2,
const double &C2,
const double &D2)
154 for (
unsigned int i = 0; i < 4; i++) {
223 double A1, A2, B1, B2, C1, C2, D1, D2;
236 a = A2 * D1 - A1 * D2;
237 b = B2 * D1 - B1 * D2;
238 c = C2 * D1 - C1 * D2;
242 printf(
"Degenerate case: the image of the straight line is a point!\n");
248 double theta = atan2(b, a);
339 double a1, a2, b1, b2, c1, c2, d1, d2;
340 double A1, A2, B1, B2, C1, C2, D1, D2;
358 A1 = cMo[0][0] * a1 + cMo[0][1] * b1 + cMo[0][2] * c1;
359 B1 = cMo[1][0] * a1 + cMo[1][1] * b1 + cMo[1][2] * c1;
360 C1 = cMo[2][0] * a1 + cMo[2][1] * b1 + cMo[2][2] * c1;
361 D1 = d1 - (cMo[0][3] * A1 + cMo[1][3] * B1 + cMo[2][3] * C1);
363 A2 = cMo[0][0] * a2 + cMo[0][1] * b2 + cMo[0][2] * c2;
364 B2 = cMo[1][0] * a2 + cMo[1][1] * b2 + cMo[1][2] * c2;
365 C2 = cMo[2][0] * a2 + cMo[2][1] * b2 + cMo[2][2] * c2;
366 D2 = d2 - (cMo[0][3] * A2 + cMo[1][3] * B2 + cMo[2][3] * C2);
378 a2 = B1 * C2 - C1 * B2;
379 b2 = C1 * A2 - A1 * C2;
380 c2 = A1 * B2 - B1 * A2;
383 a1 = A2 * D1 - A1 * D2;
384 b1 = B2 * D1 - B1 * D2;
385 c1 = C2 * D1 - C1 * D2;
387 if (fabs(D2) < fabs(D1))
396 d1 = 1.0 / sqrt(a1 * a1 + b1 * b1 + c1 * c1);
397 cP_[0] = A1 = a1 * d1;
398 cP_[1] = B1 = b1 * d1;
399 cP_[2] = C1 = c1 * d1;
404 a1 = b2 * C1 - c2 * B1;
405 b1 = c2 * A1 - a2 * C1;
406 c1 = a2 * B1 - b2 * A1;
409 d1 = 1.0 / sqrt(a1 * a1 + b1 * b1 + c1 * c1);
415 D2 /= (A2 * a1 + B2 * b1 + C2 * c1);
474 const unsigned int thickness)
501 const vpColor &color,
const unsigned int thickness)
Implementation of an homogeneous matrix and operations on such kind of matrices.
void setWorldCoordinates(const double &A1, const double &B1, const double &C1, const double &D1, const double &A2, const double &B2, const double &C2, const double &D2)
Class to define colors available for display functionnalities.
error that can be emited by ViSP classes.
Class that defines a line in the object frame, the camera frame and the image plane. All the parameters must be set in meter.
Generic class defining intrinsic camera parameters.
unsigned int getRows() const
vpLine * duplicate() const
void changeFrame(const vpHomogeneousMatrix &cMo, vpColVector &cP)
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, const unsigned int thickness=1)
void resize(const unsigned int i, const bool flagNullify=true)