10 #define CPOSEORPOINT_H 124 template <
class DERIVEDCLASS>
128 mrpt::poses::detail::T3DTypeHelper<DERIVEDCLASS>::is_3D_val>
135 inline double x() const
137 return static_cast<const DERIVEDCLASS*
>(
this)->m_coords[0];
139 inline double y() const
141 return static_cast<const DERIVEDCLASS*
>(
this)->m_coords[1];
146 return static_cast<DERIVEDCLASS*
>(
this)->m_coords[0];
150 return static_cast<DERIVEDCLASS*
>(
this)->m_coords[1];
153 inline void x(
const double v)
155 static_cast<DERIVEDCLASS*
>(
this)->m_coords[0] =
v;
157 inline void y(
const double v)
159 static_cast<DERIVEDCLASS*
>(
this)->m_coords[1] =
v;
164 static_cast<DERIVEDCLASS*
>(
this)->m_coords[0] +=
v;
168 static_cast<DERIVEDCLASS*
>(
this)->m_coords[1] +=
v;
174 return DERIVEDCLASS::is_3D_val != 0;
178 template <
class OTHERCLASS>
183 if (
b.is3DPoseOrPoint())
188 static_cast<const DERIVEDCLASS*>(
this)->m_coords[2] -
189 static_cast<const OTHERCLASS*
>(&
b)->m_coords[2]);
192 square(static_cast<const OTHERCLASS*>(&
b)->m_coords[2]);
198 square(static_cast<const OTHERCLASS*>(&
b)->m_coords[2]);
205 template <
class OTHERCLASS>
227 ? static_cast<const DERIVEDCLASS*>(
this)->m_coords[2]
260 static_cast<const DERIVEDCLASS*>(
this)->m_coords[2])));
268 static_cast<const DERIVEDCLASS*
>(
this)->getAsVector(
v);
279 static_cast<const DERIVEDCLASS*
>(
this)->getHomogeneousMatrix(m);
290 static_cast<const DERIVEDCLASS*
>(
this)->getHomogeneousMatrix(out_HM);
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.
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...
mrpt::math::CMatrixDouble44 getHomogeneousMatrixVal() const
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (t...
T square(const T x)
Inline function for the square of a number.
mrpt::math::CMatrixDouble44 getInverseHomogeneousMatrix() const
A numeric matrix of compile-time fixed size.
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:
void getInverseHomogeneousMatrix(mrpt::math::CMatrixDouble44 &out_HM) const
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose...
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...
T square(const T x)
Inline function for the square of a number.
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.