33 #ifndef ZENI_QUATERNION_H
34 #define ZENI_QUATERNION_H
45 inline explicit Quaternion(
const bool °enerate_ =
false);
46 Quaternion(
const float &time,
const Vector3f &space,
const bool °enerate_ =
false);
47 Quaternion(
const float &yaw,
const float &pitch,
const float &roll,
const bool °enerate_ =
false);
48 Quaternion(
const Quaternion &rhs,
const bool °enerate_ =
false);
51 static Quaternion Axis_Angle(
const Vector3f &
v,
const float &theta);
55 static Quaternion Forward_Up(
const Vector3f &destination_forward,
61 inline Quaternion
operator+(
const Quaternion &rhs)
const;
62 inline Quaternion operator-(
const Quaternion &rhs)
const;
63 inline Quaternion & operator+=(
const Quaternion &rhs);
64 inline Quaternion & operator-=(
const Quaternion &rhs);
67 inline Quaternion
operator*(
const Quaternion &rhs)
const;
68 inline Quaternion operator*=(
const Quaternion &rhs);
69 inline Quaternion grassman_product(
const Quaternion &rhs)
const;
70 inline Quaternion grassman_even_product(
const Quaternion &rhs)
const;
71 inline Quaternion grassman_odd_product(
const Quaternion &rhs)
const;
72 inline Quaternion euclidean_product(
const Quaternion &rhs)
const;
73 inline Quaternion euclidean_even_product(
const Quaternion &rhs)
const;
74 inline Quaternion euclidean_odd_product(
const Quaternion &rhs)
const;
77 inline Quaternion
operator*(
const float &rhs)
const;
78 inline Quaternion
operator/(
const float &rhs)
const;
79 inline Quaternion & operator*=(
const float &rhs);
80 inline Quaternion & operator/=(
const float &rhs);
81 inline Quaternion operator-()
const;
84 Quaternion & normalize();
86 inline float magnitude2()
const;
87 inline float magnitude()
const;
88 inline Quaternion conjugate()
const;
89 inline Quaternion reciprocal()
const;
90 inline Quaternion absolute_value()
const;
91 inline Quaternion norm()
const;
92 inline Quaternion determinant()
const;
93 inline Quaternion adjoint()
const;
97 inline std::pair<Vector3f, float> get_rotation()
const;
101 inline const float & operator[](
const int &
index)
const;
102 inline float & operator[](
const int &index);
118 ZENI_DLL std::ostream &
serialize(std::ostream &os,
const Quaternion &
value);
GLint GLenum GLboolean normalized
TiXmlString operator+(const TiXmlString &a, const TiXmlString &b)
Quaternion operator/(const float &lhs, const Quaternion &rhs)
std::istream & unserialize(std::istream &is, Color &value)
std::ostream & serialize(std::ostream &os, const Color &value)
A Featureful 3-Space Vector Class.
A Featureful Quaternion Class.
Quaternion operator*(const float &lhs, const Quaternion &rhs)
EGLSurface EGLint void ** value
A Featureful 4-Space Matrix Class.
GLsizei GLsizei GLchar * source
#define ZENI_DEFAULT_UP_VECTOR
#define ZENI_DEFAULT_FORWARD_VECTOR