3 * \brief Matrices library used by ARDrone
4 * \author Jean-Baptiste Lanfrey <jean-baptiste.lanfrey@parrot.com>
11 #include <VP_Os/vp_os_types.h>
13 typedef struct _matrix33_t
26 typedef struct _vector31_t {
38 typedef union _vector21_t {
47 extern const matrix33_t matrix_id3;
48 extern const vector31_t vector31_zero;
49 extern const vector31_t vector31_z;
53 // Multiplies two matrices m1 & m2. Stores result in out.
54 void mul_mat( matrix33_t* out, matrix33_t *m1, matrix33_t *m2 );
57 void add_mat( matrix33_t* out, matrix33_t *m1, matrix33_t *m );
60 void mulvec_mat( vector31_t* out, matrix33_t *m1, vector31_t *v1 );
63 void transpose_mat( matrix33_t *out, matrix33_t *m1 );
66 void mulconst_mat( matrix33_t *out, matrix33_t *m1, float32_t k );
69 void cross_vec( vector31_t* out, vector31_t *v1, vector31_t *v2 );
72 void dot_vec( float32_t* out, const vector31_t *v1, const vector31_t *v2 );
75 void add_vec( vector31_t* out, vector31_t *v1, vector31_t *v2 );
78 void mulconst_vec( vector31_t *out, vector31_t *V1, float32_t k );
81 void skew_anti_symetric_vec( matrix33_t *out, vector31_t *v );
84 void vex( vector31_t *out, matrix33_t *m );
87 float32_t norm_vec( vector31_t *v );
90 bool_t normalize_vec( vector31_t* v );
93 #endif // _MATRICES_H_