28#ifndef _LINALG_V4_T_H_
29#define _LINALG_V4_T_H_
33template<
class T>
class v4t;
39template<
class T>
class v4t {
87 x = src.
x;
y = src.
y;
z = src.
z;
w = src.
w;
95 x += src.
x;
y += src.
y;
z += src.
z;
w += src.
w;
103 x -= src.
x;
y -= src.
y;
z -= src.
z;
w -= src.
w;
111 x *= s;
y *= s;
z *= s;
w *= s;
119 x /= s;
y /= s;
z /= s;
w /= s;
127 return v4t(
x + src.
x,
y + src.
y,
z + src.
z,
w + src.
w);
141 return v4t(
x - src.
x,
y - src.
y,
z - src.
z,
w - src.
w);
147 if (this->
x == s.
x && this->y == s.
y && this->z == s.
z && this->w == s.
w) {
157 return !(*
this == s);
164 if (fabs(cmp.
x - this->x) < eps &&
165 fabs(cmp.
y - this->y) < eps &&
166 fabs(cmp.
z - this->z) < eps &&
167 fabs(cmp.
w - this->w) < eps)
179 return src.
x*
x + src.
y*
y + src.
z*
z + src.
w*
w;
186 return v4t(s*
x, s*
y, s*
z, s*
w);
193 return v4t<T>(s*src.
x, s*src.
y, s*src.
z, s*src.
w);
199 return v4t(this->
x/s, this->
y/s, this->
z/s, this->
w/s);
213 return sqrt((
p.x-
x)*(
p.x-
x) + (
p.y-
y)*(
p.y-
y) + (
p.z-
z)*(
p.z-
z) + (
p.w-
w)*(
p.w-
w));
221 x /= l;
y /= l;
z /= l;
w /= l;
v4t< T > & operator+=(const v4t< T > &src)
T operator*(const v4t< T > &src) const
v4t< T > & operator*=(const T s)
T dist(const v4t< T > &p) const
int operator==(const v4t< T > &src) const
v4t< T > operator/(const T s) const
v4t< T > operator-(const v4t< T > &src) const
friend v4t< T > operator*(const T s, const v4t< T > &src)
int operator!=(const v4t< T > &src) const
v4t< T > & operator=(const v4t< T > &src)
int approxEquals(const v4t< T > &cmp, T eps)
v4t< T > & operator/=(const T s)
v4t< T > & operator-=(const v4t< T > &src)
v4t< T > operator*(const T s) const
v4t(const T x, const T y, const T z, const T w)
v4t< T > operator+(const v4t< T > &src) const
v4t< T > operator-(void) const
v4t< T > operator*(const T s, const v4t< T > &src)