00001
00007 #include "Vector.h"
00008
00009
00010
00011
00012 Vec4::Vec4() {
00013 x = y = z = w = 0.0f;
00014 }
00015
00016
00017
00018
00019 Vec4::Vec4(const float xyzw) {
00020 x = y = z = w = xyzw;
00021 }
00022
00023
00024
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
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
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
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
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
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
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
00095
00096 Vec4::~Vec4() {
00097
00098 }
00099
00100
00101
00102
00103 float Vec4::length() {
00104 return sqrtf(x*x + y*y + z*z + w*w);
00105 }
00106
00107
00108
00109
00110 Vec4 Vec4::normalize() {
00111 float len = length();
00112 if (len > 0)
00113 return *this / len;
00114 return *this;
00115 }
00116
00117
00118
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
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
00133
00134 Vec4 Vec4::operator - () {
00135 return Vec4(-x, -y, -z, -w);
00136 }
00137
00138
00139
00140
00141 Vec4 Vec4::operator * (const float s) {
00142 return Vec4(x*s, y*s, z*s, w*s);
00143 }
00144
00145
00146
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
00154
00163
00164
00165
00166 Vec4 Vec4::operator / (const float s) {
00167 return Vec4(x/s, y/s, z/s, w/s);
00168 }
00169
00170
00171
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
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
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
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
00209
00210 void Vec4::operator *= (const float s) {
00211 x *= s;
00212 y *= s;
00213 z *= s;
00214 w *= s;
00215 }
00216
00217
00218
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
00229
00230 void Vec4::operator /= (const float s) {
00231 x /= s;
00232 y /= s;
00233 z /= s;
00234 w /= s;
00235 }
00236
00237
00238
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
00249
00250 bool Vec4::operator > (Vec4 &v) {
00251 return length() > v.length();
00252 }
00253
00254
00255
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
00263
00264 bool Vec4::operator != (const Vec4 &v) {
00265 return (x != v.x) || (y != v.y) || (z != v.z) || (w != v.w);
00266 }