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
00029 #ifndef HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN
00030 #define HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN
00031
00032 #ifndef EIGEN_MATRIXBASE_PLUGIN
00033 #define EIGEN_MATRIXBASE_PLUGIN <hector_pose_estimation/Eigen/MatrixBaseAddons.h>
00034 #endif
00035
00036 #else // HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN
00037
00038 Derived& setSymmetric() {
00039 EIGEN_STATIC_ASSERT((RowsAtCompileTime == ColsAtCompileTime) ||
00040 (RowsAtCompileTime == Dynamic) ||
00041 (ColsAtCompileTime == Dynamic),
00042 THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE);
00043 *this = (*this + this->transpose()) / Scalar(2);
00044 return derived();
00045 }
00046
00047 Derived& assertSymmetric() {
00048 EIGEN_STATIC_ASSERT((RowsAtCompileTime == ColsAtCompileTime) ||
00049 (RowsAtCompileTime == Dynamic) ||
00050 (ColsAtCompileTime == Dynamic),
00051 THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE);
00052 #if defined(ASSERT_SYMMETRIC_MATRIX_TO_BE_SYMMETRIC)
00053 eigen_assert(this->isApprox(this->transpose(), ASSERT_SYMMETRIC_MATRIX_TO_BE_SYMMETRIC_PRECISION));
00054 #endif
00055 #if defined(FORCE_SYMMETRIC_MATRIX_TO_BE_SYMMETRIC)
00056 return setSymmetric();
00057 #else
00058 return derived();
00059 #endif
00060 }
00061
00062 Derived symmetric() const {
00063 EIGEN_STATIC_ASSERT((RowsAtCompileTime == ColsAtCompileTime) ||
00064 (RowsAtCompileTime == Dynamic) ||
00065 (ColsAtCompileTime == Dynamic),
00066 THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE);
00067 return (*this + this->transpose()) / Scalar(2);
00068 }
00069
00070 #endif // HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN