Commit | Line | Data |
---|---|---|
b00bb4b5 MM |
1 | #ifndef _VECTOR3_H |
2 | #define _VECTOR3_H | |
3 | ||
4 | class Vector3 | |
5 | { | |
6 | public: | |
fb59da5b OL |
7 | Vector3() = default; |
8 | Vector3(float a, float b, float c) : elem{a,b,c} {} | |
9 | Vector3(const Vector3& to_copy) = default; | |
b00bb4b5 | 10 | |
681a62d7 | 11 | float operator[](int) const; |
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 | 22 | Vector3 mul(float) const; |
b00bb4b5 | 23 | |
681a62d7 | 24 | Vector3 unit(void) const; |
b00bb4b5 | 25 | |
c618f25c OL |
26 | float * data() { return elem; } |
27 | float const* data() const { return elem; } | |
b00bb4b5 | 28 | private: |
fb59da5b | 29 | float elem[3]{}; |
b00bb4b5 MM |
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 */ |