libalmath
1.12
|
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_