TobyRich GmbH / QuaternionMath

Dependents:   cool_step_new cool_step_1 SML2

Fork of QuaternionMath by Chris Pepper

Committer:
pvaibhav
Date:
Fri Mar 13 09:11:22 2015 +0000
Revision:
4:1ced03aa8c75
Parent:
3:c0137be74db4
Child:
8:08d9c0010cc0
Code reformatting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
p3p 0:3cc1a808d8c6 1 #ifndef __AHRSMATHDSP_VECTOR3_
p3p 0:3cc1a808d8c6 2 #define __AHRSMATHDSP_VECTOR3_
p3p 0:3cc1a808d8c6 3
pvaibhav 1:857642c51139 4 //#include "arm_math.h"
p3p 0:3cc1a808d8c6 5
pvaibhav 4:1ced03aa8c75 6 class Vector3
pvaibhav 4:1ced03aa8c75 7 {
p3p 0:3cc1a808d8c6 8 public:
pvaibhav 4:1ced03aa8c75 9 Vector3() {
p3p 0:3cc1a808d8c6 10 x = y = z = 0;
p3p 0:3cc1a808d8c6 11 }
pvaibhav 4:1ced03aa8c75 12
pvaibhav 4:1ced03aa8c75 13 Vector3(float x, float y, float z) {
p3p 0:3cc1a808d8c6 14 this->x = x;
p3p 0:3cc1a808d8c6 15 this->y = y;
p3p 0:3cc1a808d8c6 16 this->z = z;
p3p 0:3cc1a808d8c6 17 }
pvaibhav 4:1ced03aa8c75 18
pvaibhav 4:1ced03aa8c75 19 void set(float x, float y, float z) {
p3p 0:3cc1a808d8c6 20 this->x = x;
p3p 0:3cc1a808d8c6 21 this->y = y;
pvaibhav 4:1ced03aa8c75 22 this->z = z;
p3p 0:3cc1a808d8c6 23 }
pvaibhav 4:1ced03aa8c75 24
pvaibhav 4:1ced03aa8c75 25 float length_squared() const {
p3p 0:3cc1a808d8c6 26 return x*x + y*y + z*z;
p3p 0:3cc1a808d8c6 27 }
pvaibhav 4:1ced03aa8c75 28
pvaibhav 4:1ced03aa8c75 29 float length() const {
pvaibhav 4:1ced03aa8c75 30 return sqrt(length_squared());
p3p 0:3cc1a808d8c6 31 }
pvaibhav 4:1ced03aa8c75 32
pvaibhav 4:1ced03aa8c75 33 void normalise() {
p3p 0:3cc1a808d8c6 34 float len = length();
p3p 0:3cc1a808d8c6 35 x = x/len;
p3p 0:3cc1a808d8c6 36 y = y/len;
p3p 0:3cc1a808d8c6 37 z = z/len;
p3p 0:3cc1a808d8c6 38 }
pvaibhav 4:1ced03aa8c75 39
pvaibhav 4:1ced03aa8c75 40 Vector3 normalised() const {
pvaibhav 3:c0137be74db4 41 return *this / length();
pvaibhav 2:26ba41c58962 42 }
pvaibhav 4:1ced03aa8c75 43
pvaibhav 4:1ced03aa8c75 44 float dot_product(const Vector3 &v) const {
p3p 0:3cc1a808d8c6 45 return x*v.x + y*v.y + z*v.z;
p3p 0:3cc1a808d8c6 46 }
pvaibhav 4:1ced03aa8c75 47
pvaibhav 4:1ced03aa8c75 48 Vector3 cross_product(const Vector3 &v) const {
p3p 0:3cc1a808d8c6 49 Vector3 temp(y*v.z - z*v.y, z*v.x - x*v.z, x*v.y - y*v.x);
p3p 0:3cc1a808d8c6 50 return temp;
p3p 0:3cc1a808d8c6 51 }
pvaibhav 4:1ced03aa8c75 52
p3p 0:3cc1a808d8c6 53 //operator overides
p3p 0:3cc1a808d8c6 54 void operator ()(const float x, const float y, const float z) {
p3p 0:3cc1a808d8c6 55 this->x = x;
p3p 0:3cc1a808d8c6 56 this->y = y;
p3p 0:3cc1a808d8c6 57 this->z = z;
p3p 0:3cc1a808d8c6 58 }
p3p 0:3cc1a808d8c6 59
pvaibhav 1:857642c51139 60 bool operator == (const Vector3 &v) const {
p3p 0:3cc1a808d8c6 61 return (x==v.x && y==v.y && z==v.z);
p3p 0:3cc1a808d8c6 62 }
p3p 0:3cc1a808d8c6 63
pvaibhav 1:857642c51139 64 bool operator != (const Vector3 &v) const {
p3p 0:3cc1a808d8c6 65 return (x!=v.x || y!=v.y || z!=v.z);
p3p 0:3cc1a808d8c6 66 }
p3p 0:3cc1a808d8c6 67
pvaibhav 4:1ced03aa8c75 68 const Vector3 &operator = (const Vector3 &v) {
p3p 0:3cc1a808d8c6 69 x = v.x;
p3p 0:3cc1a808d8c6 70 y = v.y;
pvaibhav 4:1ced03aa8c75 71 z = v.z;
p3p 0:3cc1a808d8c6 72 return *this;
p3p 0:3cc1a808d8c6 73 }
pvaibhav 4:1ced03aa8c75 74
p3p 0:3cc1a808d8c6 75 const Vector3 operator - (void) const {
p3p 0:3cc1a808d8c6 76 return Vector3(-x,-y,-z);
p3p 0:3cc1a808d8c6 77 }
pvaibhav 4:1ced03aa8c75 78
p3p 0:3cc1a808d8c6 79 const Vector3 operator + (const Vector3 &v) const {
p3p 0:3cc1a808d8c6 80 return Vector3(x+v.x, y+v.y, z+v.z);
pvaibhav 4:1ced03aa8c75 81 }
p3p 0:3cc1a808d8c6 82
p3p 0:3cc1a808d8c6 83 const Vector3 operator - (const Vector3 &v) const {
p3p 0:3cc1a808d8c6 84 return Vector3(x-v.x, y-v.y, z-v.z);
p3p 0:3cc1a808d8c6 85 }
pvaibhav 4:1ced03aa8c75 86
p3p 0:3cc1a808d8c6 87 const Vector3 operator * (const float num) const {
p3p 0:3cc1a808d8c6 88 Vector3 temp;
p3p 0:3cc1a808d8c6 89 temp.x = x * num;
pvaibhav 4:1ced03aa8c75 90 temp.y = y * num;
pvaibhav 4:1ced03aa8c75 91 temp.z = z * num;
p3p 0:3cc1a808d8c6 92 return temp;
p3p 0:3cc1a808d8c6 93 }
p3p 0:3cc1a808d8c6 94
p3p 0:3cc1a808d8c6 95 const Vector3 operator / (const float num) const {
p3p 0:3cc1a808d8c6 96 Vector3 temp;
p3p 0:3cc1a808d8c6 97 temp.x = x / num;
pvaibhav 4:1ced03aa8c75 98 temp.y = y / num;
pvaibhav 4:1ced03aa8c75 99 temp.z = z / num;
p3p 0:3cc1a808d8c6 100 return temp;
p3p 0:3cc1a808d8c6 101 }
pvaibhav 4:1ced03aa8c75 102
p3p 0:3cc1a808d8c6 103 float operator * (const Vector3 &v) const {
p3p 0:3cc1a808d8c6 104 return x*v.x + y*v.y + z*v.z;
p3p 0:3cc1a808d8c6 105 }
pvaibhav 4:1ced03aa8c75 106
p3p 0:3cc1a808d8c6 107 float x, y, z;
pvaibhav 4:1ced03aa8c75 108
p3p 0:3cc1a808d8c6 109 };
p3p 0:3cc1a808d8c6 110
p3p 0:3cc1a808d8c6 111 #endif