Commit | Line | Data |
---|---|---|
b00bb4b5 MM |
1 | #ifndef _VECTOR3_H |
2 | #define _VECTOR3_H | |
3 | ||
4 | class Vector3 | |
5 | { | |
6 | public: | |
7 | Vector3(); | |
8 | Vector3(float, float, float); | |
9 | ||
681a62d7 | 10 | float operator[](int) const; |
b00bb4b5 | 11 | |
681a62d7 | 12 | Vector3 cross(const Vector3&) const; |
b00bb4b5 | 13 | |
681a62d7 | 14 | float dot(const Vector3&) const; |
b00bb4b5 | 15 | |
681a62d7 JM |
16 | float magsq() const; |
17 | float mag() const; | |
b00bb4b5 | 18 | |
681a62d7 JM |
19 | Vector3 add(const Vector3&) const; |
20 | Vector3 sub(const Vector3&) const; | |
b00bb4b5 | 21 | |
681a62d7 JM |
22 | Vector3 mul(float) const; |
23 | Vector3 mul(const Vector3& v) const; | |
b00bb4b5 | 24 | |
681a62d7 | 25 | Vector3 unit(void) const; |
b00bb4b5 MM |
26 | |
27 | private: | |
28 | float elem[3]; | |
29 | static float nan; | |
30 | }; | |
31 | ||
32 | // typedef float Vector3[3]; | |
33 | ||
34 | // float* cross_product(Vector3 vec1, Vector3 vec2, Vector3 out); | |
35 | // float dot_product(Vector3 vec1, Vector3 vec2); | |
36 | // float magsq(Vector3 vec); | |
37 | // float* vecsub(Vector3 vec1, Vector3 vec2, Vector3 out) | |
38 | // float* scalar_mul(Vector3 vec, float scalar, Vector3 out) | |
39 | ||
40 | #endif /* _VECTOR3_H */ |