00001 // 00002 // sgVector3.h 00003 // iSDGE 00004 // 00005 // Created by Nils Daumann on 17.04.10. 00006 // Copyright (c) 2010 Nils Daumann 00007 00008 // Permission is hereby granted, free of charge, to any person obtaining a copy 00009 // of this software and associated documentation files (the "Software"), to deal 00010 // in the Software without restriction, including without limitation the rights 00011 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00012 // copies of the Software, and to permit persons to whom the Software is 00013 // furnished to do so, subject to the following conditions: 00014 00015 // The above copyright notice and this permission notice shall be included in 00016 // all copies or substantial portions of the Software. 00017 00018 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00019 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00020 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00021 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00022 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00023 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00024 // THE SOFTWARE. 00025 00026 class sgMatrix4x4; 00027 class sgQuaternion; 00028 00032 class sgVector3 00033 { 00034 public: 00042 sgVector3(float x_ = 0.0f, float y_ = 0.0f, float z_ = 0.0f); 00043 00049 sgVector3(const sgVector3 &other); 00050 00056 sgVector3(const sgQuaternion &other); 00057 00062 bool operator== (const sgVector3 &other); 00063 00068 bool operator!= (const sgVector3 &other); 00069 00074 sgVector3 &operator= (const sgVector3 &other); 00075 00080 sgVector3 &operator= (const float &other); 00081 00086 sgVector3 &operator= (const sgQuaternion &other); 00087 00092 sgVector3 &operator+= (const sgVector3 &other); 00093 00098 sgVector3 &operator-= (const sgVector3 &other); 00099 00104 sgVector3 &operator*= (const sgVector3 &other); 00105 00110 sgVector3 &operator/= (const sgVector3 &other); 00111 00116 sgVector3 operator+ (const sgVector3 &other); 00117 00122 sgVector3 operator- (const sgVector3 &other); 00123 00128 sgVector3 operator* (const sgVector3 &other); 00129 00134 sgVector3 operator/ (const sgVector3 &other); 00135 00140 sgVector3 &operator+= (const float &other); 00141 00146 sgVector3 &operator-= (const float &other); 00147 00152 sgVector3 &operator*= (const float &other); 00153 00158 sgVector3 &operator/= (const float &other); 00159 00164 sgVector3 operator+ (const float &other); 00165 00170 sgVector3 operator- (const float &other); 00171 00176 sgVector3 operator* (const float &other); 00177 00182 sgVector3 operator/ (const float &other); 00183 00188 sgVector3 &operator*= (const sgMatrix4x4 &other); 00189 00194 sgVector3 operator* (const sgMatrix4x4 &other); 00195 00201 float length(); 00202 00207 void makeIdentity(); 00208 00213 void normalize(); 00214 00221 float dot(sgVector3 &other); 00222 00229 sgVector3 cross(sgVector3 &other); 00230 00237 float dist(sgVector3 &other); 00238 00243 float x; 00244 00249 float y; 00250 00255 float z; 00256 };