122 template <
class DERIVEDCLASS, std::
size_t DIM>
126 mrpt::poses::detail::T3DTypeHelper<DERIVEDCLASS>::is_3D_val>
131 return *
static_cast<const DERIVEDCLASS*
>(
this);
133 DERIVEDCLASS&
derived() {
return *
static_cast<DERIVEDCLASS*
>(
this); }
143 inline double x() const
147 inline double y() const
161 inline void x(
const double v)
165 inline void y(
const double v)
182 return DERIVEDCLASS::is_3D_val != 0;
186 template <
class OTHERCLASS, std::
size_t DIM2>
191 if (
b.is3DPoseOrPoint())
197 static_cast<const OTHERCLASS*
>(&
b)->m_coords[2]);
200 square(static_cast<const OTHERCLASS*>(&
b)->m_coords[2]);
206 square(static_cast<const OTHERCLASS*>(&
b)->m_coords[2]);
213 template <
class OTHERCLASS, std::
size_t DIM2>
277 template <
class MATRIX44>
281 derived().getHomogeneousMatrix(m);
289 template <
class MATRIX44>
292 derived().getHomogeneousMatrix(out_HM);
297 template <
class MATRIX44>
A compile-time fixed-size numeric matrix container.
const DERIVEDCLASS & derived() const
double distanceTo(const mrpt::math::TPoint3D &b) const
Returns the euclidean distance to a 3D point:
MATRIX44 getInverseHomogeneousMatrixVal() const
double sqrDistanceTo(const CPoseOrPoint< OTHERCLASS, DIM2 > &b) const
Returns the squared euclidean distance to another pose/point:
double distance3DTo(double ax, double ay, double az) const
Returns the 3D distance from this pose/point to a 3D point.
double distance3DToSquare(double ax, double ay, double az) const
Returns the squared 3D distance from this pose/point to a 3D point.
double distanceTo(const CPoseOrPoint< OTHERCLASS, DIM2 > &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)...
T square(const T x)
Inline function for the square of a number.
void getInverseHomogeneousMatrix(MATRIX44 &out_HM) const
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose...
double x() const
Common members of all points & poses classes.
void y_incr(const double v)
The base template class for 2D & 3D points and poses.
double norm() const
Returns the euclidean norm of vector: .
static bool is3DPoseOrPoint()
Return true for poses or points with a Z component, false otherwise.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void x_incr(const double v)
void homogeneousMatrixInverse(const MATRIXLIKE1 &M, MATRIXLIKE2 &out_inverse_M)
Efficiently compute the inverse of a 4x4 homogeneous matrix by only transposing the rotation 3x3 part...
double distance2DTo(double ax, double ay) const
Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
virtual void setToNaN()=0
Set all data fields to quiet NaN.
MATRIX44 getHomogeneousMatrixVal() const
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (t...
vector_t asVectorVal() const
Return the pose or point as a 1xN vector with all the components (see derived classes for each implem...