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
00015
00016 Vec4::Vec4() {
00017 x = y = z = w = 0.0f;
00018 }
00019
00020
00021
00022
00023 Vec4::Vec4(const float xyzw) {
00024 x = y = z = w = xyzw;
00025 }
00026
00027
00028
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
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
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
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
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
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
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
00099
00100 Vec4::~Vec4() {
00101
00102 }
00103
00104
00105
00106
00107 float Vec4::length() {
00108 return sqrtf(x*x + y*y + z*z + w*w);
00109 }
00110
00111
00112
00113
00114 Vec4 Vec4::normalize() {
00115 float len = length();
00116 if (len > 0)
00117 return *this / len;
00118 return *this;
00119 }
00120
00121
00122
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
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
00137
00138 Vec4 Vec4::operator - () {
00139 return Vec4(-x, -y, -z, -w);
00140 }
00141
00142
00143
00144
00145 Vec4 Vec4::operator * (const float s) {
00146 return Vec4(x*s, y*s, z*s, w*s);
00147 }
00148
00149
00150
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
00158
00167
00168
00169
00170 Vec4 Vec4::operator / (const float s) {
00171 return Vec4(x/s, y/s, z/s, w/s);
00172 }
00173
00174
00175
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
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
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
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
00213
00214 void Vec4::operator *= (const float s) {
00215 x *= s;
00216 y *= s;
00217 z *= s;
00218 w *= s;
00219 }
00220
00221
00222
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
00233
00234 void Vec4::operator /= (const float s) {
00235 x /= s;
00236 y /= s;
00237 z /= s;
00238 w /= s;
00239 }
00240
00241
00242
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
00253
00254 bool Vec4::operator > (Vec4 &v) {
00255 return length() > v.length();
00256 }
00257
00258
00259
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
00267
00268 bool Vec4::operator != (const Vec4 &v) {
00269 return (x != v.x) || (y != v.y) || (z != v.z) || (w != v.w);
00270 }