00001
00002
00003
00004 #ifndef CAJUN_QUATERNION_H
00005 #define CAJUN_QUATERNION_H
00006
00007 namespace cajun
00008 {
00009 class quaternion_t
00010 {
00011 public:
00012 quaternion_t ();
00013 quaternion_t (double w_, double x_, double y_, double z_);
00014
00015 void set (double w_, double x_, double y_, double z_);
00016 void normalize ();
00017 double dotproduct (quaternion_t q_);
00018
00019 void mat_to_quat (double mat_[4][4]);
00020 void axis_to_quat (double x_, double y_, double z_);
00021
00022 void quat_to_matrix (double mat_[4]);
00023 void quat_to_matrix (double mat_[4][4]);
00024
00025 void deg_to_matrix (double x_, double y_, double z_,
00026 double mat_[4]);
00027 void deg_to_matrix (double x_, double y_, double z_,
00028 double mat_[4][4]);
00029 private:
00030 double m_w, m_x, m_y, m_z;
00031 };
00032 };
00033 #endif