00001 // 00002 // sgVector4.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 sgVector4 00033 { 00034 public: 00043 sgVector4(float x_ = 0.0f, float y_ = 0.0f, float z_ = 0.0f, float w_ = 0.0f); 00044 00050 sgVector4(const sgVector4 &other); 00051 00057 sgVector4(const sgQuaternion &other); 00058 00063 bool operator== (const sgVector4 &other); 00064 00069 bool operator!= (const sgVector4 &other); 00070 00075 sgVector4 &operator= (const sgVector4 &other); 00076 00081 sgVector4 &operator= (const float &other); 00082 00087 sgVector4 &operator= (const sgQuaternion &other); 00088 00093 sgVector4 &operator+= (const sgVector4 &other); 00094 00099 sgVector4 &operator-= (const sgVector4 &other); 00100 00105 sgVector4 &operator*= (const sgVector4 &other); 00106 00111 sgVector4 &operator/= (const sgVector4 &other); 00112 00117 sgVector4 operator+ (const sgVector4 &other); 00118 00123 sgVector4 operator- (const sgVector4 &other); 00124 00129 sgVector4 operator* (const sgVector4 &other); 00130 00135 sgVector4 operator/ (const sgVector4 &other); 00136 00141 sgVector4 &operator+= (const float &other); 00142 00147 sgVector4 &operator-= (const float &other); 00148 00153 sgVector4 &operator*= (const float &other); 00154 00159 sgVector4 &operator/= (const float &other); 00160 00165 sgVector4 operator+ (const float &other); 00166 00171 sgVector4 operator- (const float &other); 00172 00177 sgVector4 operator* (const float &other); 00178 00183 sgVector4 operator/ (const float &other); 00184 00189 sgVector4 &operator*= (const sgMatrix4x4 &other); 00190 00195 sgVector4 operator* (const sgMatrix4x4 &other); 00196 00202 float length(); 00203 00208 void makeIdentity(); 00209 00214 void normalize(); 00215 00222 float dot(sgVector4 &other); 00223 00230 sgVector4 cross(sgVector4 &other); 00231 00238 float dist(sgVector4 &other); 00239 00244 float x; 00245 00250 float y; 00251 00256 float z; 00257 00262 float w; 00263 };