Merge pull request #471 from wolfmanjm/feature/three-point-bed-levelling-strategy
[clinton/Smoothieware.git] / src / libs / Vector3.h
1 #ifndef _VECTOR3_H
2 #define _VECTOR3_H
3
4 class Vector3
5 {
6 public:
7 Vector3();
8 Vector3(float, float, float);
9 Vector3(const Vector3& to_copy);
10 Vector3& operator= (const Vector3& to_copy);
11
12 float operator[](int) const;
13 void set(float a, float b, float c);
14 Vector3 cross(const Vector3&) const;
15
16 float dot(const Vector3&) const;
17
18 float magsq() const;
19 float mag() const;
20
21 Vector3 add(const Vector3&) const;
22 Vector3 sub(const Vector3&) const;
23
24 Vector3 mul(float) const;
25 Vector3 mul(const Vector3& v) const;
26
27 Vector3 unit(void) const;
28
29 private:
30 float elem[3];
31 static float nan;
32 };
33
34 // typedef float Vector3[3];
35
36 // float* cross_product(Vector3 vec1, Vector3 vec2, Vector3 out);
37 // float dot_product(Vector3 vec1, Vector3 vec2);
38 // float magsq(Vector3 vec);
39 // float* vecsub(Vector3 vec1, Vector3 vec2, Vector3 out)
40 // float* scalar_mul(Vector3 vec, float scalar, Vector3 out)
41
42 #endif /* _VECTOR3_H */