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.
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 and inverse pose compounding
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 | +-------------------------+
Definition at line 121 of file CPoseOrPoint.h.
#include <mrpt/poses/CPoseOrPoint.h>
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: ![]() | |
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. |
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::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 176 of file CPoseOrPoint.h.
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::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 168 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoseOrPoint< CPoint3D >::distance2DTo().
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DTo | ( | double | ax, |
double | ay, | ||
double | az | ||
) | const [inline] |
Returns the 3D distance from this pose/point to a 3D point.
Definition at line 179 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoseOrPoint< CPoint3D >::distanceTo().
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::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 171 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoseOrPoint< CPoint3D >::distance3DTo().
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distanceTo | ( | const mrpt::math::TPoint3D & | b ) | const [inline] |
Returns the euclidean distance to a 3D point:
Definition at line 182 of file CPoseOrPoint.h.
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distanceTo | ( | const CPoseOrPoint< OTHERCLASS > & | b ) | const [inline] |
Returns the Euclidean distance to another pose/point:
Definition at line 162 of file CPoseOrPoint.h.
vector_double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::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 191 of file CPoseOrPoint.h.
CMatrixDouble44 mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::getHomogeneousMatrixVal | ( | ) | const [inline] |
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation).
Reimplemented in mrpt::poses::CPose3D.
Definition at line 201 of file CPoseOrPoint.h.
void mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::getInverseHomogeneousMatrix | ( | math::CMatrixDouble44 & | out_HM ) | const [inline] |
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose.
Definition at line 211 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPose< DERIVEDCLASS >::operator-().
mrpt::math::CMatrixDouble44 mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::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 218 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoseOrPoint< CPoint3D >::getInverseHomogeneousMatrix().
static bool mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::is3DPoseOrPoint | ( | ) | [inline, static] |
Return true for poses or points with a Z component, false otherwise.
Definition at line 141 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoint< CPoint3D >::asString(), mrpt::poses::CPoseOrPoint< CPoint3D >::distance3DToSquare(), mrpt::poses::CPoseOrPoint< CPoint3D >::norm(), and mrpt::poses::CPoseOrPoint< CPoint3D >::sqrDistanceTo().
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::norm | ( | ) | const [inline] |
Returns the euclidean norm of vector: .
Definition at line 185 of file CPoseOrPoint.h.
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::sqrDistanceTo | ( | const CPoseOrPoint< OTHERCLASS > & | b ) | const [inline] |
Returns the squared euclidean distance to another pose/point:
Definition at line 144 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoseOrPoint< CPoint3D >::distanceTo().
double& mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x | ( | ) | [inline] |
Definition at line 130 of file CPoseOrPoint.h.
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x | ( | ) | const [inline] |
Common members of all points & poses classes.
< Get X coord.
Definition at line 127 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoint2D::CPoint2D(), mrpt::poses::CPoint3D::CPoint3D(), mrpt::poses::CPoseOrPoint< CPoint3D >::distance2DToSquare(), mrpt::poses::CPoseOrPoint< CPoint3D >::distance3DToSquare(), mrpt::poses::SE_traits< 2 >::exp(), mrpt::poses::CPoint< CPoint3D >::getHomogeneousMatrix(), mrpt::poses::CRobot2DPoseEstimator::getLatestRobotPose(), mrpt::slam::CPointsMap::insertPoint(), mrpt::poses::SE_traits< 2 >::ln(), mrpt::poses::CPoseOrPoint< CPoint3D >::norm(), and mrpt::poses::CPoseOrPoint< CPoint3D >::sqrDistanceTo().
void mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x | ( | const double | v ) | [inline] |
v | Set X coord. |
Definition at line 133 of file CPoseOrPoint.h.
void mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x_incr | ( | const double | v ) | [inline] |
v | X+=v |
Definition at line 136 of file CPoseOrPoint.h.
double& mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y | ( | ) | [inline] |
Definition at line 131 of file CPoseOrPoint.h.
double mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y | ( | ) | const [inline] |
< Get Y coord.
Definition at line 128 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoint< CPoint3D >::asString(), mrpt::poses::CPoint2D::CPoint2D(), mrpt::poses::CPoint3D::CPoint3D(), mrpt::poses::CPoseOrPoint< CPoint3D >::distance2DToSquare(), mrpt::poses::CPoseOrPoint< CPoint3D >::distance3DToSquare(), mrpt::poses::SE_traits< 2 >::exp(), mrpt::poses::CPoint< CPoint3D >::getHomogeneousMatrix(), mrpt::poses::CRobot2DPoseEstimator::getLatestRobotPose(), mrpt::slam::CPointsMap::insertPoint(), mrpt::poses::SE_traits< 2 >::ln(), mrpt::poses::CPoseOrPoint< CPoint3D >::norm(), mrpt::poses::operator<(), and mrpt::poses::CPoseOrPoint< CPoint3D >::sqrDistanceTo().
void mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y | ( | const double | v ) | [inline] |
v | Set Y coord. |
Definition at line 134 of file CPoseOrPoint.h.
void mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y_incr | ( | const double | v ) | [inline] |
v | Y+=v |
Definition at line 137 of file CPoseOrPoint.h.
Page generated by Doxygen 1.7.2 for MRPT 0.9.4 SVN: at Mon Jan 10 22:30:30 UTC 2011 |