5 #ifndef __IRR_POINT_3D_H_INCLUDED__
6 #define __IRR_POINT_3D_H_INCLUDED__
61 bool operator<=(const vector3d<T>&other)
const
77 bool operator<(const vector3d<T>&other)
const
95 return this->
equals(other);
100 return !this->
equals(other);
113 vector3d<T>&
set(
const T nx,
const T ny,
const T nz) {
X=nx;
Y=ny;
Z=nz;
return *
this;}
127 return X*other.
X +
Y*other.
Y +
Z*other.
Z;
185 return (*
this *= newlength);
203 f64 cs = cos(degrees);
204 f64 sn = sin(degrees);
207 set((T)(
X*cs -
Z*sn),
Y, (T)(
X*sn +
Z*cs));
218 f64 cs = cos(degrees);
219 f64 sn = sin(degrees);
222 set((T)(
X*cs -
Y*sn), (T)(
X*sn +
Y*cs),
Z);
233 f64 cs = cos(degrees);
234 f64 sn = sin(degrees);
237 set(
X, (T)(
Y*cs -
Z*sn), (T)(
Y*sn +
Z*cs));
249 const f64 inv = 1.0 - d;
250 return vector3d<T>((T)(other.
X*inv +
X*d), (T)(other.
Y*inv +
Y*d), (T)(other.
Z*inv +
Z*d));
262 const f64 inv = (T) 1.0 - d;
263 const f64 mul0 = inv * inv;
264 const f64 mul1 = (T) 2.0 * d * inv;
265 const f64 mul2 = d * d;
268 (T)(
Y * mul0 + v2.
Y * mul1 + v3.
Y * mul2),
269 (T)(
Z * mul0 + v2.
Z * mul1 + v3.
Z * mul2));
280 X = (T)((
f64)b.
X + ( ( a.
X - b.
X ) * d ));
281 Y = (T)((
f64)b.
Y + ( ( a.
Y - b.
Y ) * d ));
282 Z = (T)((
f64)b.
Z + ( ( a.
Z - b.
Z ) * d ));
366 const f64 srsp = sr*sp;
367 const f64 crsp = cr*sp;
369 const f64 pseudoMatrix[] = {
370 ( cp*cy ), ( cp*sy ), ( -sp ),
371 ( srsp*cy-cr*sy ), ( srsp*sy+cr*cy ), ( sr*cp ),
372 ( crsp*cy+sr*sy ), ( crsp*sy-sr*cy ), ( cr*cp )};
375 (T)(forwards.X * pseudoMatrix[0] +
376 forwards.Y * pseudoMatrix[3] +
377 forwards.Z * pseudoMatrix[6]),
378 (T)(forwards.X * pseudoMatrix[1] +
379 forwards.Y * pseudoMatrix[4] +
380 forwards.Z * pseudoMatrix[7]),
381 (T)(forwards.X * pseudoMatrix[2] +
382 forwards.Y * pseudoMatrix[5] +
383 forwards.Z * pseudoMatrix[8]));
441 template<
class S,
class T>