imu01c

Committer:
HMFK03LST1
Date:
Wed Jul 20 14:13:23 2016 +0000
Revision:
3:a55edecc96e2
Parent:
0:456611adedf8
first

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HMFK03LST1 0:456611adedf8 1 #include <vector.h>
HMFK03LST1 0:456611adedf8 2 #include <math.h>
HMFK03LST1 0:456611adedf8 3
HMFK03LST1 0:456611adedf8 4 void vector_cross(const vector *a,const vector *b, vector *out)
HMFK03LST1 0:456611adedf8 5 {
HMFK03LST1 0:456611adedf8 6 out->x = a->y*b->z - a->z*b->y;
HMFK03LST1 0:456611adedf8 7 out->y = a->z*b->x - a->x*b->z;
HMFK03LST1 0:456611adedf8 8 out->z = a->x*b->y - a->y*b->x;
HMFK03LST1 0:456611adedf8 9 }
HMFK03LST1 0:456611adedf8 10
HMFK03LST1 0:456611adedf8 11 float vector_dot(const vector *a,const vector *b)
HMFK03LST1 0:456611adedf8 12 {
HMFK03LST1 0:456611adedf8 13 return a->x*b->x+a->y*b->y+a->z*b->z;
HMFK03LST1 0:456611adedf8 14 }
HMFK03LST1 0:456611adedf8 15
HMFK03LST1 0:456611adedf8 16 void vector_normalize(vector *a)
HMFK03LST1 0:456611adedf8 17 {
HMFK03LST1 0:456611adedf8 18 float mag = sqrt(vector_dot(a,a));
HMFK03LST1 0:456611adedf8 19 a->x /= mag;
HMFK03LST1 0:456611adedf8 20 a->y /= mag;
HMFK03LST1 0:456611adedf8 21 a->z /= mag;
HMFK03LST1 0:456611adedf8 22 }
HMFK03LST1 0:456611adedf8 23
HMFK03LST1 0:456611adedf8 24 void vector_norm_xz(vector*a)
HMFK03LST1 0:456611adedf8 25 {
HMFK03LST1 3:a55edecc96e2 26 float mag = sqrt((a->x*a->x) + (a->z*a->z));
HMFK03LST1 0:456611adedf8 27 a->x /= mag;
HMFK03LST1 0:456611adedf8 28 a->y = 0;
HMFK03LST1 0:456611adedf8 29 a->z /= mag;
HMFK03LST1 0:456611adedf8 30
HMFK03LST1 0:456611adedf8 31 }
HMFK03LST1 0:456611adedf8 32
HMFK03LST1 0:456611adedf8 33 void vector_norm_xy(vector*a)
HMFK03LST1 0:456611adedf8 34 {
HMFK03LST1 0:456611adedf8 35 float mag = sqrt(a->x*a->x + a->y*a->y);
HMFK03LST1 0:456611adedf8 36 a->x /= mag;
HMFK03LST1 0:456611adedf8 37 a->y /= mag;
HMFK03LST1 0:456611adedf8 38 a->z = 0;
HMFK03LST1 0:456611adedf8 39 }
HMFK03LST1 0:456611adedf8 40
HMFK03LST1 0:456611adedf8 41 void vector_norm_yz(vector*a)
HMFK03LST1 0:456611adedf8 42 {
HMFK03LST1 0:456611adedf8 43 float mag = sqrt(a->z*a->z + a->y*a->y);
HMFK03LST1 0:456611adedf8 44 a->x = 0;
HMFK03LST1 0:456611adedf8 45 a->y /= mag;
HMFK03LST1 0:456611adedf8 46 a->z /= mag;
HMFK03LST1 0:456611adedf8 47 }