ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / Soft / Lib / Maths / quaternions.h
diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Lib/Maths/quaternions.h b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/Soft/Lib/Maths/quaternions.h
new file mode 100644 (file)
index 0000000..481f19c
--- /dev/null
@@ -0,0 +1,56 @@
+/**
+ *  \file     quaternions.c
+ *  \brief    Quaternions library used by Mykonos
+ *  \author   Fran�ois Callou <francois.callou@parrot.com>
+ *  \version  1.0
+ */
+
+#ifndef _QUATERNIONS_H_
+#define _QUATERNIONS_H_
+
+#include <Maths/matrices.h>
+#include <VP_Os/vp_os_types.h>
+
+typedef struct _angles_t
+{
+  float32_t phi;
+  float32_t theta;
+  float32_t psi;
+} angles_t;
+
+
+typedef struct _quaternion_t {
+  float32_t   a;
+  vector31_t  v;
+} quaternion_t;
+
+extern const quaternion_t quat_unitary;
+
+// TODO Documentation
+
+// Multiplies two quaternions q1 & q2. Stores result in out.
+void mul_quat( quaternion_t* out, quaternion_t* q1, quaternion_t* q2);
+
+// Adds two quaternions q1 & q2. Stores result in out.
+void add_quat( quaternion_t* out, quaternion_t* q1, quaternion_t* q2 );
+
+// Multiplies a quaternion ny a scalar
+void mulconst_quat( quaternion_t *out, quaternion_t *q, float32_t k );
+
+// Stores the conjugate quaternion in out
+void conjugate_quat( quaternion_t* out, quaternion_t* q );
+
+// Compuets the norm of a quaternion
+float32_t norm_quat( quaternion_t* q );
+
+//Normalises a quaternion
+bool_t normalize_quat( quaternion_t* q );
+
+//transformss a quaternion to the cprrsep�nding euler rotation matrix
+void quat_to_euler_rot_mat(matrix33_t* m, quaternion_t* q);
+
+//transformss a quaternion to the corrseponding euler angles
+void quat_to_euler_angles(angles_t* a, quaternion_t* q);
+
+
+#endif // _QUATERNIONS_H_