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