34#include <visp3/core/vpCylinder.h>
35#include <visp3/core/vpFeatureDisplay.h>
192 double co, si, e, x0, y0, z0;
193 double A, B, C, X0, Y0, Z0, R;
194 double s, a, b, c, zero;
203 zero = A * X0 + B * Y0 + C * Z0;
205 s = X0 * X0 + Y0 * Y0 + Z0 * Z0 - R * R - zero * zero;
213 x0 = C * Y0 - B * Z0;
214 y0 = A * Z0 - C * X0;
215 z0 = B * X0 - A * Y0;
220 e = sqrt(co * co + si * si);
221 p_[0] = -(R * c * s - z0) / e;
222 p_[1] = atan2(si, co);
227 e = sqrt(co * co + si * si);
228 p_[2] = -(R * c * s + z0) / e;
229 p_[3] = atan2(si, co);
261 double oA, oB, oC, oX0, oY0, oZ0;
269 X1 = cMo[0][0] * oA + cMo[0][1] * oB + cMo[0][2] * oC;
270 Y1 = cMo[1][0] * oA + cMo[1][1] * oB + cMo[1][2] * oC;
271 Z1 = cMo[2][0] * oA + cMo[2][1] * oB + cMo[2][2] * oC;
272 s = sqrt(X1 * X1 + Y1 * Y1 + Z1 * Z1);
282 X2 = cMo[0][3] + cMo[0][0] * oX0 + cMo[0][1] * oY0 + cMo[0][2] * oZ0;
283 Y2 = cMo[1][3] + cMo[1][0] * oX0 + cMo[1][1] * oY0 + cMo[1][2] * oZ0;
284 Z2 = cMo[2][3] + cMo[2][0] * oX0 + cMo[2][1] * oY0 + cMo[2][2] * oZ0;
288 cP_[3] = (1 - a * a) * X2 - a * b * Y2 - a * c * Z2;
289 cP_[4] = -a * b * X2 + (1 - b * b) * Y2 - b * c * Z2;
290 cP_[5] = -a * c * X2 - b * c * Y2 + (1 - c * c) * Z2;
354 return (B - std::sqrt(B * B - A * C)) / A;
377 const vpColor &color,
unsigned int thickness)
399 const vpColor &color,
unsigned int thickness)
417 unsigned int thickness)
431 unsigned int thickness)
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
void resize(unsigned int i, bool flagNullify=true)
Class to define RGB colors available for display functionalities.
void display(const vpImage< unsigned char > &I, const vpCameraParameters &cam, const vpColor &color=vpColor::green, unsigned int thickness=1) VP_OVERRIDE
void changeFrame(const vpHomogeneousMatrix &cMo, vpColVector &cP) const VP_OVERRIDE
void projection() VP_OVERRIDE
vpCylinder * duplicate() const VP_OVERRIDE
For memory issue (used by the vpServo class only).
double computeZ(double x, double y) const
void setWorldCoordinates(const vpColVector &oP) VP_OVERRIDE
error that can be emitted by ViSP classes.
static void displayCylinder(double rho1, double theta1, double rho2, double theta2, const vpCameraParameters &cam, const vpImage< unsigned char > &I, const vpColor &color=vpColor::green, unsigned int thickness=1)
Implementation of an homogeneous matrix and operations on such kind of matrices.
Definition of the vpImage class member functions.