28 #ifndef _LINALG_V3_T_H_ 29 #define _LINALG_V3_T_H_ 33 template<
class T>
class v3t;
40 template<
class T>
class v3t {
44 friend v3t<T> operator*<>(
const T s,
const v3t<T> & src);
82 struct { T
x,
y,
z; };
90 x = src.
x;
y = src.
y; z = src.
z;
98 x += src.
x;
y += src.
y; z += src.
z;
106 x -= src.
x;
y -= src.
y; z -= src.
z;
114 x *= s;
y *= s; z *= s;
122 x /= s;
y /= s; z /= s;
129 return v3t(-this->x, -this->
y, -this->z);
135 return v3t(this->x - src.
x, this->y - src.
y, this->z - src.
z);
141 return v3t(this->x + src.
x, this->y + src.
y, this->z + src.
z);
147 if (this->x == s.
x && this->y == s.
y && this->z == s.
z) {
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)
177 return v3t(s*this->x, s*this->
y, s*this->z);
183 return this->x*src.
x + this->
y*src.
y + this->z*src.
z;
189 return v3t(this->x/s, this->
y/s, this->z/s);
195 return sqrt(x*x +
y*
y + z*z);
202 x /= len;
y /= len; z /= len;
208 r.
x = this->
y*b.
z - this->z*b.
y;
209 r.
y = this->z*b.
x - this->x*b.
z;
210 r.
z = this->x*b.
y - this->
y*b.
x;
216 r->
x = this->x - b->
x;
217 r->
y = this->
y - b->
y;
218 r->
z = this->z - b->
z;
227 return v3t<T>(s*src.
x, s*src.
y, s*src.
z);
240 #endif // _LINALG_V3_T_H_ v3t< T > & operator-=(const v3t< T > &src)
friend v3t< T > operator*(const T s, const v3t< T > &src)
v3t< T > & operator+=(const v3t< T > &src)
v3t< T > operator+(const v3t< T > &src) const
v3t< T > operator/(const T s) const
v3t< T > crossProduct(const v3t< T > &a, const v3t< T > &b)
v3t< T > operator-(void) const
v3t< T > & operator/=(const T s)
v3t(const T x, const T y, const T z)
v3t< T > & operator*=(const T s)
int operator==(const v3t< T > &src) const
int approxEquals(const v3t< T > &cmp, T eps)
void dirVector(const v3t< T > *b, v3t< T > *r)
v3t< T > & operator=(const v3t< T > &src)
int operator!=(const v3t< T > &src) const
v3t< T > operator*(const T s, const v3t< T > &src)
friend v3t< T > crossProduct(const v3t< T > &a, const v3t< T > &b)