MRPT  1.9.9
mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM > Class Template Referenceabstract

## Detailed Description

### template<class DERIVEDCLASS, std::size_t DIM> class mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >

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:

• Point: A point in the common mathematical sense, with no directional information.
• 2D: A 2D point is represented just by its coordinates (x,y).
• 3D: A 3D point is represented by its coordinates (x,y,z).
• Pose: It is a point, plus a direction.

• 2D: A 2D pose is a 2D point plus a single angle, the yaw or &#966; angle: the angle from the positive X angle.
• 3D: A 3D point is a 3D point plus three orientation angles (More details above).

In the case for a 3D orientation many representation angles can be used (Euler angles,yaw/pitch/roll,...) but all of them can be handled by a 4x4 matrix called "Homogeneous Matrix". This matrix includes both, the translation and the orientation for a point or a pose, and it can be obtained using the method getHomogeneousMatrix() which is defined for any pose or point. Note that when the YPR angles are used to define a 3D orientation, these three values can not be extracted from the matrix again.

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  |
+-------------------------+

CPose,CPoint

Definition at line 123 of file CPoseOrPoint.h.

#include <mrpt/poses/CPoseOrPoint.h>

Inheritance diagram for mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >:

## Public Types

using vector_t = mrpt::math::CVectorFixedDouble< DIM >
Fixed-size vector of the correct size to hold all the coordinates of the point/pose. More...

## Public Member Functions

const DERIVEDCLASS & derived () const

DERIVEDCLASS & derived ()

double x () const
Common members of all points & poses classes. More...

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 , std::size_t DIM2>
double sqrDistanceTo (const CPoseOrPoint< OTHERCLASS, DIM2 > &b) const
Returns the squared euclidean distance to another pose/point: More...

template<class OTHERCLASS , std::size_t DIM2>
double distanceTo (const CPoseOrPoint< OTHERCLASS, DIM2 > &b) const
Returns the Euclidean distance to another pose/point: More...

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). More...

double distance3DToSquare (double ax, double ay, double az) const
Returns the squared 3D distance from this pose/point to a 3D point. More...

double distance2DTo (double ax, double ay) const
Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists). More...

double distance3DTo (double ax, double ay, double az) const
Returns the 3D distance from this pose/point to a 3D point. More...

double distanceTo (const mrpt::math::TPoint3D &b) const
Returns the euclidean distance to a 3D point: More...

double norm () const
Returns the euclidean norm of vector: . More...

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

template<class MATRIX44 >
MATRIX44 getHomogeneousMatrixVal () const
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation). More...

template<class MATRIX44 >
void getInverseHomogeneousMatrix (MATRIX44 &out_HM) const
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose. More...

template<class MATRIX44 >
MATRIX44 getInverseHomogeneousMatrixVal () const

virtual void setToNaN ()=0
Set all data fields to quiet NaN. More...

static bool is3DPoseOrPoint ()
Return true for poses or points with a Z component, false otherwise. More...

## ◆ vector_t

template<class DERIVEDCLASS, std::size_t DIM>
 using mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::vector_t = mrpt::math::CVectorFixedDouble

Fixed-size vector of the correct size to hold all the coordinates of the point/pose.

Definition at line 137 of file CPoseOrPoint.h.

## ◆ asVectorVal()

template<class DERIVEDCLASS, std::size_t DIM>
 vector_t mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::asVectorVal ( ) const
inline

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

Definition at line 266 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ derived() [1/2]

template<class DERIVEDCLASS, std::size_t DIM>
 const DERIVEDCLASS& mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::derived ( ) const
inline

Definition at line 129 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ derived() [2/2]

template<class DERIVEDCLASS, std::size_t DIM>
 DERIVEDCLASS& mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::derived ( )
inline

Definition at line 133 of file CPoseOrPoint.h.

## ◆ distance2DTo()

template<class DERIVEDCLASS, std::size_t DIM>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::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 237 of file CPoseOrPoint.h.

Referenced by mrpt::apps::CGridMapAlignerApp::run(), and mrpt::nav::PlannerRRT_SE2_TPS::solve().

Here is the caller graph for this function:

## ◆ distance2DToSquare()

template<class DERIVEDCLASS, std::size_t DIM>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::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 221 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ distance3DTo()

template<class DERIVEDCLASS, std::size_t DIM>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::distance3DTo ( double ax, double ay, double az ) const
inline

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

Definition at line 243 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ distance3DToSquare()

template<class DERIVEDCLASS, std::size_t DIM>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::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 228 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ distanceTo() [1/2]

template<class DERIVEDCLASS, std::size_t DIM>
template<class OTHERCLASS , std::size_t DIM2>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::distanceTo ( const CPoseOrPoint< OTHERCLASS, DIM2 > & b ) const
inline

Returns the Euclidean distance to another pose/point:

Definition at line 214 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ distanceTo() [2/2]

template<class DERIVEDCLASS, std::size_t DIM>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::distanceTo ( const mrpt::math::TPoint3D & b ) const
inline

Returns the euclidean distance to a 3D point:

Definition at line 249 of file CPoseOrPoint.h.

## ◆ getHomogeneousMatrixVal()

template<class DERIVEDCLASS, std::size_t DIM>
template<class MATRIX44 >
 MATRIX44 mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::getHomogeneousMatrixVal ( ) const
inline

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

getInverseHomogeneousMatrix

Definition at line 278 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ getInverseHomogeneousMatrix()

template<class DERIVEDCLASS, std::size_t DIM>
template<class MATRIX44 >
 void mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::getInverseHomogeneousMatrix ( MATRIX44 & out_HM ) const
inline

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

getHomogeneousMatrix

Definition at line 290 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ getInverseHomogeneousMatrixVal()

template<class DERIVEDCLASS, std::size_t DIM>
template<class MATRIX44 >
 MATRIX44 mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::getInverseHomogeneousMatrixVal ( ) 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 298 of file CPoseOrPoint.h.

Referenced by mrpt::poses::CPose2D::operator-().

Here is the caller graph for this function:

## ◆ is3DPoseOrPoint()

template<class DERIVEDCLASS, std::size_t DIM>
 static bool mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::is3DPoseOrPoint ( )
inlinestatic

Return true for poses or points with a Z component, false otherwise.

Definition at line 180 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ norm()

template<class DERIVEDCLASS, std::size_t DIM>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::norm ( ) const
inline

Returns the euclidean norm of vector: .

Definition at line 256 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ setToNaN()

template<class DERIVEDCLASS, std::size_t DIM>
 virtual void mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::setToNaN ( )
pure virtual

Set all data fields to quiet NaN.

## ◆ sqrDistanceTo()

template<class DERIVEDCLASS, std::size_t DIM>
template<class OTHERCLASS , std::size_t DIM2>
 double mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::sqrDistanceTo ( const CPoseOrPoint< OTHERCLASS, DIM2 > & b ) const
inline

Returns the squared euclidean distance to another pose/point:

Definition at line 187 of file CPoseOrPoint.h.

Referenced by mrpt::poses::CPoseOrPoint< CPose2D, DIM >::distanceTo().

Here is the caller graph for this function:

## ◆ x() [2/3]

template<class DERIVEDCLASS, std::size_t DIM>
 double& mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x ( )
inline

Definition at line 152 of file CPoseOrPoint.h.

## ◆ x() [3/3]

template<class DERIVEDCLASS, std::size_t DIM>
 void mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x ( const double v )
inline
Parameters
 v Set X coord.

Definition at line 161 of file CPoseOrPoint.h.

## ◆ x_incr()

template<class DERIVEDCLASS, std::size_t DIM>
 void mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x_incr ( const double v )
inline
Parameters
 v X+=v

Definition at line 170 of file CPoseOrPoint.h.

Here is the caller graph for this function:

## ◆ y() [2/3]

template<class DERIVEDCLASS, std::size_t DIM>
 double& mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y ( )
inline

Definition at line 156 of file CPoseOrPoint.h.

## ◆ y() [3/3]

template<class DERIVEDCLASS, std::size_t DIM>
 void mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y ( const double v )
inline
Parameters
 v Set Y coord.

Definition at line 165 of file CPoseOrPoint.h.

## ◆ y_incr()

template<class DERIVEDCLASS, std::size_t DIM>
 void mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y_incr ( const double v )
inline
Parameters
 v Y+=v

Definition at line 174 of file CPoseOrPoint.h.

Here is the caller graph for this function:

 Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: d1962bc6a Wed Jan 15 17:38:30 2020 +0100 at miĆ© ene 15 17:45:11 CET 2020