LSM303DLH interface library

Dependents:   LSM303DLH_Example Arch_Test

Vector.h

Committer:
yamaguch
Date:
2011-10-06
Revision:
0:9b2a0b783bfc

File content as of revision 0:9b2a0b783bfc:

#ifndef VECTOR_H
#define VECTOR_H

#include "mbed.h"

class Vector {
public:
    float x, y, z;
    
    Vector(): x(0), y(0), z(0) {}
    
    Vector(float x, float y, float z) : x(x), y(y), z(z) {}
    
    Vector(const Vector& v) {
        x = v.x, y = v.y, z = v.z;
    }

    Vector product(const Vector& v) {
        return Vector(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x);
    }

    float dot(const Vector& v) {
        return x * v.x + y * v.y + z * v.z;
    }

    Vector scale(const float c) {
        return Vector(c * x, c * y, c * z);
    }

    float norm() {
        return sqrt(x * x + y * y + z * z);
    }

    Vector operator*(const Vector& v) {
        return product(v);
    }

    Vector operator /=(float c) {
        return *this = scale(1 / c);
    }

    Vector operator *=(float c) {
        return *this = scale(c);
    }
};

#endif