Atlas Sim Interface  1.0
AtlasVectorTypes.h
Go to the documentation of this file.
00001 
00002 #ifndef __AtlasVectorTypes_H
00003 #define __AtlasVectorTypes_H
00004 
00005 #if __GNUC__ >= 4
00006 #pragma GCC visibility push(default)
00007 #endif
00008 
00009 #ifndef NOT_IN_DOXYGEN
00010 namespace Atlas {
00011 #endif
00012 
00013 /****************************************************************************/
00019 class AtlasVec4f
00020 {
00021 
00022 public:
00023 
00027     AtlasVec4f() {}
00028 
00036     AtlasVec4f(float initial_value)
00037     {
00038         n[0] = n[1] = n[2] = n[3] = initial_value;
00039     }
00040 
00051     AtlasVec4f(float x, float y, float z, float w)
00052     {
00053         n[0] = x;
00054         n[1] = y;
00055         n[2] = z;
00056         n[3] = w;
00057     }
00058 
00059     float n[4];   
00060 
00061     //
00062     //  Syntactic sugar for interpreting n[] as positions, rotations, etc.
00063     //
00064     inline float x() {return n[0];}   
00065     inline float y() {return n[1];}   
00066     inline float z() {return n[2];}   
00067     inline float w() {return n[3];}   
00068 
00069     inline void set_x(float f) {n[0] = f;}   
00070     inline void set_y(float f) {n[1] = f;}   
00071     inline void set_z(float f) {n[2] = f;}   
00072     inline void set_w(float f) {n[3] = f;}   
00073 
00074     inline float rz() {return n[0];}  
00075     inline float rx() {return n[1];}  
00076     inline float ry() {return n[2];}  
00077 
00078     inline void set_rz(float f) {n[0] = f;}   
00079     inline void set_rx(float f) {n[1] = f;}   
00080     inline void set_ry(float f) {n[2] = f;}   
00081 
00082     inline float yaw()   {return n[0];}  
00083     inline float roll()  {return n[1];}  
00084     inline float pitch() {return n[2];}  
00085 
00086     inline void set_yaw(float f)   {n[0] = f;}   
00087     inline void set_roll(float f)  {n[1] = f;}   
00088     inline void set_pitch(float f) {n[2] = f;}   
00089 };
00090 
00091 
00092 /****************************************************************************/
00098 class AtlasVec3f
00099 {
00100 
00101 public:
00102 
00108     AtlasVec3f() {}
00109 
00117     AtlasVec3f(float initial_value)
00118     {
00119         n[0] = n[1] = n[2] = initial_value;
00120     }
00121 
00131     AtlasVec3f(float x, float y, float z)
00132     {
00133         n[0] = x;
00134         n[1] = y;
00135         n[2] = z;
00136     }
00137 
00138 
00139     float n[3];   
00140 
00141     //
00142     //  Syntactic sugar for interpreting n[] as positions, rotations, etc.
00143     //
00144     inline float x() const {return n[0];}   
00145     inline float y() const {return n[1];}   
00146     inline float z() const {return n[2];}   
00147 
00148     inline void set_x(float f) {n[0] = f;}   
00149     inline void set_y(float f) {n[1] = f;}   
00150     inline void set_z(float f) {n[2] = f;}   
00151 
00152     inline float rz() {return n[0];}  
00153     inline float rx() {return n[1];}  
00154     inline float ry() {return n[2];}  
00155 
00156     inline void set_rz(float f) {n[0] = f;}   
00157     inline void set_rx(float f) {n[1] = f;}   
00158     inline void set_ry(float f) {n[2] = f;}   
00159 
00160     inline float yaw()   {return n[0];}  
00161     inline float roll()  {return n[1];}  
00162     inline float pitch() {return n[2];}  
00163 
00164     inline void set_yaw(float f)   {n[0] = f;}   
00165     inline void set_roll(float f)  {n[1] = f;}   
00166     inline void set_pitch(float f) {n[2] = f;}   
00167 
00168 };
00169 
00170 
00171 /****************************************************************************/
00177 class AtlasQuaternion
00178 {
00179 
00180 public:
00181 
00185     AtlasQuaternion()
00186     {
00187         m_qw = 1.0f;
00188         m_qx = 0.0f;
00189         m_qy = 0.0f;
00190         m_qz = 0.0f;
00191     }
00192 
00201     AtlasQuaternion(float w, AtlasVec3f xyz)
00202     {
00203         m_qw = w;
00204         m_qx = xyz.x();
00205         m_qy = xyz.y();
00206         m_qz = xyz.z();
00207     }
00208 
00209     float m_qw;
00210     float m_qx;
00211     float m_qy;
00212     float m_qz;
00213 
00214     inline float qw() const {return m_qw;}
00215     inline float qx() const {return m_qx;}
00216     inline float qy() const {return m_qy;}
00217     inline float qz() const {return m_qz;}
00218 
00219     inline void set_qw(float f) {m_qw = f;}
00220     inline void set_qx(float f) {m_qx = f;}
00221     inline void set_qy(float f) {m_qy = f;}
00222     inline void set_qz(float f) {m_qz = f;}
00223 };
00224 
00225 #ifndef NOT_IN_DOXYGEN
00226 } // end namespace Atlas
00227 #endif
00228 
00229 #if __GNUC__ >= 4
00230 #pragma GCC visibility pop
00231 #endif
00232 
00233 #endif  // __AtlasVectorTypes_H
00234