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

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