LSM303DLH interface library

Dependents:   LSM303DLH_Example Arch_Test

Committer:
yamaguch
Date:
Thu Oct 06 08:38:06 2011 +0000
Revision:
0:9b2a0b783bfc
0.1

Who changed what in which revision?

UserRevisionLine numberNew 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