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 #include "rotationalinertia.hpp"
00023 #include <Eigen/Core>
00024 using namespace Eigen;
00025
00026 namespace KDL
00027 {
00028 RotationalInertia::RotationalInertia(double Ixx,double Iyy,double Izz,double Ixy,double Ixz,double Iyz)
00029 {
00030 data[0]=Ixx;
00031 data[1]=data[3]=Ixy;
00032 data[2]=data[6]=Ixz;
00033 data[4]=Iyy;
00034 data[5]=data[7]=Iyz;
00035 data[8]=Izz;
00036
00037 }
00038
00039 RotationalInertia::~RotationalInertia()
00040 {
00041 }
00042
00043 Vector RotationalInertia::operator*(const Vector& omega) const {
00044
00045 Vector result;
00046 Map<Vector3d>(result.data)=Map<const Matrix3d>(this->data)*Map<const Vector3d>(omega.data);
00047 return result;
00048 }
00049
00050 RotationalInertia operator*(double a, const RotationalInertia& I){
00051 RotationalInertia result;
00052 Map<Matrix3d>(result.data)=a*Map<const Matrix3d>(I.data);
00053 return result;
00054 }
00055
00056 RotationalInertia operator+(const RotationalInertia& Ia, const RotationalInertia& Ib){
00057 RotationalInertia result;
00058 Map<Matrix3d>(result.data)=Map<const Matrix3d>(Ia.data)+Map<const Matrix3d>(Ib.data);
00059 return result;
00060 }
00061 }
00062