Atlas Sim Interface
1.0
|
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