Quaternion
The Quaternion class represents a 4-dimensional quaternion used primarily for efficient and smooth rotation operations in 3D space. Quaternions are typically utilized in game development and 3D graphics applications to handle complex rotations without encountering issues like gimbal lock.
Usage
To use this class, add the following require at the top of your script:
Reference
Operators
*
Rotate a Vector3 by this Quaternion
-
Negation (inverse orientation)
==
Approximate equality (dot > 0.999999)
new
Create new Quaternion
Parameters
x(number): x componenty(number): y componentz(number): z componentw(number): w component
Returns
Quaternion: quaternion
set
Set components of the quaternion
Parameters
x(number): x componenty(number): y componentz(number): z componentw(number): w component
clone
Clone the quaternion
Returns
Quaternion: clone
get
Return the components as array
Returns
number: The X componentnumber: The Y componentnumber: The Z componentnumber: The W component
toData
Returns the components as table
Returns
table: components
dot
Calculates dot product of quaternion
Parameters
ab
Returns
number: product
angle
Calculates ange between 2 quaternions
Parameters
a(Quaternion): first quaternionb(Quaternion): second quaternion
Returns
number: in degrees
fromAngleAxis
Creates a new quaternion from angle and axis
Parameters
angle(number): angle in degreesaxis(Vector3): axis vector
Returns
Quaternion: quaternion
equals
Checks if two quaternions are equal
Parameters
b(Quaternion): second quaternion
Returns
boolean: comparison result
fromEuler
Creates new quaternion from euler angles
Parameters
x(number): x axis rotation in degreesy(number): y axis rotation in degreesz(number): z axis rotation in degrees
Returns
Quaternion: quaternion
setFromEuler
Set quaternion values based on euler angles
Parameters
x(number): x axis rotation in degreesy(number): y axis rotation in degreesz(number): z axis rotation in degrees
normalized
Return normalized version of quaternion
Returns
Quaternion: quaternion
normalize
Normalize quaternion
Returns
Quaternion: itself
fromToRotation
Returns a quaternion representing the rotation from one vector to another.
Parameters
from(Vector3): The starting direction vectorto(Vector3): The target direction vector
Returns
Quaternion: quaternion that rotates from to align with to
setFromToRotation
Sets this quaternion to represent the rotation from one vector to another
Parameters
from(Vector3): starting directionto(Vector3): target direction
Returns
Quaternion: quaternion, updated in place
inverse
Calculate inverse of this quaternion
Returns
Quaternion: quaternion
lerp
Linear interpolation from one quaternion to another one
Parameters
q1(Quaternion): first quaternionq2(Quaternion): second quaterniont(number): position between 0 and 1 where to interpolate
Returns
Quaternion: interpolated quaternion
lookRotation
Create a quaternion to look at a target direction
Parameters
forward(Vector3): direction to look atup(Vector3): up direction
Returns
Quaternion: rotation
setIdentity
Set identity quaternion
slerp
Spherical linear interpolation from one quaternion to another one
Parameters
from(Quaternion): first quaternionto(Quaternion): second quaterniont(number): position between 0 and 1 where to interpolate
Returns
Quaternion: interpolated quaternion
rotateTowards
Rotate the source quaternion towards the destination quaternion but only to a maximum degree
Parameters
from(Quaternion): source quaternionto(Quaternion): destination quaternionmaxDegreesDelta(number): maximim degrees to rotate.
Returns
Quaternion: quaternion
toAngleAxis
Convert quaternion to angle and axis
Returns
table: of angle in degrees as number and axis as Vector3
toEulerAngles
Convert to euler angles
Returns
Vector3: euler angles as Vector3
forward
Multiply with forward vector3 0/0/1
Returns
Vector3: the new vector
mulVec3
Multiply Quaternion with Vector3
Parameters
point(Vector3): the vector to multiply with
Returns
Vector3: result vector