Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: cool_step_new cool_step_1 SML2
Fork of QuaternionMath by
Vector3.h@4:1ced03aa8c75, 2015-03-13 (annotated)
- 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?
| User | Revision | Line number | New 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 |
