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.

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.