42 template<
typename Type>
50 union { Type
i; Type
x; };
51 union { Type
j; Type
y; };
52 union { Type
k; Type
z; };
141 bool operator<(const Quaternionx<Type> &other)
const 143 if (
x != other.x)
return x < other.x;
144 else if (
y != other.y)
return y < other.y;
145 else if (
z != other.z)
return z < other.z;
146 else return w < other.w;
152 if (
x != other.x)
return x > other.x;
153 else if (
y != other.y)
return y > other.y;
154 else if (
z != other.z)
return z > other.z;
155 else return w > other.w;
159 bool operator<=(const Quaternionx<Type> &other)
const {
return *
this < other || *
this == other; }
Quaterniond(double real, const Vec3< double > &imag)
Definition: quaternion.h:195
bool operator>=(const Quaternionx< Type > &other) const
Greater equal operator.
Definition: quaternion.h:162
Quaternionf(float real, float i, float j, float k)
Definition: quaternion.h:179
Quaternionf(const Mat4< float > &rotation_matrix)
Definition: quaternion.h:177
Angle class.
Definition: angle.h:59
bool operator!=(const Quaternionx< Type > &other) const
Not equal operator.
Definition: quaternion.h:168
Quaterniond(double euler_x, double euler_y, double euler_z, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:196
Quaterniond(const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
Definition: quaternion.h:198
Type z
Definition: quaternion.h:52
Quaterniond(const Quaternionx< double > ©)
Definition: quaternion.h:192
static Quaternionx< Type > lerp(const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type lerp_time)
Linear Quaternion Interpolation.
Quaternion - Double.
Definition: quaternion.h:188
Quaternionf(float real, const Vec3< float > &imag)
Definition: quaternion.h:180
bool operator>(const Quaternionx< Type > &other) const
Greater operator.
Definition: quaternion.h:150
Type y
Definition: quaternion.h:51
Quaternionx< Type > & inverse()
Inverse this quaternion.
Type x
Definition: quaternion.h:50
Type j
Definition: quaternion.h:51
Mat4< Type > to_matrix() const
Convert the quaternion to a rotation matrix.
static Quaternionx< Type > axis_angle(const Angle &angle, const Vec3f &axis)
static Quaternionx< Type > rotation_between(Vec3< Type > v0, Vec3< Type > v1)
Calculates the shortest arc quaternion between two vectors.
AngleUnit
Angle unit.
Definition: angle.h:41
Quaternionf(float euler_x, float euler_y, float euler_z, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:181
Quaternion.
Definition: mat4.h:69
Quaternionx(Type real, const Vec3< Type > &imag)
Definition: quaternion.h:56
Quaterniond(const Mat4< double > &rotation_matrix)
Definition: quaternion.h:193
static Quaternionx< Type > slerp(const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type slerp_time)
Spherical Quaternion Interpolation.
Quaternion - Float.
Definition: quaternion.h:172
Quaternionx(const Quaternionx< Type > ©)
Definition: quaternion.h:57
Quaternionx()
Definition: quaternion.h:54
3D vector
Definition: line_ray.h:46
Type i
Definition: quaternion.h:50
Type k
Definition: quaternion.h:52
Vec3< Type > rotate_vector(const Vec3< Type > &v) const
Rotates vector by this quaternion.
Quaternionf(const Quaternionx< float > ©)
Definition: quaternion.h:176
Quaternionf(const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
Definition: quaternion.h:183
EulerOrder
Euler angle rotation order.
Definition: angle.h:48
Quaternionf(const Vec3< float > &euler, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:182
static Quaternionx< Type > normalize(Quaternionx< Type > q)
Normalizes this quaternion.
Definition: quaternion.h:126
4D matrix
Definition: mat2.h:50
Quaternionx(Type real, Type i, Type j, Type k)
Definition: quaternion.h:55
Quaterniond()
Definition: quaternion.h:191
4D vector
Definition: size.h:47
Quaternionf()
Definition: quaternion.h:175
static Quaternionx< Type > multiply(const Quaternionx< Type > &quaternion_1, const Quaternionx< Type > &quaternion_2)
Quaterniond(double real, double i, double j, double k)
Definition: quaternion.h:194
Quaternionx< Type > operator*(const Quaternionx< Type > &mult) const
Multiplication operator.
Definition: quaternion.h:136
Type magnitude() const
Get the quaternion magnitude.
Quaternionx< Type > & rotate(const Angle &angle, const Vec3f &axis)
Quaterniond(const Vec3< double > &euler, AngleUnit unit, EulerOrder order)
Definition: quaternion.h:197
Quaternionx< Type > & normalize()
Normalizes this quaternion.
static Quaternionx< Type > inverse(Quaternionx< Type > q)
Inverse this quaternion.
Definition: quaternion.h:133
Type w
The real scalar part.
Definition: quaternion.h:47
bool operator==(const Quaternionx< Type > &other) const
Equal operator.
Definition: quaternion.h:165