Visual Servoing Platform  version 3.0.0
vpPlane Class Reference

#include <visp3/core/vpPlane.h>

Public Types

enum  vpPlaneFrame { object_frame, camera_frame }
 

Public Member Functions

 vpPlane ()
 
 vpPlane (const vpPlane &P)
 
 vpPlane (const double A, const double B, const double C, const double D)
 
 vpPlane (const vpPoint &P, const vpColVector &n, vpPlaneFrame frame=camera_frame)
 
 vpPlane (const vpPoint &P, const vpPoint &Q, const vpPoint &R, vpPlaneFrame frame=camera_frame)
 
void init (const vpPoint &P, const vpPoint &Q, const vpPoint &R, vpPlaneFrame frame=camera_frame)
 
void init (const vpColVector &P, const vpColVector &n)
 
void init (const vpPlane &P)
 
void setA (const double a)
 
void setB (const double b)
 
void setC (const double c)
 
void setD (const double d)
 
void setABCD (const double a, const double b, const double c, const double d)
 
vpPlaneoperator= (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) 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)
 

Public Attributes

double A
 
double B
 
double C
 
double D
 

Friends

VISP_EXPORT std::ostream & operator<< (std::ostream &os, vpPlane &p)
 

Detailed Description

This class defines the container for a plane geometrical structure.

A plane is given by the equation $Ax + By + Cz + D = 0$ where (x,y,z) are the coordinates of a point and where $[A,B,C]^T$ is a normal vector of the plane.

Examples:
homographyHartleyDLT2DObject.cpp, homographyHLM2DObject.cpp, homographyHLM3DObject.cpp, homographyRansac2DObject.cpp, manServoMomentsSimple.cpp, servoMomentImage.cpp, servoMomentPoints.cpp, servoMomentPolygon.cpp, and testDisplacement.cpp.

Definition at line 58 of file vpPlane.h.

Member Enumeration Documentation

Enumerator
object_frame 
camera_frame 

Definition at line 70 of file vpPlane.h.

Constructor & Destructor Documentation

vpPlane::vpPlane ( )

Basic constructor that set the plane parameters A, B, C, D to zero.

Definition at line 67 of file vpPlane.cpp.

vpPlane::vpPlane ( const vpPlane P)

Copy constructor.

Definition at line 85 of file vpPlane.cpp.

References getA(), getB(), getC(), getD(), setA(), setB(), setC(), and setD().

vpPlane::vpPlane ( const double  a,
const double  b,
const double  c,
const double  d 
)

Plane constructor from A, B, C, D parameters.

A plane is given by the equation $Ax + By + Cz + D = 0$ where (x,y,z) are the coordinates of a point and $[A,B,C]^T$ is the normal vector of the plane.

Parameters
a,b,c,d: Parameters of the plane.

Definition at line 79 of file vpPlane.cpp.

vpPlane::vpPlane ( const vpPoint P,
const vpColVector n,
vpPlaneFrame  frame = camera_frame 
)

Plane constructor from a point P on the plane and the normal n to the plane.

A plane is given by the equation $Ax + By + Cz + D = 0$ where (x,y,z) are the coordinates of a point and $[A,B,C]^T$ is the normal vector of the plane.

Parameters
P: A point with coordinates (x,y,z) on the plane. The frame parameter indicates if the coordinates of this points that are used are expressed in the camera of object frame.
n: The normal to the plane.
frameIndicates if the plane should be initialized from the point P coordinates expressed in the camera or object frame.

Definition at line 112 of file vpPlane.cpp.

References A, B, C, camera_frame, D, 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

Parameters
P,Q,RThree points on the plane.
frameIndicates if the plane should be initialized from the points coordinates expressed in the camera or object frame.
See also
init(const vpPoint &, const vpPoint &, const vpPoint &)

Definition at line 232 of file vpPlane.cpp.

References init().

Member Function Documentation

vpColVector vpPlane::abcd ( ) const
inline
Warning
This method is provided for compatibility with the previous versions. Users should now use getABCD().
Returns
Return the four dimension vector $[A,B,C,D]^T$ corresponding to the plane parameters.
See also
getABCD()

Definition at line 139 of file vpPlane.h.

void vpPlane::changeFrame ( const vpHomogeneousMatrix cMo)

Considering the plane in the Ro frame computes the equation of the plane in the Rc frame.

Parameters
cMo: Homogeneous transformation from Rc to Ro frames.
Examples:
manServoMomentsSimple.cpp, servoMomentImage.cpp, servoMomentPoints.cpp, and servoMomentPolygon.cpp.

Definition at line 372 of file vpPlane.cpp.

References A, B, C, and D.

Referenced by vpMbKltTracker::setPose().

double vpPlane::getA ( ) const
inline
vpColVector vpPlane::getABCD ( ) const
inline
Returns
Return the four dimension vector $[A,B,C,D]^T$ corresponding to the plane parameters.

Definition at line 120 of file vpPlane.h.

double vpPlane::getB ( ) const
inline
double vpPlane::getC ( ) const
inline
double vpPlane::getD ( ) const
inline
double vpPlane::getIntersection ( const vpColVector M1,
vpColVector H 
) const

Definition at line 345 of file vpPlane.cpp.

References A, B, C, and getD().

vpColVector vpPlane::getNormal ( ) const

Return the normal to the plane.

A plane is given by the equation $Ax + By + Cz + D = 0$ where (x,y,z) is a point of R^3 and (A,B,C) are the coordinates of the normal.

See also
getNormal(vpColVector &n)

Definition at line 246 of file vpPlane.cpp.

References A, B, and C.

Referenced by vpMbKltTracker::setPose().

void vpPlane::getNormal ( vpColVector n) const

Return the normal to the plane.

A plane is given by the equation $Ax + By + Cz + D = 0$ where (x,y,z) are the coordinates of a point and $[A,B,C]^T$ is normal vector of the plane.

See also
getNormal()

Definition at line 266 of file vpPlane.cpp.

References A, B, C, and vpColVector::resize().

void 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

Parameters
P,Q,RThree points on the plane.
frameIndicates if the plane should be initialized from the points coordinates expressed in the camera or object frame.

Definition at line 173 of file vpPlane.cpp.

References A, B, C, camera_frame, vpColVector::cross(), D, vpPoint::get_oX(), vpPoint::get_oY(), vpPoint::get_oZ(), vpPoint::get_X(), vpPoint::get_Y(), and vpPoint::get_Z().

Referenced by vpPlane().

void vpPlane::init ( const vpColVector P,
const vpColVector n 
)

Initialize the plane from a point P on the plane and the normal n to the plane.

Parameters
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.
n: The normal to the plane.
See also
vpPlane(const vpPoint&, const vpColVector &)

Definition at line 151 of file vpPlane.cpp.

References A, B, C, and D.

void vpPlane::init ( const vpPlane P)

Initialize the plane with the parameters of an other plane P.

Parameters
P: Plane used as initializer.

Definition at line 132 of file vpPlane.cpp.

References getA(), getB(), getC(), getD(), setA(), setB(), setC(), and setD().

vpPlane & vpPlane::operator= ( const vpPlane p)

Copy operator.

Definition at line 54 of file vpPlane.cpp.

References A, B, C, and D.

void vpPlane::projectionPointOnPlan ( const vpPoint P,
vpPoint Pproj 
) const

Compute the coordinates of the projection of a point on the plane.

Parameters
P: point to be projected on the plane
Pproj: result of the projection (pproj belongs to the plane)

Definition at line 281 of file vpPlane.cpp.

References A, B, C, D, vpPoint::get_W(), vpPoint::get_X(), vpPoint::get_Y(), vpPoint::get_Z(), 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 300 of file vpPlane.cpp.

References vpPoint::get_X(), vpPoint::get_Y(), vpPoint::get_Z(), getA(), getB(), getC(), and getD().

void vpPlane::setA ( const double  a)
inline

Set plane parameter A.

Definition at line 85 of file vpPlane.h.

Referenced by init(), and vpPlane().

void vpPlane::setABCD ( const double  a,
const double  b,
const double  c,
const double  d 
)
inline

Set plane parameters A, B, C, D.

Examples:
manServoMomentsSimple.cpp, servoMomentImage.cpp, servoMomentPoints.cpp, and servoMomentPolygon.cpp.

Definition at line 93 of file vpPlane.h.

void vpPlane::setB ( const double  b)
inline

Set plane parameter B.

Definition at line 87 of file vpPlane.h.

Referenced by init(), and vpPlane().

void vpPlane::setC ( const double  c)
inline

Set plane parameter C.

Definition at line 89 of file vpPlane.h.

Referenced by init(), and vpPlane().

void vpPlane::setD ( const double  d)
inline

Set plane parameter D.

Definition at line 91 of file vpPlane.h.

Referenced by init(), and vpPlane().

Friends And Related Function Documentation

VISP_EXPORT std::ostream& operator<< ( std::ostream &  os,
vpPlane p 
)
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 388 of file vpPlane.cpp.

Member Data Documentation

double vpPlane::A
double vpPlane::B
double vpPlane::C
double vpPlane::D

Definition at line 67 of file vpPlane.h.

Referenced by changeFrame(), init(), operator=(), projectionPointOnPlan(), and vpPlane().