Visual Servoing Platform  version 3.0.1
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
vpPolygon3D Class Reference

#include <visp3/core/vpPolygon3D.h>

+ Inheritance diagram for vpPolygon3D:

Public Types

enum  vpPolygon3DClippingType {
  NO_CLIPPING = 0, NEAR_CLIPPING = 1, FAR_CLIPPING = 2, LEFT_CLIPPING = 4,
  RIGHT_CLIPPING = 8, UP_CLIPPING = 16, DOWN_CLIPPING = 32, FOV_CLIPPING = 60,
  ALL_CLIPPING = 63
}
 

Public Member Functions

 vpPolygon3D ()
 
 vpPolygon3D (const vpPolygon3D &mbtp)
 
virtual ~vpPolygon3D ()
 
void addPoint (const unsigned int n, const vpPoint &P)
 
void changeFrame (const vpHomogeneousMatrix &cMo)
 
void computePolygonClipped (const vpCameraParameters &cam=vpCameraParameters())
 
unsigned int getClipping () const
 
double getFarClippingDistance () const
 
unsigned int getNbPoint () const
 
unsigned int getNbCornerInsidePrevImage () const
 
unsigned int getNbCornerInsideImage (const vpImage< unsigned char > &I, const vpCameraParameters &cam)
 
double getNearClippingDistance () const
 
vpPointgetPoint (const unsigned int _index)
 
std::vector< vpImagePointgetRoi (const vpCameraParameters &cam)
 
std::vector< vpImagePointgetRoi (const vpCameraParameters &cam, const vpHomogeneousMatrix &cMo)
 
void getRoiClipped (const vpCameraParameters &cam, std::vector< vpImagePoint > &roi)
 
void getRoiClipped (const vpCameraParameters &cam, std::vector< vpImagePoint > &roi, const vpHomogeneousMatrix &cMo)
 
void getRoiClipped (const vpCameraParameters &cam, std::vector< std::pair< vpImagePoint, unsigned int > > &roi)
 
void getRoiClipped (const vpCameraParameters &cam, std::vector< std::pair< vpImagePoint, unsigned int > > &roi, const vpHomogeneousMatrix &cMo)
 
void getPolygonClipped (std::vector< std::pair< vpPoint, unsigned int > > &poly)
 
void getPolygonClipped (std::vector< vpPoint > &poly)
 
vpPolygon3Doperator= (const vpPolygon3D &mbtp)
 
void setClipping (const unsigned int &flags)
 
void setFarClippingDistance (const double &dist)
 
virtual void setNbPoint (const unsigned int nb)
 
void setNearClippingDistance (const double &dist)
 
Deprecated functions
vp_deprecated void getRoiClipped (std::vector< vpPoint > &points)
 

Static Public Member Functions

static void getClippedPolygon (const std::vector< vpPoint > &ptIn, std::vector< vpPoint > &ptOut, const vpHomogeneousMatrix &cMo, const unsigned int &clippingFlags, const vpCameraParameters &cam=vpCameraParameters(), const double &znear=0.001, const double &zfar=100)
 
static void getMinMaxRoi (const std::vector< vpImagePoint > &roi, int &i_min, int &i_max, int &j_min, int &j_max)
 
static bool roiInsideImage (const vpImage< unsigned char > &I, const std::vector< vpImagePoint > &corners)
 

Public Attributes

unsigned int nbpt
 
unsigned int nbCornersInsidePrev
 
vpPointp
 
std::vector< std::pair
< vpPoint, unsigned int > > 
polyClipped
 
unsigned int clippingFlag
 
double distNearClip
 
double distFarClip
 

Detailed Description

Implements a 3D polygon with render functionnalities like clipping.

Definition at line 59 of file vpPolygon3D.h.

Member Enumeration Documentation

Enumerator
NO_CLIPPING 
NEAR_CLIPPING 
FAR_CLIPPING 
LEFT_CLIPPING 
RIGHT_CLIPPING 
UP_CLIPPING 
DOWN_CLIPPING 
FOV_CLIPPING 
ALL_CLIPPING 

Definition at line 62 of file vpPolygon3D.h.

Constructor & Destructor Documentation

vpPolygon3D::vpPolygon3D ( )

Basic constructor.

Definition at line 52 of file vpPolygon3D.cpp.

vpPolygon3D::vpPolygon3D ( const vpPolygon3D mbtp)

Definition at line 59 of file vpPolygon3D.cpp.

References nbpt, and p.

vpPolygon3D::~vpPolygon3D ( )
virtual

Basic destructor.

Definition at line 90 of file vpPolygon3D.cpp.

References p.

Member Function Documentation

void vpPolygon3D::addPoint ( const unsigned int  n,
const vpPoint P 
)

Add a corner point to the list of polygon's corners.

Parameters
n: The index of the corner.
P: The point to add.

Definition at line 136 of file vpPolygon3D.cpp.

References p.

Referenced by vpMbTracker::addPolygon(), vpMbtDistanceLine::buildFrom(), and getClippedPolygon().

void vpPolygon3D::changeFrame ( const vpHomogeneousMatrix cMo)

Project the 3D corner points into the image thanks to the pose of the camera.

Parameters
cMo: The pose of the camera.

Definition at line 148 of file vpPolygon3D.cpp.

References vpPoint::changeFrame(), nbpt, p, and vpPoint::projection().

Referenced by getClippedPolygon(), getRoi(), getRoiClipped(), vpMbtPolygon::isVisible(), vpMbKltTracker::reinit(), and vpMbKltTracker::setPose().

void vpPolygon3D::computePolygonClipped ( const vpCameraParameters cam = vpCameraParameters())

Compute the region of interest in the image according to the used clipping.

Warning
If the FOV clipping is used, camera normals have to be precomputed.
Parameters
cam: camera parameters used to compute the field of view.

Definition at line 165 of file vpPolygon3D.cpp.

References clippingFlag, distFarClip, distNearClip, DOWN_CLIPPING, FAR_CLIPPING, vpCameraParameters::getFovNormals(), vpCameraParameters::isFovComputed(), LEFT_CLIPPING, nbpt, NO_CLIPPING, p, polyClipped, vpPoint::projection(), RIGHT_CLIPPING, and UP_CLIPPING.

Referenced by vpMbtDistanceLine::display(), getClippedPolygon(), getRoiClipped(), vpMbtDistanceLine::initMovingEdge(), vpMbtPolygon::isVisible(), vpMbKltTracker::reinit(), vpMbKltTracker::setPose(), and vpMbtDistanceLine::updateMovingEdge().

void vpPolygon3D::getClippedPolygon ( const std::vector< vpPoint > &  ptIn,
std::vector< vpPoint > &  ptOut,
const vpHomogeneousMatrix cMo,
const unsigned int &  clippingFlags,
const vpCameraParameters cam = vpCameraParameters(),
const double &  znear = 0.001,
const double &  zfar = 100 
)
static

Static method to compute the clipped points from a set of initial points.

Warning
When using FOV clipping and personnal camera parameters, camera normals have to be computed before (see vpCameraParameters::computeFov())
Parameters
ptIn: Input points
ptOut: Output points (result of the clipping).
cMo: Pose considered for the clipping.
clippingFlagsClipping flag (see vpPolygon3D::vpPolygon3DClippingType).
cam: Camera parameters (Only used if clipping flags contain FOV clipping).
znear: Near clipping distance value (Only used if clipping flags contain Near clipping).
zfar: Far clipping distance value (Only used if clipping flags contain Far clipping).

Definition at line 576 of file vpPolygon3D.cpp.

References addPoint(), changeFrame(), computePolygonClipped(), FAR_CLIPPING, getPolygonClipped(), NEAR_CLIPPING, setClipping(), setFarClippingDistance(), setNbPoint(), and setNearClippingDistance().

Referenced by vpImageSimulator::setCameraPosition().

unsigned int vpPolygon3D::getClipping ( ) const
inline

Get the clipping used.

See Also
vpPolygon3DClipping
Returns
Clipping flags.

Definition at line 121 of file vpPolygon3D.h.

Referenced by vpMbtDistanceLine::display(), vpMbtDistanceLine::initMovingEdge(), and vpMbtDistanceLine::updateMovingEdge().

double vpPolygon3D::getFarClippingDistance ( ) const
inline

Get the far distance for clipping.

Returns
Far clipping value.

Definition at line 128 of file vpPolygon3D.h.

void vpPolygon3D::getMinMaxRoi ( const std::vector< vpImagePoint > &  roi,
int &  i_min,
int &  i_max,
int &  j_min,
int &  j_max 
)
static
unsigned int vpPolygon3D::getNbCornerInsideImage ( const vpImage< unsigned char > &  I,
const vpCameraParameters cam 
)

Static method to check the number of points of a region defined by the vector of image point that are inside the image.

Parameters
I: The image used for its size.
cam: The camera parameters.

Definition at line 541 of file vpPolygon3D.cpp.

References vpMeterPixelConversion::convertPoint(), vpImagePoint::get_i(), vpImagePoint::get_j(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), nbCornersInsidePrev, nbpt, and p.

unsigned int vpPolygon3D::getNbCornerInsidePrevImage ( ) const
inline

Return the number of corners at the previous computation.

Returns
number of corner of the face at the previous computation

Definition at line 142 of file vpPolygon3D.h.

double vpPolygon3D::getNearClippingDistance ( ) const
inline

Get the near distance for clipping.

Returns
Near clipping value.

Definition at line 151 of file vpPolygon3D.h.

vpPoint & vpPolygon3D::getPoint ( const unsigned int  _index)

Get a reference to a corner.

Exceptions
vpException::dimensionErrorif the _index is out of range.
Parameters
_index: the index of the corner

Definition at line 107 of file vpPolygon3D.cpp.

References vpException::dimensionError, nbpt, and p.

Referenced by vpMbtDistanceKltPoints::init().

void vpPolygon3D::getPolygonClipped ( std::vector< std::pair< vpPoint, unsigned int > > &  poly)

Get the 3D clipped points and their clipping information.

Warning
Suppose that changeFrame() and computePolygonClipped() have already been called.
Parameters
poly: resulting points plus clipping information.

Definition at line 444 of file vpPolygon3D.cpp.

References polyClipped.

Referenced by vpMbtDistanceKltPoints::display(), and getClippedPolygon().

void vpPolygon3D::getPolygonClipped ( std::vector< vpPoint > &  poly)

Get the 3D clipped points.

Warning
Suppose that changeFrame() and computePolygonClipped() have already been called.
Parameters
poly: resulting points.

Definition at line 457 of file vpPolygon3D.cpp.

References polyClipped.

std::vector< vpImagePoint > vpPolygon3D::getRoi ( const vpCameraParameters cam)

Get the region of interest in the image.

Warning
Suppose that changeFrame() has already been called.
Parameters
cam: camera parameters.
Returns
Image point corresponding to the region of interest.

Definition at line 392 of file vpPolygon3D.cpp.

References vpMeterPixelConversion::convertPoint(), nbpt, and p.

Referenced by getRoi().

std::vector< vpImagePoint > vpPolygon3D::getRoi ( const vpCameraParameters cam,
const vpHomogeneousMatrix cMo 
)

Get the region of interest in the image.

Parameters
cam: camera parameters.
cMo: pose.
Returns
Image point corresponding to the region of interest.

Definition at line 413 of file vpPolygon3D.cpp.

References changeFrame(), and getRoi().

void vpPolygon3D::getRoiClipped ( const vpCameraParameters cam,
std::vector< vpImagePoint > &  roi 
)

Get the region of interest clipped in the image.

Warning
Suppose that changeFrame() and computePolygonClipped() have already been called.
Parameters
cam: camera parameters.
roi: image point corresponding to the region of interest.

Definition at line 473 of file vpPolygon3D.cpp.

References vpMeterPixelConversion::convertPoint(), and polyClipped.

Referenced by getRoiClipped(), vpMbtDistanceKltPoints::init(), vpMbtPolygon::isVisible(), and vpMbtDistanceKltPoints::updateMask().

void vpPolygon3D::getRoiClipped ( const vpCameraParameters cam,
std::vector< vpImagePoint > &  roi,
const vpHomogeneousMatrix cMo 
)

Get the region of interest clipped in the image.

Parameters
cam: camera parameters.
cMo: pose.
roi: image point corresponding to the region of interest.

Definition at line 491 of file vpPolygon3D.cpp.

References changeFrame(), computePolygonClipped(), and getRoiClipped().

void vpPolygon3D::getRoiClipped ( const vpCameraParameters cam,
std::vector< std::pair< vpImagePoint, unsigned int > > &  roi 
)

Get the region of interest clipped in the image and the information to know if it's a clipped point.

Warning
Suppose that changeFrame() and computePolygonClipped() have already been called.
Parameters
cam: camera parameters.
roi: image point corresponding to the region of interest with clipping information.

Definition at line 507 of file vpPolygon3D.cpp.

References vpMeterPixelConversion::convertPoint(), and polyClipped.

void vpPolygon3D::getRoiClipped ( const vpCameraParameters cam,
std::vector< std::pair< vpImagePoint, unsigned int > > &  roi,
const vpHomogeneousMatrix cMo 
)

Get the region of interest clipped in the image and the information to know if it's a clipped point.

Parameters
cam: camera parameters.
roi: image point corresponding to the region of interest with clipping information.
cMo: pose.

Definition at line 525 of file vpPolygon3D.cpp.

References changeFrame(), computePolygonClipped(), and getRoiClipped().

void vpPolygon3D::getRoiClipped ( std::vector< vpPoint > &  points)

Get the 3D points of the clipped region of interest.

Warning
Suppose that changeFrame() and computePolygonClipped() have already been called.
Parameters
points: resulting points.

Definition at line 428 of file vpPolygon3D.cpp.

References polyClipped.

vpPolygon3D & vpPolygon3D::operator= ( const vpPolygon3D mbtp)

Definition at line 70 of file vpPolygon3D.cpp.

References clippingFlag, distFarClip, distNearClip, nbCornersInsidePrev, nbpt, p, and polyClipped.

Referenced by vpMbtPolygon::operator=().

bool vpPolygon3D::roiInsideImage ( const vpImage< unsigned char > &  I,
const std::vector< vpImagePoint > &  corners 
)
static

Static method to check whether the region defined by the vector of image point is contained entirely in the image.

Parameters
I: The image used for its size.
corners: The vector of points defining a region

Definition at line 640 of file vpPolygon3D.cpp.

References vpImage< Type >::getHeight(), and vpImage< Type >::getWidth().

void vpPolygon3D::setClipping ( const unsigned int &  flags)
inline

Specify which clipping to use.

See Also
vpPolygon3DClipping
Parameters
flags: New clipping flags.

Definition at line 189 of file vpPolygon3D.h.

Referenced by vpMbEdgeTracker::addLine(), getClippedPolygon(), and vpMbEdgeTracker::setClipping().

void vpPolygon3D::setFarClippingDistance ( const double &  dist)
inline

Set the far distance for clipping.

Parameters
dist: Far clipping value.

Definition at line 196 of file vpPolygon3D.h.

References FAR_CLIPPING.

Referenced by vpMbEdgeTracker::addLine(), getClippedPolygon(), and vpMbEdgeTracker::setFarClippingDistance().

void vpPolygon3D::setNbPoint ( const unsigned int  nb)
virtual

Set the number of points which are the corners of the polygon.

Parameters
nb: The number of corners.

Definition at line 121 of file vpPolygon3D.cpp.

References nbpt, and p.

Referenced by vpMbTracker::addPolygon(), vpMbtDistanceLine::buildFrom(), and getClippedPolygon().

void vpPolygon3D::setNearClippingDistance ( const double &  dist)
inline

Set the near distance for clipping.

Parameters
dist: Near clipping value.

Definition at line 205 of file vpPolygon3D.h.

References NEAR_CLIPPING.

Referenced by vpMbEdgeTracker::addLine(), getClippedPolygon(), and vpMbEdgeTracker::setNearClippingDistance().

Member Data Documentation

unsigned int vpPolygon3D::clippingFlag

Clipping flag.

Definition at line 85 of file vpPolygon3D.h.

Referenced by computePolygonClipped(), vpMbtPolygon::isVisible(), and operator=().

double vpPolygon3D::distFarClip

Distance for near clipping.

Definition at line 89 of file vpPolygon3D.h.

Referenced by computePolygonClipped(), and operator=().

double vpPolygon3D::distNearClip

Distance for near clipping.

Definition at line 87 of file vpPolygon3D.h.

Referenced by computePolygonClipped(), and operator=().

unsigned int vpPolygon3D::nbCornersInsidePrev

Number of corners inside the image during the last call to getNbCornerInsideImage.

Definition at line 79 of file vpPolygon3D.h.

Referenced by getNbCornerInsideImage(), and operator=().

unsigned int vpPolygon3D::nbpt

Number of points used to define the polygon.

Definition at line 77 of file vpPolygon3D.h.

Referenced by changeFrame(), computePolygonClipped(), getNbCornerInsideImage(), getPoint(), getRoi(), vpMbtPolygon::isVisible(), operator=(), setNbPoint(), and vpPolygon3D().

std::vector<std::pair<vpPoint,unsigned int> > vpPolygon3D::polyClipped