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 CMATRIXD_H
00029 #define CMATRIXD_H
00030
00031 #include <mrpt/utils/CSerializable.h>
00032 #include <mrpt/math/CMatrixTemplateNumeric.h>
00033 #include <mrpt/utils/CStream.h>
00034 #include <mrpt/utils/utils_defs.h>
00035
00036
00037 namespace mrpt
00038 {
00039 namespace math
00040 {
00041
00042
00043
00044 DEFINE_MRPT_OBJECT_PRE_CUSTOM_BASE_LINKAGE2(CMatrixD, mrpt::utils::CSerializable, CMatrixD)
00045 BASE_IMPEXP ::mrpt::utils::CStream& operator>>(mrpt::utils::CStream& in, CMatrixDPtr &pObj);
00046
00047
00048
00049
00050 class CMatrixD : public mrpt::utils::CSerializable, public CMatrixTemplateNumeric<double>
00051 {
00052
00053
00054
00055 protected:
00056 static const mrpt::utils::TRuntimeClassId* _GetBaseClass();
00057 static mrpt::utils::CLASSINIT _init_CMatrixD;
00058 public:
00059
00060 typedef CMatrixDPtr SmartPtr;
00061 static BASE_IMPEXP mrpt::utils::TRuntimeClassId classCMatrixD;
00062 static BASE_IMPEXP const mrpt::utils::TRuntimeClassId *classinfo;
00063 virtual BASE_IMPEXP const mrpt::utils::TRuntimeClassId* GetRuntimeClass() const;
00064 static BASE_IMPEXP mrpt::utils::CObject* CreateObject();
00065 static BASE_IMPEXP CMatrixDPtr Create();
00066 virtual BASE_IMPEXP mrpt::utils::CObject *duplicate() const;
00067 protected:
00068
00069
00070 BASE_IMPEXP void writeToStream(mrpt::utils::CStream &out, int *getVersion) const;
00071 BASE_IMPEXP void readFromStream(mrpt::utils::CStream &in, int version);
00072
00073
00074 public:
00075
00076 CMatrixD() : CMatrixTemplateNumeric<double>(1,1)
00077 { }
00078
00079
00080 CMatrixD(size_t row, size_t col) : CMatrixTemplateNumeric<double>(row,col)
00081 { }
00082
00083
00084 CMatrixD( const CMatrixTemplateNumeric<double> &m ) : CMatrixTemplateNumeric<double>(m)
00085 { }
00086
00087
00088
00089 CMatrixD( const CMatrixFloat &m ) : CMatrixTemplateNumeric<double>(0,0)
00090 {
00091 *this = m.eval().cast<double>();
00092 }
00093
00094
00095 template<typename OtherDerived>
00096 inline CMatrixD & operator= (const Eigen::MatrixBase <OtherDerived>& other) {
00097 CMatrixTemplateNumeric<double>::operator=(other);
00098 return *this;
00099 }
00100
00101 template<typename OtherDerived>
00102 inline CMatrixD(const Eigen::MatrixBase <OtherDerived>& other) : CMatrixTemplateNumeric<double>(other) { }
00103
00104
00105
00106 explicit CMatrixD( const TPose2D &p) : CMatrixDouble(p) {}
00107
00108
00109
00110 explicit CMatrixD( const TPose3D &p) : CMatrixDouble(p) {}
00111
00112
00113
00114 explicit CMatrixD( const TPoint2D &p) : CMatrixDouble(p) {}
00115
00116
00117
00118 explicit CMatrixD( const TPoint3D &p) : CMatrixDouble(p) {}
00119
00120
00121
00122
00123 template <class OTHERMAT>
00124 inline CMatrixD & operator = (const OTHERMAT& m)
00125 {
00126 CMatrixDouble::operator =(m);
00127 return *this;
00128 }
00129
00130 };
00131
00132 }
00133 }
00134
00135 #endif