raSystem  1.0 bata
raPlane.h
Go to the documentation of this file.
1 #pragma once
2 
3  class RAPI raPlane
4  {
5  public:
6  union
7  {
8  struct
9  {
14  };
15  struct
16  {
18  };
19  raFloat v[4];
20  };
21  raPlane(void) {}
22  raPlane(const raPlane& p) : a(p.a), b(p.b), c(p.c), d(p.d) {}
23  raPlane(const raFloat _a, const raFloat _b, const raFloat _c, const raFloat _d) : a(_a), b(_b), c(_c), d(_d) {}
24  raPlane(const raFloat* pfValue) : a(pfValue[0]), b(pfValue[1]), c(pfValue[2]), d(pfValue[3]) {}
25  raPlane(const raVector4& _n) : n(_n) {}
26  raPlane(const raVector3& _n, const raFloat p) : a(_n.x), b(_n.y), c(_n.z), d(p) {}
27  operator raFloat* () {return (float*)(v);}
28 
29  raPlane& operator = (const raPlane& p) {a = p.a; b = p.b; c = p.c; d = p.d; return *this;}
30  };
31  inline raPlane operator + (const raPlane& a, const raPlane& b) { return raVector4 (a.a + b.a, a.b + b.b, a.c + b.c, a.d + b.d); }
32  inline raPlane operator - (const raPlane& a, const raPlane& b) { return raVector4 (a.a - b.a, a.b - b.b, a.c - b.c, a.d - b.d); }
33  inline raPlane operator - (const raPlane& v) { return raVector4 (-v.a, -v.b, -v.c, -v.d); }
34  inline raPlane operator * (const raPlane& a,const raPlane& b) { return raVector4 (a.a * b.a, a.b * b.b, a.c * b.c, a.d * b.d); }
35  inline raPlane operator * (const raPlane& a, const raFloat& b) { return raVector4 (a.a * b, a.b * b, a.c * b, a.d * b); }
36  inline raPlane operator * (const raFloat& a,const raPlane& b) { return raVector4 (a * b.a, a * b.b, a * b.c, a * b.d); }
37  inline raPlane operator / (const raPlane& a,const raPlane& b) { return raVector4 (a.a / b.a, a.b / b.b, a.c / b.c, a.d / b.d); }
38  inline raPlane operator / (const raFloat& a,const raPlane& b) { return raVector4 (a / b.a, a / b.b, a / b.c, a / b.d); }
39  inline raPlane operator / (const raPlane& a,const raFloat& b) { return raVector4 (a.a / b, a.b / b, a.c / b, a.d / b); }
40 
41  inline bool operator == (const raPlane& a, const raPlane& b) { return ((a.a == b.a) && (a.b == b.b) && (a.c == b.c) && (a.d == b.d)); }
42  inline bool operator != (const raPlane& a, const raPlane& b) { return ((a.a != b.a) && (a.b != b.b) && (a.c != b.c) && (a.d != b.d)); }
43  inline bool operator <= (const raPlane& a, const raPlane& b) { return ((a.a <= b.a) && (a.b <= b.b) && (a.c <= b.c) && (a.d <= b.d)); }
44  inline bool operator >= (const raPlane& a, const raPlane& b) { return ((a.a >= b.a) && (a.b >= b.b) && (a.c >= b.c) && (a.d >= b.d)); }
45  inline bool operator < (const raPlane& a, const raPlane& b) { return ((a.a < b.a) && (a.b < b.b) && (a.c < b.c) && (a.d < b.d)); }
46  inline bool operator > (const raPlane& a, const raPlane& b) { return ((a.a > b.a) && (a.b > b.b) && (a.c > b.c) && (a.d > b.d)); }
47 
48  // ******************************************************************
49  // Funktionen deklarieren
50  inline raPlane raPlaneNormalize(const raPlane& p) {const float fLength = raVector4Lenght(p.n); return raPlane(p.n / fLength);}
51  inline float raPlaneDotNormal(const raPlane& p, const raVector3& v) {return p.a * v.x + p.b * v.y + p.c * v.z;}
52  inline float raPlaneDotCoords(const raPlane& p, const raVector3& v) {return p.a * v.x + p.b * v.y + p.c * v.z + p.d;}
53  inline raPlane raPlaneFromPointNormal(const raVector3& p, const raVector3& n) {return raPlane(n, -n.x * p.x - n.y * p.y - n.z * p.z);}
54  inline raPlane raPlaneFromPoints(const raVector3& v1, const raVector3& v2, const raVector3& v3) {return raPlaneFromPointNormal(v1, raVector3Cross(v3 - v2, v1 - v2));}
bool operator==(const raPlane &a, const raPlane &b)
Definition: raPlane.h:41
raPlane(const raFloat *pfValue)
Definition: raPlane.h:24
raFloat y
Definition: raVector3.h:13
raPlane(const raFloat _a, const raFloat _b, const raFloat _c, const raFloat _d)
Definition: raPlane.h:23
raFloat x
Definition: raVector3.h:12
raPlane(const raVector4 &_n)
Definition: raPlane.h:25
raVector3 raVector3Cross(const raVector3 &v1, raVector3 &v2)
Definition: raVector3.h:62
raPlane operator+(const raPlane &a, const raPlane &b)
Definition: raPlane.h:31
raPlane(const raPlane &p)
Definition: raPlane.h:22
float raPlaneDotNormal(const raPlane &p, const raVector3 &v)
Definition: raPlane.h:51
bool operator>=(const raPlane &a, const raPlane &b)
Definition: raPlane.h:44
raVector4 n
Definition: raPlane.h:17
raPlane operator*(const raPlane &a, const raPlane &b)
Definition: raPlane.h:34
#define RAPI
Definition: raMain.h:11
raPlane(const raVector3 &_n, const raFloat p)
Definition: raPlane.h:26
raFloat d
Definition: raPlane.h:13
bool operator!=(const raPlane &a, const raPlane &b)
Definition: raPlane.h:42
raPlane operator/(const raPlane &a, const raPlane &b)
Definition: raPlane.h:37
raFloat z
Definition: raVector3.h:14
Definition: raPlane.h:3
float raFloat
Definition: raMain.h:106
raFloat c
Definition: raPlane.h:12
raPlane raPlaneNormalize(const raPlane &p)
Definition: raPlane.h:50
raFloat raVector4Lenght(const raVector4 &v)
Definition: raVector4.h:56
raFloat b
Definition: raPlane.h:11
raPlane(void)
Definition: raPlane.h:21
bool operator<(const raPlane &a, const raPlane &b)
Definition: raPlane.h:45
raPlane operator-(const raPlane &a, const raPlane &b)
Definition: raPlane.h:32
float raPlaneDotCoords(const raPlane &p, const raVector3 &v)
Definition: raPlane.h:52
raPlane raPlaneFromPoints(const raVector3 &v1, const raVector3 &v2, const raVector3 &v3)
Definition: raPlane.h:54
bool operator<=(const raPlane &a, const raPlane &b)
Definition: raPlane.h:43
raPlane raPlaneFromPointNormal(const raVector3 &p, const raVector3 &n)
Definition: raPlane.h:53
bool operator>(const raPlane &a, const raPlane &b)
Definition: raPlane.h:46
raFloat a
Definition: raPlane.h:10