Main MRPT website > C++ reference
MRPT logo
mrpt::poses::CPoseOrPoint Class Reference

Detailed Description

The base template class for 2D & 3D points and poses.

This class use the Curiously Recurring Template Pattern (CRTP) to define a set of common methods to all the children classes without the cost of virtual methods. Since most important methods are inline, they will be expanded at compile time and optimized for every specific derived case.

For more information and examples, refer to the 2D/3D Geometry tutorial online.

Introduction to 2D and 3D representation classes


There are two class of spatial representation classes:

Homogeneous matrices: These are 4x4 matrices which can represent any translation or rotation in 2D & 3D. See the tutorial online for more details. *

Operators: There are operators defined for the pose compounding $ \oplus $ and inverse pose compounding $ \ominus $ of poses and points. For example, let "a" and "b" be 2D or 3D poses. Then "a+b" returns the resulting pose of "moving b" from "a"; and "b-a" returns the pose of "b" as it is seen "from a". They can be mixed points and poses, being 2D or 3D, in these operators, with the following results:

  Does "a+b" return a Pose or a Point?
 +---------------------------------+
 |  a \ b   |  Pose     |  Point   |
 +----------+-----------+----------+
 | Pose     |  Pose     |  Point   |
 | Point    |  Pose     |  Point   |
 +---------------------------------+
  Does "a-b" return a Pose or a Point?
 +---------------------------------+
 |  a \ b   |  Pose     |  Point   |
 +----------+-----------+----------+
 | Pose     |  Pose     |  Pose    |
 | Point    |  Point    |  Point   |
 +---------------------------------+
  Does "a+b" and "a-b" return a 2D or 3D object?
 +-------------------------+
 |  a \ b   |  2D   |  3D  |
 +----------+--------------+
 |  2D      |  2D   |  3D  |
 |  3D      |  3D   |  3D  |
 +-------------------------+
  
See also:
CPose,CPoint

#include <mrpt/poses/CPoseOrPoint.h>

Inheritance diagram for mrpt::poses::CPoseOrPoint:
Inheritance graph
[legend]

List of all members.

double x () const
 Common members of all points & poses classes.
double y () const
double & x ()
double & y ()
void x (const double v)
void y (const double v)
void x_incr (const double v)
void y_incr (const double v)
template<class OTHERCLASS >
double sqrDistanceTo (const CPoseOrPoint< OTHERCLASS > &b) const
 Returns the squared euclidean distance to another pose/point:
template<class OTHERCLASS >
double distanceTo (const CPoseOrPoint< OTHERCLASS > &b) const
 Returns the Euclidean distance to another pose/point:
double distance2DToSquare (double ax, double ay) const
 Returns the squared 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
double distance3DToSquare (double ax, double ay, double az) const
 Returns the squared 3D distance from this pose/point to a 3D point.
double distance2DTo (double ax, double ay) const
 Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
double distance3DTo (double ax, double ay, double az) const
 Returns the 3D distance from this pose/point to a 3D point.
double distanceTo (const mrpt::math::TPoint3D &b) const
 Returns the euclidean distance to a 3D point:
double norm () const
 Returns the euclidean norm of vector: $ ||\mathbf{x}|| = \sqrt{x^2+y^2+z^2} $.
vector_double getAsVectorVal () const
 Return the pose or point as a 1xN vector with all the components (see derived classes for each implementation)
CMatrixDouble44 getHomogeneousMatrixVal () const
 Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation).
void getInverseHomogeneousMatrix (math::CMatrixDouble44 &out_HM) const
 Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose.
mrpt::math::CMatrixDouble44 getInverseHomogeneousMatrix () const
static bool is3DPoseOrPoint ()
 Return true for poses or points with a Z component, false otherwise.

Member Function Documentation

double mrpt::poses::CPoseOrPoint::distance2DTo ( double  ax,
double  ay 
) const [inline]

Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists).

Definition at line 184 of file CPoseOrPoint.h.

double mrpt::poses::CPoseOrPoint::distance2DToSquare ( double  ax,
double  ay 
) const [inline]

Returns the squared 2D distance from this pose/point to a 2D point (ignores Z, if it exists).

Definition at line 176 of file CPoseOrPoint.h.

Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance2DTo().

double mrpt::poses::CPoseOrPoint::distance3DTo ( double  ax,
double  ay,
double  az 
) const [inline]

Returns the 3D distance from this pose/point to a 3D point.

Definition at line 187 of file CPoseOrPoint.h.

Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distanceTo().

double mrpt::poses::CPoseOrPoint::distance3DToSquare ( double  ax,
double  ay,
double  az 
) const [inline]

Returns the squared 3D distance from this pose/point to a 3D point.

Definition at line 179 of file CPoseOrPoint.h.

Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DTo().

template<class OTHERCLASS >
double mrpt::poses::CPoseOrPoint::distanceTo ( const CPoseOrPoint< OTHERCLASS > &  b) const [inline]

Returns the Euclidean distance to another pose/point:

Definition at line 170 of file CPoseOrPoint.h.

double mrpt::poses::CPoseOrPoint::distanceTo ( const mrpt::math::TPoint3D b) const [inline]

Returns the euclidean distance to a 3D point:

Definition at line 190 of file CPoseOrPoint.h.

vector_double mrpt::poses::CPoseOrPoint::getAsVectorVal ( ) const [inline]

Return the pose or point as a 1xN vector with all the components (see derived classes for each implementation)

Definition at line 199 of file CPoseOrPoint.h.

CMatrixDouble44 mrpt::poses::CPoseOrPoint::getHomogeneousMatrixVal ( ) const [inline]

Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation).

See also:
getInverseHomogeneousMatrix

Definition at line 209 of file CPoseOrPoint.h.

void mrpt::poses::CPoseOrPoint::getInverseHomogeneousMatrix ( math::CMatrixDouble44 out_HM) const [inline]

Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose.

See also:
getHomogeneousMatrix

Definition at line 219 of file CPoseOrPoint.h.

mrpt::math::CMatrixDouble44 mrpt::poses::CPoseOrPoint::getInverseHomogeneousMatrix ( ) const [inline]

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 226 of file CPoseOrPoint.h.

Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::getInverseHomogeneousMatrix().

static bool mrpt::poses::CPoseOrPoint::is3DPoseOrPoint ( ) [inline, static]
double mrpt::poses::CPoseOrPoint::norm ( ) const [inline]

Returns the euclidean norm of vector: $ ||\mathbf{x}|| = \sqrt{x^2+y^2+z^2} $.

Definition at line 193 of file CPoseOrPoint.h.

template<class OTHERCLASS >
double mrpt::poses::CPoseOrPoint::sqrDistanceTo ( const CPoseOrPoint< OTHERCLASS > &  b) const [inline]

Returns the squared euclidean distance to another pose/point:

Definition at line 152 of file CPoseOrPoint.h.

Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distanceTo().

double mrpt::poses::CPoseOrPoint::x ( ) const [inline]
double& mrpt::poses::CPoseOrPoint::x ( ) [inline]

Definition at line 138 of file CPoseOrPoint.h.

void mrpt::poses::CPoseOrPoint::x ( const double  v) [inline]
Parameters:
vSet X coord.

Definition at line 141 of file CPoseOrPoint.h.

void mrpt::poses::CPoseOrPoint::x_incr ( const double  v) [inline]
Parameters:
vX+=v

Definition at line 144 of file CPoseOrPoint.h.

double mrpt::poses::CPoseOrPoint::y ( ) const [inline]
double& mrpt::poses::CPoseOrPoint::y ( ) [inline]

Definition at line 139 of file CPoseOrPoint.h.

void mrpt::poses::CPoseOrPoint::y ( const double  v) [inline]
Parameters:
vSet Y coord.

Definition at line 142 of file CPoseOrPoint.h.

void mrpt::poses::CPoseOrPoint::y_incr ( const double  v) [inline]
Parameters:
vY+=v

Definition at line 145 of file CPoseOrPoint.h.




Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011