Skip to main content

Quaternion

API for creating and manipulating quaternions.

Constants

Quaternion.IDENTITY

An identity quaternion is the inverse of itself (i.e. it performs no rotation).

Quaternion.IDENTITY: Quaternion

Functions

Quaternion.create

Creates a new quaternion.

Quaternion.create(imaginary: vector, scalar: number): Quaternion

Parameters

NameTypeDescription
imaginaryvectorThe imaginary part of the quaternion.
scalarnumberThe scalar part of the quaternion.

Returns

NameTypeDescription
quaternionQuaternionNo description

Quaternion.fromEuler

Creates a quaternion from Euler angles.

Quaternion.fromEuler(eulerAngles: vector): Quaternion

Parameters

NameTypeDescription
eulerAnglesvectorNo description

Returns

NameTypeDescription
quaternionQuaternionNo description

Quaternion.toEuler

Converts a quaternion to Euler angles in pitch, yaw, roll order.

Quaternion.toEuler(quaternion: Quaternion): vector

Parameters

NameTypeDescription
quaternionQuaternionNo description

Returns

NameTypeDescription
eulerAnglesvectorNo description

Quaternion.fromAxisAngle

Creates a quaternion from an axis and an angle.

Quaternion.fromAxisAngle(axis: vector, angle: number): Quaternion

Parameters

NameTypeDescription
axisvectorThe axis of rotation.
anglenumberThe angle of rotation in radians about the axis.

Returns

NameTypeDescription
quaternionQuaternionNo description

Quaternion.conjugate

Returns the conjugate of a quaternion.

Quaternion.conjugate(quaternion: Quaternion): Quaternion

Parameters

NameTypeDescription
quaternionQuaternionNo description

Returns

NameTypeDescription
quaternionQuaternionNo description

Quaternion.inverse

Returns the inverse of a quaternion.

Quaternion.inverse(quaternion: Quaternion): Quaternion

Parameters

NameTypeDescription
quaternionQuaternionNo description

Returns

NameTypeDescription
quaternionQuaternionNo description

Quaternion.rotate

Rotates a vector by a quaternion.

Quaternion.rotate(quaternion: Quaternion, vector: vector): vector

Parameters

NameTypeDescription
quaternionQuaternionThe quaternion to rotate by.
vectorvectorThe vector to rotate.

Returns

NameTypeDescription
vectorvectorThe rotated vector.

Quaternion.mul

Multiplies two quaternions. Quaternion multiplication is not commutative.

Quaternion.mul(a: Quaternion, b: Quaternion): Quaternion

Parameters

NameTypeDescription
aQuaternionThe first quaternion.
bQuaternionThe second quaternion.

Returns

NameTypeDescription
quaternionQuaternionThe product of the two quaternions.

Quaternion.normalise

Returns a normalised copy of the quaternion.

Quaternion.normalise(quaternion: Quaternion): Quaternion

Parameters

NameTypeDescription
quaternionQuaternionQuaternion to normalise.

Returns

NameTypeDescription
normalisedQuaternionQuaternionCopy of the quaternion with unit length.

Quaternion.getRotationBetween

Returns a quaternion which will rotate the first direction to the second along the shortest path. May introduce unwanted roll.

Quaternion.getRotationBetween(startDirection: vector, endDirection: vector): Quaternion

Parameters

NameTypeDescription
startDirectionvectorStart direction of the rotation.
endDirectionvectorEnd direction of the rotation.

Returns

NameTypeDescription
rotationQuaternionRotation from start to end.

Types

Quaternion

Rotation represented by imaginary and scalar components which does not suffer from gimbal lock.

type Quaternion = { [1]: vector, [2]: number }

Properties

FieldTypeDescription
1vectorThe imaginary part of the quaternion.
2numberThe scalar part of the quaternion.