00001 #ifndef _QUATERNION_H_ 00002 #define _QUATERNION_H_ 00003 00004 #include "fmath.h" 00005 #include "vector.h" 00006 00007 typedef float quat_t; 00008 typedef quat_t quat[4]; 00009 00010 void quat_add(quat,quat,quat); 00011 void quat_addeq(quat,quat); 00012 void quat_sub(quat,quat,quat); 00013 void quat_subeq(quat,quat); 00014 void quat_scl(quat,quat_t,quat); 00015 void quat_scleq(quat,quat_t); 00016 void quat_mul(quat,quat,quat); 00017 void quat_muleq(quat,quat); 00018 void quat_qvmul(quat,vec3,quat); 00019 void quat_vqmul(vec3,quat,quat); 00020 void quat_inverse(quat,quat); 00021 void quat_invert(quat); 00022 void quat_normal(quat,quat); 00023 void quat_normalize(quat); 00024 void quat_vector(quat,vec3); 00025 void quat_copy(quat,quat); 00026 void quat_set(quat,quat_t,quat_t,quat_t,quat_t); 00027 void quat_lerp(quat,quat,float,quat); 00028 void quat_slerp(quat,quat,float,quat); 00029 void quat_rotate_vec(quat,vec3,vec3); 00030 void quat_cross(quat,quat,quat); 00031 void quat_conjugate(quat,quat); 00032 quat_t quat_length(quat); 00033 quat_t quat_dot(quat,quat); 00034 quat_t quat_scalar(quat); 00035 void quat_complete(quat); 00036 void quat_from_euler(quat,float,float,float); 00037 00038 #endif