44 template<
typename Type>
52 union { Type
i; Type
x; };
53 union { Type
j; Type
y; };
54 union { Type
k; Type
z; };
156 if (
x != other.x)
return x < other.x;
157 else if (
y != other.y)
return y < other.y;
158 else if (
z != other.z)
return z < other.z;
159 else return w < other.w;
165 if (
x != other.x)
return x > other.x;
166 else if (
y != other.y)
return y > other.y;
167 else if (
z != other.z)
return z > other.z;
168 else return w > other.w;
Quaterniond(const Quaternionx< double > ©)
Definition: quaternion.h:207
Type i
Definition: quaternion.h:52
Quaternionx()
Definition: quaternion.h:56
Quaternionf(float real, float i, float j, float k)
Definition: quaternion.h:194
Quaternion - Float.
Definition: quaternion.h:188
static Quaternionx< Type > rotation_between(Vec3< Type > v0, Vec3< Type > v1)
Calculates the shortest arc quaternion between two vectors.
void set(const Vec3< Type > &euler, AngleUnit unit, EulerOrder order)
bool operator>(const Quaternionx< Type > &other) const
Greater operator.
Definition: quaternion.h:163
Type j
Definition: quaternion.h:53
static Quaternionx< Type > normalize(Quaternionx< Type > q)
Normalizes this quaternion.
Definition: quaternion.h:135
Quaternion.
Definition: mat4.h:70
Type z
Definition: quaternion.h:54
static Quaternionx< Type > slerp(const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type slerp_time)
Spherical Quaternion Interpolation.
static Quaternionx< Type > rotation_between(Vec4< Type > v0, Vec4< Type > v1)
Calculates the shortest arc quaternion between two vectors.
Quaternionx< Type > operator*(const Quaternionx< Type > &mult) const
Multiplication operator.
Definition: quaternion.h:149
Quaternionf()
Definition: quaternion.h:190
Type k
Definition: quaternion.h:54
static Quaternionx< Type > inverse(Quaternionx< Type > q)
Inverse this quaternion.
Definition: quaternion.h:142
Type y
Definition: quaternion.h:53
Mat4< Type > to_matrix() const
Convert the quaternion to a rotation matrix.
bool operator<=(const Quaternionx< Type > &other) const
Less equal operator.
Definition: quaternion.h:172
Quaterniond(const Vec3< double > &euler, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:212
Quaternionf(const Mat4< float > &rotation_matrix)
Definition: quaternion.h:192
Type w
The real scalar part.
Definition: quaternion.h:49
Angle class.
Definition: angle.h:63
Quaternionx< Type > & rotate(const Angle &angle, const Vec3f &axis)
EulerOrder
Euler angle rotation order.
Definition: angle.h:51
Type x
Definition: quaternion.h:52
Quaternion - Double.
Definition: quaternion.h:204
Quaternionx< Type > & normalize()
Normalizes this quaternion.
void set(const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
Quaterniond(const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
Definition: quaternion.h:213
Quaterniond()
Definition: quaternion.h:206
static Quaternionx< Type > multiply(const Quaternionx< Type > &quaternion_1, const Quaternionx< Type > &quaternion_2)
4D matrix
Definition: mat2.h:51
Quaternionx< Type > & rotate(const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
static Quaternionx< Type > lerp(const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type lerp_time)
Linear Quaternion Interpolation.
AngleUnit
Angle unit.
Definition: angle.h:44
Quaterniond(double real, const Vec3< double > &imag)
Definition: quaternion.h:210
Vec3< Type > rotate_vector(const Vec3< Type > &v) const
Rotates vector by this quaternion.
static Quaternionx< Type > axis_angle(const Angle &angle, const Vec3f &axis)
4D vector
Definition: size.h:47
Quaternionf(const Vec3< float > &euler, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:197
Quaternionf(const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
Definition: quaternion.h:198
Quaterniond(double real, double i, double j, double k)
Definition: quaternion.h:209
bool operator<(const Quaternionx< Type > &other) const
Less operator.
Definition: quaternion.h:154
Quaternionf(const Quaternionx< float > ©)
Definition: quaternion.h:191
Quaterniond(double euler_x, double euler_y, double euler_z, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:211
Quaternionx(const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
bool operator!=(const Quaternionx< Type > &other) const
Not equal operator.
Definition: quaternion.h:181
Quaternionf(float real, const Vec3< float > &imag)
Definition: quaternion.h:195
bool operator>=(const Quaternionx< Type > &other) const
Greater equal operator.
Definition: quaternion.h:175
Type magnitude() const
Get the quaternion magnitude.
Quaternionx(Type real, const Vec3< Type > &imag)
Definition: quaternion.h:58
Quaternionx< Type > & inverse()
Inverse this quaternion.
Vec4< Type > rotate_vector(const Vec4< Type > &v) const
3D vector
Definition: line_ray.h:48
Quaternionf(float euler_x, float euler_y, float euler_z, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:196
Quaternionx(const Vec3< Type > &euler, AngleUnit unit, EulerOrder order)
bool operator==(const Quaternionx< Type > &other) const
Equal operator.
Definition: quaternion.h:178
Quaternionx(const Quaternionx< Type > ©)
Definition: quaternion.h:59
Quaternionx(const Mat4< Type > &rotation_matrix)
Quaternionx(Type real, Type i, Type j, Type k)
Definition: quaternion.h:57
Quaternionx(Type euler_x, Type euler_y, Type euler_z, AngleUnit unit, EulerOrder order)
void set(Type euler_x, Type euler_y, Type euler_z, AngleUnit unit, EulerOrder order)
Quaterniond(const Mat4< double > &rotation_matrix)
Definition: quaternion.h:208