Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

Vec4.cpp

Go to the documentation of this file.
00001 
00007 #include "Vector.h"
00008 
00009 float dot(const Vec4 &u, const Vec4 &v){
00010         return u.x * v.x + u.y * v.y + u.z * v.z + u.w * v.w;
00011 }
00012 
00013 /********************************************************************
00014  * Constructor
00015  */
00016 Vec4::Vec4() {
00017         x = y = z = w = 0.0f;
00018 }
00019 
00020 /********************************************************************
00021  * Constructor (float xyz)
00022  */
00023 Vec4::Vec4(const float xyzw) {
00024         x = y = z = w = xyzw;
00025 }
00026 
00027 /********************************************************************
00028  * Constructor (float x, float y, float z)
00029  */
00030 Vec4::Vec4(const float xx, const float yy, const float zz, const float ww) {
00031         x = xx;
00032         y = yy;
00033         z = zz;
00034         w = ww;
00035 }
00036 
00037 /********************************************************************
00038  * Constructor (Vec3, float w)
00039  */
00040 Vec4::Vec4(const Vec3 v, const float ww) {
00041         x = v.x;
00042         y = v.y;
00043         z = v.z;
00044         w = ww;
00045 }
00046 
00047 /********************************************************************
00048  * Constructor (float w, Vec3)
00049  */
00050 Vec4::Vec4( const float xx, const Vec3 v) {
00051         x = xx;
00052         y = v.x;
00053         z = v.y;
00054         w = v.z;
00055 }
00056 
00057 /********************************************************************
00058  * Constructor (Vec2, float z, float w)
00059  */
00060 Vec4::Vec4(const Vec2 v, const float zz, const float ww) {
00061         x = v.x;
00062         y = v.y;
00063         z = zz;
00064         w = ww;
00065 }
00066 
00067 /********************************************************************
00068  * Constructor (float x, Vec2, float w)
00069  */
00070 Vec4::Vec4(const float xx, const Vec2 v, const float ww) {
00071         x = xx;
00072         y = v.x;
00073         z = v.y;
00074         w = ww;
00075 }
00076 
00077 /********************************************************************
00078  * Constructor (float x, float y, Vec2)
00079  */
00080 Vec4::Vec4(const float xx, const float yy, const Vec2 v) {
00081         x = xx;
00082         y = yy;
00083         z = v.x;
00084         w = v.y;
00085 }
00086 
00087 /********************************************************************
00088  * Constructor (Vec2 v, Vec2 u)
00089  */
00090 Vec4::Vec4(const Vec2 v, const Vec2 u) {
00091         x = v.x;
00092         y = v.y;
00093         z = u.x;
00094         w = u.y;
00095 }
00096 
00097 /********************************************************************
00098  * Destructor
00099  */
00100 Vec4::~Vec4() {
00101 
00102 }
00103 
00104 /********************************************************************
00105  * Length (Magnitude)
00106  */
00107 float Vec4::length() {
00108         return sqrtf(x*x + y*y + z*z + w*w);
00109 }
00110 
00111 /********************************************************************
00112  * Normalize
00113  */
00114 Vec4 Vec4::normalize() {
00115         float len = length();
00116         if (len > 0)
00117                 return *this / len;
00118         return *this;
00119 }
00120 
00121 /********************************************************************
00122  * Operator +
00123  */
00124 Vec4 Vec4::operator + (const Vec4 &v) {
00125         return Vec4(x+v.x, y+v.y, z+v.z, w+v.w);
00126 }
00127 
00128 /********************************************************************
00129  * Operator -
00130  */
00131 Vec4 Vec4::operator - (const Vec4 &v) {
00132         return Vec4(x-v.x, y-v.y, z-v.z, w-v.w);
00133 }
00134 
00135 /********************************************************************
00136  * Operator -
00137  */
00138 Vec4 Vec4::operator - () {
00139         return Vec4(-x, -y, -z, -w);
00140 }
00141 
00142 /********************************************************************
00143  * Operator *
00144  */
00145 Vec4 Vec4::operator * (const float s) {
00146         return Vec4(x*s, y*s, z*s, w*s);
00147 }
00148 
00149 /********************************************************************
00150  * Operator *
00151  */
00152 Vec4 Vec4::operator * (const Vec4 &v) {
00153         return Vec4(x*v.x, y*v.y, z*v.z, w*v.w);
00154 }
00155 
00156 /********************************************************************
00157  * Cross product (operator ^)
00158  */
00167 /********************************************************************
00168  * Operator /
00169  */
00170 Vec4 Vec4::operator / (const float s) {
00171         return Vec4(x/s, y/s, z/s, w/s);
00172 }
00173 
00174 /********************************************************************
00175  * Operator /
00176  */
00177 Vec4 Vec4::operator / (const Vec4 &v) {
00178         return Vec4(x/v.x, y/v.y, z/v.z, w/v.w);
00179 }
00180 
00181 /********************************************************************
00182  * Operator =
00183  */
00184 void Vec4::operator = (const Vec4 &v) {
00185         x = v.x;
00186         y = v.y;
00187         z = v.z;
00188         w = v.w;
00189 }
00190 
00191 /********************************************************************
00192  * Operator +=
00193  */
00194 void Vec4::operator += (const Vec4 &v) {
00195         x += v.x;
00196         y += v.y;
00197         z += v.z;
00198         w += v.w;
00199 }
00200 
00201 /********************************************************************
00202  * Operator -=
00203  */
00204 void Vec4::operator -= (const Vec4 &v) {
00205         x -= v.x;
00206         y -= v.y;
00207         z -= v.z;
00208         w -= v.w;
00209 }
00210 
00211 /********************************************************************
00212  * Operator *=
00213  */
00214 void Vec4::operator *= (const float s) {
00215         x *= s;
00216         y *= s;
00217         z *= s;
00218         w *= s;
00219 }
00220 
00221 /********************************************************************
00222  * Operator *=
00223  */
00224 void Vec4::operator *= (const Vec4 &v) {
00225         x *= v.x;
00226         y *= v.y;
00227         z *= v.z;
00228         w *= v.w;
00229 }
00230 
00231 /********************************************************************
00232  * Operator /=
00233  */
00234 void Vec4::operator /= (const float s) {
00235         x /= s;
00236         y /= s;
00237         z /= s;
00238         w /= s;
00239 }
00240 
00241 /********************************************************************
00242  * Operator /=
00243  */
00244 void Vec4::operator /= (const Vec4 &v) {
00245         x /= v.x;
00246         y /= v.y;
00247         z /= v.z;
00248         w /= v.w;
00249 }
00250 
00251 /********************************************************************
00252  * Operator >
00253  */
00254 bool Vec4::operator > (Vec4 &v) {
00255         return length() > v.length();
00256 }
00257 
00258 /********************************************************************
00259  * Operator ==
00260  */
00261 bool Vec4::operator == (const Vec4 &v) {
00262         return (x == v.x) && (y == v.y) && (z == v.z) && (w == v.w);
00263 }
00264 
00265 /********************************************************************
00266  * Operator !=
00267  */
00268 bool Vec4::operator != (const Vec4 &v) {
00269         return (x != v.x) || (y != v.y) || (z != v.z) || (w != v.w);
00270 }

Generated on Sun Jun 5 15:47:05 2005 for Defacto by  doxygen 1.4.3