27 array<float, 4>
data { 0.0f, 0.0f, 0.0f, 0.0f };
55 inline Quaternion(
const array<float, 3>& vector3,
float w) {
113 data[0] = vector3[0];
114 data[1] = vector3[1];
115 data[2] = vector3[2];
279 array<float, 4> _data;
323 return (
this == &quaternion) ||
363 auto radians = angle *
Math::PI / 180.0f;
462 auto r = this->
clone().
add(quaternion);
472 auto r = this->
clone().
sub(quaternion);
521 auto qInverted =
Quaternion(1.0f / quaternion[0], 1.0f / quaternion[1], 1.0f / quaternion[2], 1.0f / quaternion[3]);
532 return this->
add(quaternion);
541 return this->
sub(quaternion);
559 auto qInverted =
Quaternion(1.0f / quaternion[0], 1.0f / quaternion[1], 1.0f / quaternion[2], 1.0f / quaternion[3]);
569 return this->
equals(quaternion);
578 return this->
equals(quaternion) ==
false;
static float sqrt(float value)
Returns the square root of given value.
static float sin(float x)
Returns the sine of x.
static float cos(float x)
Returns the cosine of x.
static constexpr float EPSILON
static auto abs(auto value)
Returns absolute value.
static float asin(float x)
Returns the arc sine of x.
static float atan2(float y, float x)
Returns the angle from the conversion of rectangular coordinates to polar coordinates.
static constexpr float PI
static constexpr float DEG2RAD
static auto clamp(auto value, auto min, auto max)
Clamps a value to min or max value.
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Quaternion class representing quaternion mathematical structure and operations with x,...
Quaternion operator*(const float scalar) const
Operator * scalar.
Quaternion(const Quaternion &quaternion)
Public constructor.
const float & operator[](int i) const
Const array access operator.
Quaternion & identity()
Creates identity quaternion.
Vector3 multiply(const Vector3 &vector3) const
Multiplies this quaternion with vector3.
float & operator[](int i)
Array access operator.
Quaternion(const Vector3 &vector3, float w)
Public constructor.
Quaternion & add(const Quaternion &quaternion)
Adds quaternion.
Quaternion & scale(float scalar)
Scales by scalar.
Vector3 computeEulerAngles() const
Compute Euler angles.
Quaternion & operator+=(const Quaternion &quaternion)
Operator += quaternion.
Quaternion operator+(const Quaternion &quaternion) const
Operator + quaternion.
Quaternion & operator/=(const Quaternion &quaternion)
Operator /= quaternion.
Quaternion operator-(const Quaternion &quaternion) const
Operator - quaternion.
Matrix4x4 computeMatrix() const
Computes a rotation matrix4x4 from this quaternion.
Quaternion(const array< float, 4 > &quaternion)
Public constructor.
Quaternion(float x, float y, float z, float w)
Public constructor.
bool operator==(const Quaternion &quaternion) const
Equality comparison operator.
Quaternion operator/(const float scalar) const
Operator / scalar.
Quaternion & operator*=(const Quaternion &quaternion)
Operator *= quaternion.
Quaternion()
Public constructor.
bool operator!=(const Quaternion &quaternion) const
Non equality comparison operator.
Quaternion & set(const Vector3 &vector3, float w)
Sets this quaternion by vector3 and w component.
Quaternion & multiply(const Quaternion quaternion)
Multiplies this quaternion with given quaternion.
Quaternion & rotate(const Vector3 &axis, float angle)
Creates rotation quaternion.
Quaternion & sub(const Quaternion &quaternion)
Subtracts quaternion.
Quaternion & setY(float y)
Sets y component.
Quaternion & setW(float w)
Sets w component.
Quaternion & setZ(float z)
Sets z component.
Quaternion & invert()
Inverts this quaternion.
Quaternion & set(const array< float, 4 > &quaternion)
Sets this quaternion by array.
Quaternion clone() const
Clones this quaternion.
Quaternion & set(const array< float, 3 > &vector3, float w)
Sets this quaternion by vector3 by array and w component.
Quaternion & operator-=(const Quaternion &quaternion)
Operator -= quaternion.
const array< float, 4 > & getArray() const
bool equals(const Quaternion &quaternion) const
Compares this quaternion with given quaternion.
Quaternion & normalize()
Normalizes this quaternion.
Quaternion & set(float x, float y, float z, float w)
Sets this quaternion by its components.
bool equals(const Quaternion &quaternion, float tolerance) const
Compares this quaternion with given quaternion.
Quaternion & set(const Quaternion &quaternion)
Sets this quaternion by given quaternion.
Quaternion(const array< float, 3 > &vector3, float w)
Public constructor.
Quaternion & setX(float x)
Sets x component.
Vector3 class representing vector3 mathematical structure and operations with x, y,...
static Vector3 computeCrossProduct(const Vector3 &a, const Vector3 &b)
Computes the cross product of a and b.
Vector3 & add(float scalar)
Adds a scalar.
Vector3 & scale(float scalar)
Scales by scalar.
Vector3 & set(float x, float y, float z)
Sets this vector3 by its components.