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
Vector3.h
- Committer:
- pvaibhav
- Date:
- 2015-04-20
- Revision:
- 8:08d9c0010cc0
- Parent:
- 4:1ced03aa8c75
File content as of revision 8:08d9c0010cc0:
#ifndef __AHRSMATHDSP_VECTOR3_ #define __AHRSMATHDSP_VECTOR3_ //#include "arm_math.h" class Vector3 { public: Vector3() : x(0.0f), y(0.0f), z(0.0f) {} Vector3(float const _x, float const _y, float const _z) : x(_x), y(_y), z(_z) {} void set(float const _x, float const _y, float const _z) { x = _x; y = _y; z = _z; } float length_squared() const { return x * x + y * y + z * z; } float length() const { return sqrt(length_squared()); } void normalise() { float const len = length(); x = x / len; y = y / len; z = z / len; } Vector3 normalised() const { return *this / length(); } 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 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) { x = _x; y = _y; z = _z; } bool operator==(const Vector3 &v) const { return (x == v.x && y == v.y && z == v.z); } bool operator!=(const Vector3 &v) const { 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 { return Vector3(x * num, y * num, z * num); } const Vector3 operator/(const float num) const { return Vector3(x / num, y / num, z / num); } float operator*(const Vector3 &v) const { return x * v.x + y * v.y + z * v.z; } float x, y, z; }; #endif