Quat
Interface representing a quaternion. A quaternion is represented by (x, y, z, w) coordinates, and
represents a 3D rotation. Quaternions can be converted to and from 4x4 rotation matrices with the
interfaces in Mat4. Quaternion objects are created with the ecs.math.quat
QuatFactory, or through
operations on other Quat objects.
Code Example
const {quat} = ecs.math
const a = quat.zero()
const b = quat.yDegrees(45)
const c = a.slerp(b, 0.1)
Source
The QuatSource interface represents any object that has x, y, z, and w properties and hence can be
used as a data source to create a Quat. In addition, QuatSource can be used as an argument to Quat
algorithms, meaning that any object with {x: number, y: number, z: number, w: number}
properties
can be used.
QuatSource has the following enumerable properties:
readonly x: number
Access the x component of the vector.
readonly y: number
Access the y component of the vector.
readonly z: number
Access the z component of the vector.
readonly w: number
Access the w component of the vector.
Factory
Quat objects are created with the ecs.math.quat
QuatFactory, with the following methods:
quat.axisAngle()
quat.axisAngle: (aa: Vec3Source, target?: Quat) => Quat
Create a Quat from an axis-angle representation. The direction of the aa
vector gives the axis of
rotation, and the magnitude of the vector gives the angle, in radians. For example,
quat.axisAngle(vec3.up().scale(Math.PI / 2))
represents a 90-degree rotation about the y-axis, and
is equivalent to quat.yDegrees(90)
. If target
is supplied, the result will be stored in target
and target
will be returned. Otherwise, a new Quat will be created and returned.
quat.from()
quat.from: ({x, y, z, w}: {readonly x: number, readonly y: number, readonly z: number, readonly w: number) => Quat
Create a Quat from an object with x, y, z, w properties.
quat.lookAt()
quat.lookAt: (eye: Vec3Source, target: Vec3Source, up: Vec3Source) => Quat
Create a Quat representing the rotation required for an object positioned at ‘eye’ to look at an object positioned at ‘target’, with the given ‘up vector.
quat.pitchYawRollDegrees()
quat.pitchYawRollDegrees: (v: Vec3Source) => Quat
Construct a quaternion from a pitch / yaw / roll representation, also known as YXZ Euler angles. Rotation is specified in degrees.