A quick implementation of Quaternion and Vector classes for use with my MPU9150 library
Dependents: cool_step_new cool_step_1 SML2
Fork of QuaternionMath by
Diff: Vector3.h
- Revision:
- 4:1ced03aa8c75
- Parent:
- 3:c0137be74db4
- Child:
- 8:08d9c0010cc0
--- a/Vector3.h Fri Mar 13 09:10:41 2015 +0000 +++ b/Vector3.h Fri Mar 13 09:11:22 2015 +0000 @@ -3,52 +3,53 @@ //#include "arm_math.h" -class Vector3 { +class Vector3 +{ public: - Vector3(){ + Vector3() { x = y = z = 0; } - - Vector3(float x, float y, float z){ + + Vector3(float x, float y, float z) { this->x = x; this->y = y; this->z = z; } - - void set(float x, float y, float z){ + + void set(float x, float y, float z) { this->x = x; this->y = y; - this->z = z; + this->z = z; } - - float length_squared() const{ + + float length_squared() const { return x*x + y*y + z*z; } - - float length() const{ - return sqrt(length_squared()); + + float length() const { + return sqrt(length_squared()); } - - void normalise(){ + + void normalise() { float len = length(); x = x/len; y = y/len; z = z/len; } - - Vector3 normalised() const{ + + Vector3 normalised() const { return *this / length(); } - - float dot_product(const Vector3 &v) const{ + + float dot_product(const Vector3 &v) const { return x*v.x + y*v.y + z*v.z; } - - Vector3 cross_product(const Vector3 &v) const{ + + Vector3 cross_product(const Vector3 &v) const { Vector3 temp(y*v.z - z*v.y, z*v.x - x*v.z, x*v.y - y*v.x); return temp; } - + //operator overides void operator ()(const float x, const float y, const float z) { this->x = x; @@ -64,47 +65,47 @@ return (x!=v.x || y!=v.y || z!=v.z); } - const Vector3 &operator = (const Vector3 &v) { + const Vector3 &operator = (const Vector3 &v) { x = v.x; y = v.y; - z = v.z; + z = v.z; return *this; } - + const Vector3 operator - (void) const { return Vector3(-x,-y,-z); } - + const Vector3 operator + (const Vector3 &v) const { return Vector3(x+v.x, y+v.y, z+v.z); - } + } const Vector3 operator - (const Vector3 &v) const { return Vector3(x-v.x, y-v.y, z-v.z); } - + const Vector3 operator * (const float num) const { Vector3 temp; temp.x = x * num; - temp.y = y * num; - temp.z = z * num; + temp.y = y * num; + temp.z = z * num; return temp; } const Vector3 operator / (const float num) const { Vector3 temp; temp.x = x / num; - temp.y = y / num; - temp.z = z / num; + temp.y = y / num; + temp.z = z / num; return temp; } - + float operator * (const Vector3 &v) const { return x*v.x + y*v.y + z*v.z; } - + float x, y, z; - + }; #endif \ No newline at end of file