LSM303DLH interface library
Dependents: LSM303DLH_Example Arch_Test
Vector.h@0:9b2a0b783bfc, 2011-10-06 (annotated)
- Committer:
- yamaguch
- Date:
- Thu Oct 06 08:38:06 2011 +0000
- Revision:
- 0:9b2a0b783bfc
0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yamaguch | 0:9b2a0b783bfc | 1 | #ifndef VECTOR_H |
yamaguch | 0:9b2a0b783bfc | 2 | #define VECTOR_H |
yamaguch | 0:9b2a0b783bfc | 3 | |
yamaguch | 0:9b2a0b783bfc | 4 | #include "mbed.h" |
yamaguch | 0:9b2a0b783bfc | 5 | |
yamaguch | 0:9b2a0b783bfc | 6 | class Vector { |
yamaguch | 0:9b2a0b783bfc | 7 | public: |
yamaguch | 0:9b2a0b783bfc | 8 | float x, y, z; |
yamaguch | 0:9b2a0b783bfc | 9 | |
yamaguch | 0:9b2a0b783bfc | 10 | Vector(): x(0), y(0), z(0) {} |
yamaguch | 0:9b2a0b783bfc | 11 | |
yamaguch | 0:9b2a0b783bfc | 12 | Vector(float x, float y, float z) : x(x), y(y), z(z) {} |
yamaguch | 0:9b2a0b783bfc | 13 | |
yamaguch | 0:9b2a0b783bfc | 14 | Vector(const Vector& v) { |
yamaguch | 0:9b2a0b783bfc | 15 | x = v.x, y = v.y, z = v.z; |
yamaguch | 0:9b2a0b783bfc | 16 | } |
yamaguch | 0:9b2a0b783bfc | 17 | |
yamaguch | 0:9b2a0b783bfc | 18 | Vector product(const Vector& v) { |
yamaguch | 0:9b2a0b783bfc | 19 | return Vector(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x); |
yamaguch | 0:9b2a0b783bfc | 20 | } |
yamaguch | 0:9b2a0b783bfc | 21 | |
yamaguch | 0:9b2a0b783bfc | 22 | float dot(const Vector& v) { |
yamaguch | 0:9b2a0b783bfc | 23 | return x * v.x + y * v.y + z * v.z; |
yamaguch | 0:9b2a0b783bfc | 24 | } |
yamaguch | 0:9b2a0b783bfc | 25 | |
yamaguch | 0:9b2a0b783bfc | 26 | Vector scale(const float c) { |
yamaguch | 0:9b2a0b783bfc | 27 | return Vector(c * x, c * y, c * z); |
yamaguch | 0:9b2a0b783bfc | 28 | } |
yamaguch | 0:9b2a0b783bfc | 29 | |
yamaguch | 0:9b2a0b783bfc | 30 | float norm() { |
yamaguch | 0:9b2a0b783bfc | 31 | return sqrt(x * x + y * y + z * z); |
yamaguch | 0:9b2a0b783bfc | 32 | } |
yamaguch | 0:9b2a0b783bfc | 33 | |
yamaguch | 0:9b2a0b783bfc | 34 | Vector operator*(const Vector& v) { |
yamaguch | 0:9b2a0b783bfc | 35 | return product(v); |
yamaguch | 0:9b2a0b783bfc | 36 | } |
yamaguch | 0:9b2a0b783bfc | 37 | |
yamaguch | 0:9b2a0b783bfc | 38 | Vector operator /=(float c) { |
yamaguch | 0:9b2a0b783bfc | 39 | return *this = scale(1 / c); |
yamaguch | 0:9b2a0b783bfc | 40 | } |
yamaguch | 0:9b2a0b783bfc | 41 | |
yamaguch | 0:9b2a0b783bfc | 42 | Vector operator *=(float c) { |
yamaguch | 0:9b2a0b783bfc | 43 | return *this = scale(c); |
yamaguch | 0:9b2a0b783bfc | 44 | } |
yamaguch | 0:9b2a0b783bfc | 45 | }; |
yamaguch | 0:9b2a0b783bfc | 46 | |
yamaguch | 0:9b2a0b783bfc | 47 | #endif |