Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef CMATRIX_H
00029 #define CMATRIX_H
00030
00031 #include <mrpt/utils/CSerializable.h>
00032 #include <mrpt/math/CMatrixTemplateNumeric.h>
00033 #include <mrpt/math/CMatrixFixedNumeric.h>
00034 #include <mrpt/utils/CStream.h>
00035
00036 namespace mrpt
00037 {
00038 namespace math
00039 {
00040
00041
00042
00043 DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2(CMatrix, mrpt::utils::CSerializable, CMatrix)
00044 BASE_IMPEXP ::mrpt::utils::CStream& operator>>(mrpt::utils::CStream& in, CMatrixPtr &pObj);
00045
00046
00047
00048 class CMatrix : public mrpt::utils::CSerializable, public CMatrixFloat
00049 {
00050
00051
00052
00053 protected:
00054 static const mrpt::utils::TRuntimeClassId* _GetBaseClass();
00055 static mrpt::utils::CLASSINIT _init_CMatrix;
00056 public:
00057
00058 typedef CMatrixPtr SmartPtr;
00059 static BASE_IMPEXP mrpt::utils::TRuntimeClassId classCMatrix;
00060 static BASE_IMPEXP const mrpt::utils::TRuntimeClassId *classinfo;
00061 virtual BASE_IMPEXP const mrpt::utils::TRuntimeClassId* GetRuntimeClass() const;
00062 static BASE_IMPEXP mrpt::utils::CObject* CreateObject();
00063 static BASE_IMPEXP CMatrixPtr Create();
00064 virtual BASE_IMPEXP mrpt::utils::CObject *duplicate() const;
00065 protected:
00066
00067
00068 BASE_IMPEXP void writeToStream(mrpt::utils::CStream &out, int *getVersion) const;
00069 BASE_IMPEXP void readFromStream(mrpt::utils::CStream &in, int version);
00070
00071
00072 public:
00073
00074 CMatrix() : CMatrixFloat(1,1)
00075 { }
00076
00077
00078 CMatrix(size_t row, size_t col) : CMatrixFloat(row,col)
00079 { }
00080
00081
00082
00083 CMatrix( const CMatrixFloat &m ) : CMatrixFloat(m)
00084 { }
00085
00086
00087
00088 CMatrix( const CMatrixTemplateNumeric<double> &m ) : CMatrixFloat(0,0)
00089 {
00090 *this = m.eval().cast<float>();
00091 }
00092
00093
00094
00095 explicit CMatrix( const TPose2D &p) : CMatrixFloat(p) {}
00096
00097
00098
00099 explicit CMatrix( const TPose3D &p) : CMatrixFloat(p) {}
00100
00101
00102
00103 explicit CMatrix( const TPoint2D &p) : CMatrixFloat(p) {}
00104
00105
00106
00107 explicit CMatrix( const TPoint3D &p) : CMatrixFloat(p) {}
00108
00109
00110
00111 template <class OTHERMAT>
00112 inline CMatrix & operator = (const OTHERMAT& m)
00113 {
00114 CMatrixFloat::operator =(m);
00115 return *this;
00116 }
00117
00118
00119 template<typename OtherDerived>
00120 inline CMatrix & operator= (const Eigen::MatrixBase <OtherDerived>& other) {
00121 CMatrixTemplateNumeric<float>::operator=(other);
00122 return *this;
00123 }
00124
00125 template<typename OtherDerived>
00126 inline CMatrix(const Eigen::MatrixBase <OtherDerived>& other) : CMatrixTemplateNumeric<float>(other) { }
00127
00128 };
00129
00130 }
00131 }
00132
00133 #endif