![]() |
Atlas Behavior Library
1.0
|
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