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:
- 0:3cc1a808d8c6
- Child:
- 1:857642c51139
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Vector3.h Mon Sep 01 13:48:26 2014 +0000 @@ -0,0 +1,106 @@ +#ifndef __AHRSMATHDSP_VECTOR3_ +#define __AHRSMATHDSP_VECTOR3_ + +#include "arm_math.h" + +class Vector3 { +public: + Vector3(){ + x = y = z = 0; + } + + Vector3(float x, float y, float z){ + this->x = x; + this->y = y; + this->z = z; + } + + void set(float x, float y, float z){ + this->x = x; + this->y = y; + this->z = z; + } + + float length_squared(){ + return x*x + y*y + z*z; + } + + float length(){ + return sqrt(length_squared()); + } + + void normalise(){ + float len = length(); + x = x/len; + y = y/len; + z = z/len; + } + + float dot_product(const Vector3 &v){ + return x*v.x + y*v.y + z*v.z; + } + + Vector3 cross_product(const Vector3 &v){ + 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; + this->y = y; + this->z = z; + } + + bool operator == (const Vector3 &v) { + return (x==v.x && y==v.y && z==v.z); + } + + bool operator != (const Vector3 &v) { + return (x!=v.x || y!=v.y || z!=v.z); + } + + const Vector3 &operator = (const Vector3 &v) { + x = v.x; + y = v.y; + 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; + return temp; + } + + const Vector3 operator / (const float num) const { + Vector3 temp; + temp.x = x / 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