struct
#include <Spore ModAPI/Spore/MathUtils.h>
Quaternion A vector of 4 float values (x, y, z, w) representing a quaternion rotation, similar to a Vector4.
Quaternions an be multiplied to chain rotations: q1 * q2
means applying rotation r2
followed by rotation r2
. You can use the Quaternion::
Base classes
 struct Vector4
 A vector of 4 float values (x, y, z, w).
Public static functions
 static auto FromRotation(const Vector3& axis, float angle) > Quaternion
 Constructs a Quaternion that represents a rotation of the given angle (in radians) around a certain axis.
 static auto FromEuler(const Vector3& angles) > Quaternion
 Constructs a Quaternion that represents a rotation, given in euler angles in radians.

static auto GetRotationTo(const Vector3& from,
const Vector3& to,
const Vector3& fallbackAxis = Vector3::
ZERO ) > Quaternion  Returns the quaternion the rotation between two vectors.
Constructors, destructors, conversion operators
 Quaternion(float x, float y, float z, float w)
 Quaternion()
Public functions
 auto Inverse() const > Quaternion
 Returns the inverse to this quaternion: that's another quaternion that, when multiplied with this one, gives the identity.
 auto ToMatrix() const > Matrix3
 Builds a 3x3 rotation matrix equivalent to this quaternion rotation.
 auto ToEuler() const > Vector3
 Returns the euler angles (in radians) that represent the same rotation as this quaternion.
Function documentation
static Quaternion Math::Quaternion:: FromRotation(const Vector3& axis,
float angle)
Constructs a Quaternion that represents a rotation of the given angle (in radians) around a certain axis.
Parameters  

axis  The axis of rotation. Only the direction matters, the length is ignored. 
angle  The angle of rotation, in radians. 
static Quaternion Math::Quaternion:: FromEuler(const Vector3& angles)
Constructs a Quaternion that represents a rotation, given in euler angles in radians.
Parameters  

angles  Rotation around X (roll), Y (pitch) and Z (yaw) axes, in radians 
The quaternion will be constructed as if the rotations were applied in Z, Y, X order.
static Quaternion Math::Quaternion:: GetRotationTo(const Vector3& from,
const Vector3& to,
const Vector3& fallbackAxis = Vector3::ZERO )
Returns the quaternion the rotation between two vectors.
Parameters  

from  Vector to rotate from. 
to  Vector to rotate to. 
fallbackAxis  If the two vectors are parallel but opposite, this method returns a 180 degrees rotation around the fallback axis. 
This means that applying the returned quaternion to the vector from
produces the vector to
(assuming they have the same length).
The operation will be applied to normalized versions of the vectors, so their length does not matter.