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>
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction.
The base template class for 2D & 3D points and poses.
static bool is3DPoseOrPoint()
Return true for poses or points with a Z component, false otherwise.
double x() const
Common members of all points & poses classes.
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).
MATRIX44 getHomogeneousMatrixVal() const
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (t...
double distanceTo(const mrpt::math::TPoint3D &b) const
Returns the euclidean distance to a 3D point:
void y_incr(const double v)
double norm() const
Returns the euclidean norm of vector: .
void getInverseHomogeneousMatrix(MATRIX44 &out_HM) const
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose.
MATRIX44 getInverseHomogeneousMatrixVal() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
double sqrDistanceTo(const CPoseOrPoint< OTHERCLASS > &b) const
Returns the squared euclidean distance to another pose/point:
double distance3DToSquare(double ax, double ay, double az) const
Returns the squared 3D distance from this pose/point to a 3D point.
void x_incr(const double v)
double distance3DTo(double ax, double ay, double az) const
Returns the 3D distance from this pose/point to a 3D point.
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...
const DERIVEDCLASS & derived() const
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.
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...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
T square(const T x)
Inline function for the square of a number.