![]() |
Visual Servoing Platform
version 3.6.1 under development (2025-02-19)
|
#include <visp3/core/vpPlane.h>
Public Types | |
enum | vpPlaneFrame { object_frame , camera_frame } |
Public Member Functions | |
vpPlane () | |
vpPlane (const vpPlane &P) | |
vpPlane (double A, double B, double C, double D) | |
vpPlane (const vpPoint &P, const vpColVector &normal, vpPlaneFrame frame=camera_frame) | |
vpPlane (const vpPoint &P, const vpPoint &Q, const vpPoint &R, vpPlaneFrame frame=camera_frame) | |
double | computeZ (double x, double y) const |
vpPlane & | init (const vpPoint &P, const vpColVector &normal, vpPlaneFrame frame=camera_frame) |
vpPlane & | init (const vpPoint &P, const vpPoint &Q, const vpPoint &R, vpPlaneFrame frame=camera_frame) |
vpPlane & | init (const vpColVector &P, const vpColVector &n) |
vpPlane & | init (const vpPlane &P) |
void | setA (double a) |
void | setB (double b) |
void | setC (double c) |
void | setD (double d) |
void | setABCD (double a, double b, double c, double d) |
vpPlane & | operator= (const vpPlane &f) |
double | getA () const |
double | getB () const |
double | getC () const |
double | getD () const |
vpColVector | getABCD () const |
vpColVector | abcd () const |
vpColVector | getNormal () const |
void | getNormal (vpColVector &n) const |
void | projectionPointOnPlan (const vpPoint &P, vpPoint &Pproj, vpPlaneFrame frame=camera_frame) const |
double | rayIntersection (const vpPoint &M0, const vpPoint &M1, vpColVector &H) const |
double | getIntersection (const vpColVector &M1, vpColVector &H) const |
void | changeFrame (const vpHomogeneousMatrix &cMo) |
Friends | |
VISP_EXPORT std::ostream & | operator<< (std::ostream &os, const vpPlane &p) |
This class defines the container for a plane geometrical structure.
A plane is given by the equation where (X,Y,Z) are the coordinates of a point and where
is the normal vector of the plane.
vpPlane::vpPlane | ( | ) |
Basic constructor that set the plane parameters A, B, C, D to zero.
Definition at line 61 of file vpPlane.cpp.
vpPlane::vpPlane | ( | const vpPlane & | P | ) |
vpPlane::vpPlane | ( | double | a, |
double | b, | ||
double | c, | ||
double | d | ||
) |
Plane constructor from A, B, C, D parameters.
A plane is given by the equation where (X,Y,Z) are the coordinates of a point and
is the normal vector of the plane.
a,b,c,d | : Parameters of the plane. |
Definition at line 73 of file vpPlane.cpp.
vpPlane::vpPlane | ( | const vpPoint & | P, |
const vpColVector & | normal, | ||
vpPlaneFrame | frame = camera_frame |
||
) |
Plane constructor from a point P on the plane and the normal to the plane.
A plane is given by the equation where (X,Y,Z) are the coordinates of a point and
is the normal vector of the plane.
P | : A point with coordinates (X,Y,Z) on the plane. The frame parameter indicates if the coordinates of this point are expressed in the camera or object frame. |
normal | : The normal to the plane. |
frame | Indicates if the plane should be initialized from the point P coordinates expressed in the camera or object frame.
|
Definition at line 106 of file vpPlane.cpp.
References camera_frame, vpPoint::get_oX(), vpPoint::get_oY(), vpPoint::get_oZ(), vpPoint::get_X(), vpPoint::get_Y(), and vpPoint::get_Z().
vpPlane::vpPlane | ( | const vpPoint & | P, |
const vpPoint & | Q, | ||
const vpPoint & | R, | ||
vpPlaneFrame | frame = camera_frame |
||
) |
Compute the equation of a plane given three point P, Q, R.
The normal to the plane is given by: n = PQ x PR
P,Q,R | Three points on the plane. |
frame | Indicates if the plane should be initialized from the points coordinates expressed in the camera or object frame. |
Definition at line 279 of file vpPlane.cpp.
References init().
|
inline |
void vpPlane::changeFrame | ( | const vpHomogeneousMatrix & | cMo | ) |
Considering the plane in the Ro frame computes the equation of the plane in the Rc frame.
cMo | : Homogeneous transformation from Rc to Ro frames. |
Definition at line 456 of file vpPlane.cpp.
Referenced by vpMbtFaceDepthNormal::computeInteractionMatrix(), vpMbtFaceDepthDense::computeInteractionMatrixAndResidu(), vpMbtFaceDepthNormal::displayFeature(), vpMbtFaceDepthNormal::estimateFeatures(), vpMbtFaceDepthNormal::estimatePlaneEquationSVD(), vpMbtFaceDepthNormal::getFeaturesForDisplay(), and vpMbtFaceDepthNormal::planeIsInvalid().
double vpPlane::computeZ | ( | double | x, |
double | y | ||
) | const |
Compute Z value of a 3D point located on the plane from its perspective projection coordinates.
[in] | x,y | : Coordinates of a point in the image plane. These coordinates are the one obtained by perspective projection of a 3D point. |
Definition at line 289 of file vpPlane.cpp.
References getA(), getB(), getC(), and getD().
Referenced by vpPose::computePlanarObjectPoseFromRGBD().
|
inline |
Definition at line 100 of file vpPlane.h.
Referenced by vpMbTracker::addPolygon(), vpMbTracker::addProjectionErrorPolygon(), vpMbtDistanceCircle::buildFrom(), vpKeyPoint::compute3D(), vpMbtFaceDepthNormal::computeInteractionMatrix(), vpMbtFaceDepthDense::computeInteractionMatrixAndResidu(), computeZ(), vpMbtFaceDepthNormal::displayFeature(), vpMbtFaceDepthNormal::estimateFeatures(), vpMbtFaceDepthNormal::estimatePlaneEquationSVD(), vpMbtFaceDepthNormal::getFeaturesForDisplay(), init(), rayIntersection(), and vpPlane().
|
inline |
|
inline |
Definition at line 102 of file vpPlane.h.
Referenced by vpMbTracker::addPolygon(), vpMbTracker::addProjectionErrorPolygon(), vpMbtDistanceCircle::buildFrom(), vpKeyPoint::compute3D(), vpMbtFaceDepthNormal::computeInteractionMatrix(), vpMbtFaceDepthDense::computeInteractionMatrixAndResidu(), computeZ(), vpMbtFaceDepthNormal::displayFeature(), vpMbtFaceDepthNormal::estimateFeatures(), vpMbtFaceDepthNormal::estimatePlaneEquationSVD(), vpMbtFaceDepthNormal::getFeaturesForDisplay(), init(), rayIntersection(), and vpPlane().
|
inline |
Definition at line 104 of file vpPlane.h.
Referenced by vpMbTracker::addPolygon(), vpMbTracker::addProjectionErrorPolygon(), vpMbtDistanceCircle::buildFrom(), vpKeyPoint::compute3D(), vpMbtFaceDepthNormal::computeInteractionMatrix(), vpMbtFaceDepthDense::computeInteractionMatrixAndResidu(), computeZ(), vpMbtFaceDepthNormal::displayFeature(), vpMbtFaceDepthNormal::estimateFeatures(), vpMbtFaceDepthNormal::estimatePlaneEquationSVD(), vpMbtFaceDepthNormal::getFeaturesForDisplay(), init(), rayIntersection(), and vpPlane().
|
inline |
Definition at line 106 of file vpPlane.h.
Referenced by vpKeyPoint::compute3D(), vpMbtFaceDepthNormal::computeInteractionMatrix(), vpMbtFaceDepthDense::computeInteractionMatrixAndResidu(), computeZ(), vpMbtFaceDepthNormal::estimateFeatures(), vpMbtFaceDepthNormal::estimatePlaneEquationSVD(), getIntersection(), init(), vpMbtFaceDepthNormal::planeIsInvalid(), rayIntersection(), and vpPlane().
double vpPlane::getIntersection | ( | const vpColVector & | M1, |
vpColVector & | H | ||
) | const |
Definition at line 426 of file vpPlane.cpp.
References getD().
vpColVector vpPlane::getNormal | ( | ) | const |
Return the normal to the plane.
A plane is given by the equation where (x,y,z) is a point of R^3 and (A,B,C) are the coordinates of the normal.
Definition at line 302 of file vpPlane.cpp.
void vpPlane::getNormal | ( | vpColVector & | n | ) | const |
Return the normal to the plane.
A plane is given by the equation where (X,Y,Z) are the coordinates of a point and
is the normal vector of the plane.
Definition at line 326 of file vpPlane.cpp.
References vpColVector::resize().
vpPlane & vpPlane::init | ( | const vpColVector & | P, |
const vpColVector & | normal | ||
) |
Initialize the plane from a point P on the plane and the normal n to the plane.
P | : A point with coordinates (x,y,z) on the plane. The size of the vector should be 3, with P[0]=x, with P[1]=y, with P[2]=z. |
normal | : The normal to the plane. |
Definition at line 188 of file vpPlane.cpp.
vpPlane & vpPlane::init | ( | const vpPoint & | P, |
const vpColVector & | normal, | ||
vpPlaneFrame | frame = camera_frame |
||
) |
Initialize the plane from a point P on the plane and the normal to the plane.
P | : A point with coordinates (X,Y,Z) on the plane. The frame parameter indicates if the coordinates of this point are expressed in the camera or object frame. |
normal | : The normal to the plane. |
frame | Indicates if the plane should be initialized from the point P coordinates expressed in the camera (X, Y, Z) or object frame (oX, oY, oZ).
|
Definition at line 157 of file vpPlane.cpp.
References camera_frame, vpPoint::get_oX(), vpPoint::get_oY(), vpPoint::get_oZ(), vpPoint::get_X(), vpPoint::get_Y(), and vpPoint::get_Z().
Referenced by vpPlane().
vpPlane & vpPlane::init | ( | const vpPoint & | P, |
const vpPoint & | Q, | ||
const vpPoint & | R, | ||
vpPlaneFrame | frame = camera_frame |
||
) |
Compute the equation of a plane given three point P, Q, R.
The normal to the plane is given by: n = PQ x PR
P,Q,R | Three points on the plane. |
frame | Indicates if the plane should be initialized from the points coordinates expressed in the camera or object frame. |
Definition at line 214 of file vpPlane.cpp.
References camera_frame, vpColVector::cross(), vpPoint::get_oX(), vpPoint::get_oY(), vpPoint::get_oZ(), vpPoint::get_X(), vpPoint::get_Y(), and vpPoint::get_Z().
Copy operator.
Definition at line 48 of file vpPlane.cpp.
void vpPlane::projectionPointOnPlan | ( | const vpPoint & | P, |
vpPoint & | Pproj, | ||
vpPlaneFrame | frame = camera_frame |
||
) | const |
Compute the coordinates of the projection of a point on the plane.
[in] | P | : Point to be projected on the plane. |
[out] | Pproj | : Projected point. |
[in] | frame | : Indicates if the point P coordinates are expressed in the camera or object frame.
|
Definition at line 349 of file vpPlane.cpp.
References camera_frame, vpPoint::get_oW(), vpPoint::get_oX(), vpPoint::get_oY(), vpPoint::get_oZ(), vpPoint::get_W(), vpPoint::get_X(), vpPoint::get_Y(), vpPoint::get_Z(), vpPoint::set_oW(), vpPoint::set_oX(), vpPoint::set_oY(), vpPoint::set_oZ(), vpPoint::set_W(), vpPoint::set_X(), vpPoint::set_Y(), and vpPoint::set_Z().
double vpPlane::rayIntersection | ( | const vpPoint & | M0, |
const vpPoint & | M1, | ||
vpColVector & | H | ||
) | const |
Definition at line 380 of file vpPlane.cpp.
References vpPoint::get_X(), vpPoint::get_Y(), vpPoint::get_Z(), getA(), getB(), getC(), and getD().
|
inline |
|
inline |
Set plane parameters A, B, C, D.
|
inline |
|
inline |
|
inline |
|
friend |
Print the plane parameters as a stream like "(A,B,C,D) " where A,B,C and D correspond to the parameters of the plane.
Definition at line 479 of file vpPlane.cpp.