rotationalinertia.hpp

Go to the documentation of this file.
00001 // Copyright  (C)  2009  Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
00002 
00003 // Version: 1.0
00004 // Author: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
00005 // Maintainer: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
00006 // URL: http://www.orocos.org/kdl
00007 
00008 // This library is free software; you can redistribute it and/or
00009 // modify it under the terms of the GNU Lesser General Public
00010 // License as published by the Free Software Foundation; either
00011 // version 2.1 of the License, or (at your option) any later version.
00012 
00013 // This library is distributed in the hope that it will be useful,
00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016 // Lesser General Public License for more details.
00017 
00018 // You should have received a copy of the GNU Lesser General Public
00019 // License along with this library; if not, write to the Free Software
00020 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00021 
00022 #ifndef KDL_ROTATIONALINERTIA_HPP
00023 #define KDL_ROTATIONALINERTIA_HPP
00024 
00025 #include "frames.hpp"
00026 
00027 //------- class for only the Rotational Inertia --------
00028 
00029 namespace KDL
00030 {
00031     //Forward declaration
00032     class RigidBodyInertia;
00033 
00034         class RotationalInertia{
00035     public:
00036               
00037         RotationalInertia(double Ixx=0,double Iyy=0,double Izz=0,double Ixy=0,double Ixz=0,double Iyz=0);
00038         
00039         static inline RotationalInertia Zero(){
00040             return RotationalInertia(0,0,0,0,0,0);
00041         };
00042 
00043         friend RotationalInertia operator*(double a, const RotationalInertia& I);
00044         friend RotationalInertia operator+(const RotationalInertia& Ia, const RotationalInertia& Ib);
00045 
00049         KDL::Vector operator*(const KDL::Vector& omega) const;
00050         
00051         ~RotationalInertia();
00052 
00053         friend class RigidBodyInertia;
00055         friend RigidBodyInertia operator*(double a,const RigidBodyInertia& I);
00057         friend RigidBodyInertia operator+(const RigidBodyInertia& Ia,const RigidBodyInertia& Ib);
00059         friend Wrench operator*(const RigidBodyInertia& I,const Twist& t);
00061         friend RigidBodyInertia operator*(const Frame& T,const RigidBodyInertia& I);
00063         friend RigidBodyInertia operator*(const Rotation& R,const RigidBodyInertia& I);
00064 
00065         double data[9];
00066         };
00067 
00068 }
00069 
00070 #endif
00071 

Generated on Wed Nov 23 19:00:36 2011 for FreeCAD by  doxygen 1.6.1