9 #ifndef mrpt_math_forwddecls_H 10 #define mrpt_math_forwddecls_H 12 #include <mrpt/config.h> 48 template <
typename MAT,
int TypeSizeAtCompileTime>
53 template <
typename MAT>
78 template <
class T>
class CMatrixTemplate;
79 template <
class T>
class CMatrixTemplateObjects;
80 template <
class T>
class CQuaternion;
84 template <
typename CONTAINER>
struct ContainerType {
88 #define MRPT_MATRIX_CONSTRUCTORS_FROM_POSES(_CLASS_) \ 89 explicit inline _CLASS_( const mrpt::math::TPose2D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 90 explicit inline _CLASS_( const mrpt::math::TPose3D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 91 explicit inline _CLASS_( const mrpt::math::TPose3DQuat &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 92 explicit inline _CLASS_( const mrpt::math::TPoint2D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 93 explicit inline _CLASS_( const mrpt::math::TPoint3D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 94 explicit inline _CLASS_( const mrpt::poses::CPose2D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 95 explicit inline _CLASS_( const mrpt::poses::CPose3D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 96 explicit inline _CLASS_( const mrpt::poses::CPose3DQuat &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 97 explicit inline _CLASS_( const mrpt::poses::CPoint2D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } \ 98 explicit inline _CLASS_( const mrpt::poses::CPoint3D &p) { mrpt::math::containerFromPoseOrPoint(*this,p); } 101 template <
class CONTAINER1,
class CONTAINER2>
void cumsum(
const CONTAINER1 &in_data, CONTAINER2 &out_cumsum);
106 template <
class MAT_A,
class SKEW_3VECTOR,
class MAT_OUT>
void multiply_A_skew3(
const MAT_A &A,
const SKEW_3VECTOR &
v, MAT_OUT &out);
107 template <
class SKEW_3VECTOR,
class MAT_A,
class MAT_OUT>
void multiply_skew3_A(
const SKEW_3VECTOR &
v,
const MAT_A &A, MAT_OUT &out);
118 template <
class MATORG,
class MATDEST>
121 const size_t first_row,
122 const size_t first_col,
127 template <
class CONTAINER,
class POINT_OR_POSE>
153 template<
typename MatrixType,
typename T,
typename ReturnType,
size_t D>
struct getVicinity;
TConstructorFlags_Matrices
For usage in one of the constructors of CMatrixFixedNumeric or CMatrixTemplate (and derived classes)...
TPoint2D BASE_IMPEXP lightFromPose(const mrpt::poses::CPoint2D &p)
Convert a pose into a light-weight structure (functional form, needed for forward declarations) ...
engineering format 'e'
static void internal_resize(MAT &, size_t)
void multiply_A_skew3(const MAT_A &A, const SKEW_3VECTOR &v, MAT_OUT &out)
Only for vectors/arrays "v" of length3, compute out = A * Skew(v), where Skew(v) is the skew symmetri...
GLsizei GLsizei GLuint * obj
CONTAINER & containerFromPoseOrPoint(CONTAINER &C, const POINT_OR_POSE &p)
Conversion of poses (TPose2D,TPoint2D,..., mrpt::poses::CPoint2D,CPose3D,...) to MRPT containers (vec...
static void internal_resize(MAT &obj, size_t nsize)
void extractMatrix(const MATORG &M, const size_t first_row, const size_t first_col, MATDEST &outMat)
Extract a submatrix - The output matrix must be set to the required size before call.
The purpose of this class is to model traits for containers, so that they can be used as return value...
static void internal_resize(MAT &obj, size_t row, size_t col)
T wrapTo2Pi(T a)
Modifies the given angle to translate it into the [0,2pi[ range.
A class used to store a 3D pose as a translation (x,y,z) and a quaternion (qr,qx,qy,qz).
GLsizei const GLchar ** string
A class used to store a 2D point.
A class used to store a 3D point.
static void internal_resize(MAT &, size_t, size_t)
void cumsum(const CONTAINER1 &in_data, CONTAINER2 &out_cumsum)
CONTAINER::Scalar norm_inf(const CONTAINER &v)
Internal resize which compiles to nothing on fixed-size matrices.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
GLenum GLenum GLvoid * row
CONTAINER::value_type element_t
This huge template encapsulates a function to get the vicinity of an element, with maximum genericity...
void multiply_skew3_A(const SKEW_3VECTOR &v, const MAT_A &A, MAT_OUT &out)
Only for vectors/arrays "v" of length3, compute out = Skew(v) * A, where Skew(v) is the skew symmetri...
std::string BASE_IMPEXP MRPT_getVersion()
Returns a string describing the MRPT version.
GLubyte GLubyte GLubyte a
fixed floating point 'f'
CONTAINER::Scalar norm(const CONTAINER &v)