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