raSystem  1.0 bata
raVector4.h
Go to the documentation of this file.
1 #pragma once
2 
3  class RAPI raVector4
4  {
5  public:
6  union
7  {
8  struct
9  {
14  };
15  float c[4];
16  };
17  raVector4(void) : x(0), y(0), z(0), w(0) {}
18  raVector4(const raFloat _x, const raFloat _y, const raFloat _z, const raFloat _w) : x(_x), y(_y), z(_z), w(_w) {}
19  raVector4(const raFloat f) : x(f), y(f), z(f), w(f) {}
20  raVector4(const raVector4& vec) : x(vec.x), y(vec.y), z(vec.z), w(vec.w) {}
21  raVector4(const raFloat *lpf) : x(lpf[0]), y(lpf[1]), z(lpf[2]), w(lpf[3]) {}
22  raVector4(const D3DXVECTOR4 vec) : x(vec.x), y(vec.y), z(vec.z), w(vec.w) {}
23 
24  operator float* () { return (float*)(c); }
25  operator void* () { return (void*)(c); }
26  operator const float* () const { return (float*)c; }
27  operator D3DXVECTOR4 () { return D3DXVECTOR4(x, y,z, w); }
28 
29  raVector4& operator = (const raVector4& v) { x = v.x; y = v.y; z = v.z; w = v.w; return *this; }
30  raVector4& operator += (const raVector4& v) { x += v.x; y += v.y; z += v.z; w += v.w; return *this; }
31  raVector4& operator -= (const raVector4& v) { x -= v.x; y -= v.y; z -= v.z; w -= v.w; return *this; }
32  raVector4& operator *= (const raVector4& v) { x *= v.x; y *= v.y; z *= v.z; w *= v.w; return *this; }
33  raVector4& operator /= (const raVector4& v) { x /= v.x; y /= v.y; z /= v.z; w /= v.w; return *this; }
34 
35  raVector4& operator /= (const raFloat& f) { x /= f; y /= f; z /= f; w /= f; return *this; }
36  raVector4& operator *= (const raFloat& f) { x *= f; y *= f; z *= f; w *= f; return *this; }
37  };
38  inline raVector4 operator + (const raVector4& a, const raVector4& b) { return raVector4 (a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w); }
39  inline raVector4 operator - (const raVector4& a, const raVector4& b) { return raVector4 (a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.z); }
40  inline raVector4 operator - (const raVector4& v) { return raVector4 (-v.x, -v.y, -v.x, -v.w); }
41  inline raVector4 operator * (const raVector4& a,const raVector4& b) { return raVector4 (a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w); }
42  inline raVector4 operator * (const raVector4& a, const raFloat& b) { return raVector4 (a.x * b, a.y * b, a.z * b, a.w * b); }
43  inline raVector4 operator * (const raFloat& a,const raVector4& b) { return raVector4 (a * b.x, a * b.y, a * b.z, a * b.w); }
44  inline raVector4 operator / (const raVector4& a,const raVector4& b) { return raVector4 (a.x / b.x, a.y / b.y, a.z / b.z, a.w / b.w); }
45  inline raVector4 operator / (const raFloat& a,const raVector4& b) { return raVector4 (a / b.x, a / b.y, a / b.z, a / b.w); }
46  inline raVector4 operator / (const raVector4& a,const raFloat& b) { return raVector4 (a.x / b, a.y / b, a.z / b, a.w / b); }
47 
48  inline bool operator == (const raVector4& a, const raVector4& b) { return ((a.x == b.x) && (a.y == b.y) && (a.z == b.z) && (a.w == b.w)); }
49  inline bool operator != (const raVector4& a, const raVector4& b) { return ((a.x != b.x) && (a.y != b.y) && (a.z != b.z) && (a.w != b.w)); }
50  inline bool operator <= (const raVector4& a, const raVector4& b) { return ((a.x <= b.x) && (a.y <= b.y) && (a.z <= b.z) && (a.w <= b.w)); }
51  inline bool operator >= (const raVector4& a, const raVector4& b) { return ((a.x >= b.x) && (a.y >= b.y) && (a.z >= b.z) && (a.w >= b.w)); }
52  inline bool operator < (const raVector4& a, const raVector4& b) { return ((a.x < b.x) && (a.y < b.y) && (a.z < b.z) && (a.w < b.w)); }
53  inline bool operator > (const raVector4& a, const raVector4& b) { return ((a.x > b.x) && (a.y > b.y) && (a.z > b.z) && (a.w > b.w)); }
54 
55  inline raFloat raVector4LenghtSq(const raVector4& v) { return (v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w); }
56  inline raFloat raVector4Lenght(const raVector4& v) { return sqrtf(v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w); }
57  inline raVector4 raVector4Normalize(const raVector4& v) { return v / sqrtf(v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w); }
58  inline raVector4 raVector4NormalizeEx(const raVector4& v) { return v / (sqrtf(v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w) + 0.0001f); }
59 
60  inline raFloat raVector4Dot(const raVector4& v1, const raVector4& v2) { return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z + v1.w * v2.w;}
61  inline raFloat raVector4Angle(const raVector4& v1, const raVector4& v2) { return (raFloat)acosf((v1.x * v2.x + v1.y * v2.y + v1.z * v2.z + v1.w * v2.w) /
62  (raFloat)sqrtf((v1.x * v1.x + v1.y * v1.y + v1.z * v1.z + v1.w * v1.w) * (v2.x * v2.x + v2.y * v2.y + v2.z * v2.z + v2.w * v2.w))); }
64  const raFloat p) { return v1 + p * (v2 - v1); }
66  const raFloat p) { return raVector4Normalize(v1 + p * (v2 - v1)); }
67  inline bool raVector4NearEqual(const raVector4& v1, raVector4& v2,
68  const raVector2& epsilon) { return ( abs((float)(v1.x - v2.x) ) <= epsilon && ( abs((float)(v1.y - v2.y)) <= epsilon) && (abs((float)(v1.z - v2.z)) <= epsilon) && (abs((float)(v1.w - v2.w)) <= epsilon)); }
raVector4 operator/(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:44
raFloat z
Definition: raVector4.h:12
bool operator<(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:52
raVector4(const raFloat *lpf)
Definition: raVector4.h:21
#define RAPI
Definition: raMain.h:11
raVector4(void)
Definition: raVector4.h:17
raFloat x
Definition: raVector4.h:10
raVector4 raVector4NormalizeEx(const raVector4 &v)
Definition: raVector4.h:58
bool operator>(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:53
raFloat raVector4LenghtSq(const raVector4 &v)
Definition: raVector4.h:55
raVector4 operator+(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:38
raFloat w
Definition: raVector4.h:13
bool operator==(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:48
float raFloat
Definition: raMain.h:106
raVector4 operator-(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:39
raVector4(const D3DXVECTOR4 vec)
Definition: raVector4.h:22
bool operator>=(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:51
raFloat raVector4Angle(const raVector4 &v1, const raVector4 &v2)
Definition: raVector4.h:61
raVector4(const raVector4 &vec)
Definition: raVector4.h:20
raFloat raVector4Dot(const raVector4 &v1, const raVector4 &v2)
Definition: raVector4.h:60
raFloat y
Definition: raVector4.h:11
bool raVector4NearEqual(const raVector4 &v1, raVector4 &v2, const raVector2 &epsilon)
Definition: raVector4.h:67
raFloat raVector4Lenght(const raVector4 &v)
Definition: raVector4.h:56
raVector4(const raFloat f)
Definition: raVector4.h:19
raVector4 operator*(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:41
raVector4 raVector4InterpolateCoords(const raVector4 &v1, const raVector4 &v2, const raFloat p)
Definition: raVector4.h:63
raVector4(const raFloat _x, const raFloat _y, const raFloat _z, const raFloat _w)
Definition: raVector4.h:18
bool operator<=(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:50
bool operator!=(const raVector4 &a, const raVector4 &b)
Definition: raVector4.h:49
raVector4 raVector4Normalize(const raVector4 &v)
Definition: raVector4.h:57
raVector4 raVector4InterpolateNormal(const raVector4 &v1, const raVector4 &v2, const raFloat p)
Definition: raVector4.h:65