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