Atlas Behavior Library  1.0
AtlasSimVectorTypes.h
Go to the documentation of this file.
00001 
00002 #ifndef __AtlasSimVectorTypes_H
00003 #define __AtlasSimVectorTypes_H
00004 
00005 #if __GNUC__ >= 4
00006 #pragma GCC visibility push(default)
00007 #endif
00008 
00009 /****************************************************************************/
00015 class AtlasVec4f
00016 {
00017 
00018 public:
00019 
00023     AtlasVec4f() {}
00024 
00032     AtlasVec4f(float initial_value)
00033     {
00034         n[0] = n[1] = n[2] = n[3] = initial_value;
00035     }
00036 
00047     AtlasVec4f(float x, float y, float z, float w)
00048     {
00049         n[0] = x;
00050         n[1] = y;
00051         n[2] = z;
00052         n[3] = w;
00053     }
00054 
00055     float n[4];   
00056 
00057     //
00058     //  Syntactic sugar for interpreting n[] as positions, rotations, etc.
00059     //
00060     inline float x() {return n[0];}   
00061     inline float y() {return n[1];}   
00062     inline float z() {return n[2];}   
00063     inline float w() {return n[3];}   
00064 
00065     inline void set_x(float f) {n[0] = f;}   
00066     inline void set_y(float f) {n[1] = f;}   
00067     inline void set_z(float f) {n[2] = f;}   
00068     inline void set_w(float f) {n[3] = f;}   
00069 
00070     inline float rz() {return n[0];}  
00071     inline float rx() {return n[1];}  
00072     inline float ry() {return n[2];}  
00073 
00074     inline void set_rz(float f) {n[0] = f;}   
00075     inline void set_rx(float f) {n[1] = f;}   
00076     inline void set_ry(float f) {n[2] = f;}   
00077 
00078     inline float yaw()   {return n[0];}  
00079     inline float roll()  {return n[1];}  
00080     inline float pitch() {return n[2];}  
00081 
00082     inline void set_yaw(float f)   {n[0] = f;}   
00083     inline void set_roll(float f)  {n[1] = f;}   
00084     inline void set_pitch(float f) {n[2] = f;}   
00085 };
00086 
00087 
00088 /****************************************************************************/
00094 class AtlasVec3f
00095 {
00096 
00097 public:
00098 
00104     AtlasVec3f() {}
00105 
00113     AtlasVec3f(float initial_value)
00114     {
00115         n[0] = n[1] = n[2] = initial_value;
00116     }
00117 
00127     AtlasVec3f(float x, float y, float z)
00128     {
00129         n[0] = x;
00130         n[1] = y;
00131         n[2] = z;
00132     }
00133 
00134 
00135     float n[3];   
00136 
00137     //
00138     //  Syntactic sugar for interpreting n[] as positions, rotations, etc.
00139     //
00140     inline float x() const {return n[0];}   
00141     inline float y() const {return n[1];}   
00142     inline float z() const {return n[2];}   
00143 
00144     inline void set_x(float f) {n[0] = f;}   
00145     inline void set_y(float f) {n[1] = f;}   
00146     inline void set_z(float f) {n[2] = f;}   
00147 
00148     inline float rz() {return n[0];}  
00149     inline float rx() {return n[1];}  
00150     inline float ry() {return n[2];}  
00151 
00152     inline void set_rz(float f) {n[0] = f;}   
00153     inline void set_rx(float f) {n[1] = f;}   
00154     inline void set_ry(float f) {n[2] = f;}   
00155 
00156     inline float yaw()   {return n[0];}  
00157     inline float roll()  {return n[1];}  
00158     inline float pitch() {return n[2];}  
00159 
00160     inline void set_yaw(float f)   {n[0] = f;}   
00161     inline void set_roll(float f)  {n[1] = f;}   
00162     inline void set_pitch(float f) {n[2] = f;}   
00163 };
00164 
00165 
00166 /****************************************************************************/
00172 class AtlasQuaternion
00173 {
00174 
00175 public:
00176 
00180     AtlasQuaternion()
00181     {
00182         m_qw = 1.0f;
00183         m_qx = 0.0f;
00184         m_qy = 0.0f;
00185         m_qz = 0.0f;
00186     }
00187 
00196     AtlasQuaternion(float w, AtlasVec3f xyz)
00197     {
00198         m_qw = w;
00199         m_qx = xyz.x();
00200         m_qy = xyz.y();
00201         m_qz = xyz.z();
00202     }
00203 
00204     float m_qw;
00205     float m_qx;
00206     float m_qy;
00207     float m_qz;
00208 
00209     inline float qw() const {return m_qw;}
00210     inline float qx() const  {return m_qx;}
00211     inline float qy() const  {return m_qy;}
00212     inline float qz() const  {return m_qz;}
00213 
00214     inline void set_qw(float f) {m_qw = f;}
00215     inline void set_qx(float f) {m_qx = f;}
00216     inline void set_qy(float f) {m_qy = f;}
00217     inline void set_qz(float f) {m_qz = f;}
00218 };
00219 
00220 #if __GNUC__ >= 4
00221 #pragma GCC visibility pop
00222 #endif
00223 
00224 #endif  // __AtlasSimVectorTypes_H
00225