124 template <
class DERIVEDCLASS>
128 mrpt::poses::detail::T3DTypeHelper<DERIVEDCLASS>::is_3D_val>
133 return *
static_cast<const DERIVEDCLASS*
>(
this);
135 DERIVEDCLASS&
derived() {
return *
static_cast<DERIVEDCLASS*
>(
this); }
140 inline double x() const
144 inline double y() const
158 inline void x(
const double v)
162 inline void y(
const double v)
179 return DERIVEDCLASS::is_3D_val != 0;
183 template <
class OTHERCLASS>
188 if (
b.is3DPoseOrPoint())
194 static_cast<const OTHERCLASS*
>(&
b)->m_coords[2]);
197 square(static_cast<const OTHERCLASS*>(&
b)->m_coords[2]);
203 square(static_cast<const OTHERCLASS*>(&
b)->m_coords[2]);
210 template <
class OTHERCLASS>
274 template <
class MATRIX44>
278 derived().getHomogeneousMatrix(m);
286 template <
class MATRIX44>
289 derived().getHomogeneousMatrix(out_HM);
294 template <
class MATRIX44>
double x() const
Common members of all points & poses classes.
double distanceTo(const CPoseOrPoint< OTHERCLASS > &b) const
Returns the Euclidean distance to another pose/point:
mrpt::math::CVectorDouble getAsVectorVal() const
Return the pose or point as a 1xN vector with all the components (see derived classes for each implem...
void y_incr(const double v)
static bool is3DPoseOrPoint()
Return true for poses or points with a Z component, false otherwise.
MATRIX44 getInverseHomogeneousMatrixVal() const
double distanceTo(const mrpt::math::TPoint3D &b) const
Returns the euclidean distance to a 3D point:
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction...
T square(const T x)
Inline function for the square of a number.
double norm() const
Returns the euclidean norm of vector: .
double sqrDistanceTo(const CPoseOrPoint< OTHERCLASS > &b) const
Returns the squared euclidean distance to another pose/point:
const DERIVEDCLASS & derived() const
void x_incr(const double v)
The base template class for 2D & 3D points and poses.
double distance2DTo(double ax, double ay) const
Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
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...
MATRIX44 getHomogeneousMatrixVal() const
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (t...
void getInverseHomogeneousMatrix(MATRIX44 &out_HM) const
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose...
double distance3DToSquare(double ax, double ay, double az) const
Returns the squared 3D distance from this pose/point to a 3D point.
virtual void setToNaN()=0
Set all data fields to quiet NaN.
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 distance3DTo(double ax, double ay, double az) const
Returns the 3D distance from this pose/point to a 3D point.