libalmath  1.12
almath/types/alrotation3d.h
00001 /*
00002 ** Author(s):
00003 **  - Chris Kilner
00004 **  - Cyrille Collette
00005 **  - David Gouaillier
00006 **
00007 ** Copyright (C) 2011 Aldebaran Robotics
00008 */
00009 
00010 
00011 #pragma once
00012 #ifndef _LIBALMATH_ALMATH_TYPES_ALROTATION3D_H_
00013 #define _LIBALMATH_ALMATH_TYPES_ALROTATION3D_H_
00014 
00015 #include <vector>
00016 
00017 namespace AL {
00018   namespace Math {
00019 
00024     struct Rotation3D {
00026       float wx;
00028       float wy;
00030       float wz;
00031 
00034 
00047 
00048       Rotation3D();
00049 
00054 
00067 
00068       explicit Rotation3D(float pInit);
00069 
00072 
00085 
00086 
00087 
00088 
00089       Rotation3D(
00090         float pWx,
00091         float pWy,
00092         float pWz);
00093 
00096 
00109 
00110 
00111 
00112 
00113 
00114       Rotation3D (const std::vector<float>& pFloats);
00115 
00120       Rotation3D operator+ (const Rotation3D& pRot2) const;
00121 
00126       Rotation3D operator- (const Rotation3D& pRot2) const;
00127 
00132       Rotation3D& operator+= (const Rotation3D& pRot2);
00133 
00138       Rotation3D& operator-= (const Rotation3D& pRot2);
00139 
00144       bool operator== (const Rotation3D& pRot2) const;
00145 
00150       bool operator!= (const Rotation3D& pRot2) const;
00151 
00156       Rotation3D operator* (const float pVal) const;
00157 
00162       Rotation3D operator/ (const float pVal) const;
00163 
00168       Rotation3D& operator*= (const float pVal);
00169 
00174       Rotation3D& operator/= (const float pVal);
00175 
00186       bool isNear(
00187         const Rotation3D& pRot2,
00188         const float&      pEpsilon=0.0001f) const;
00189 
00198       float norm() const;
00199 
00203       std::vector<float> toVector() const;
00204     };
00205 
00216     float norm(const Rotation3D& pRot);
00217 
00218   } // end namespace Math
00219 } // end namespace AL
00220 #endif  // _LIBALMATH_ALMATH_TYPES_ALROTATION3D_H_
 All Classes Namespaces Functions Variables