Namespace quat

xeokit Quaternion Math Utilities


Utilities for representing and manipulating 3D rotations with quaternions.


This module provides quaternion primitives (typed-array friendly) plus common conversion and composition helpers used throughout xeokit math:

  • Build quaternions from Euler angles, rotation matrices, angle–axis, or by aligning one direction vector to another.
  • Convert quaternions back to Euler angles, matrices, or angle–axis form.
  • Apply quaternion rotations to vectors and combine rotations via quaternion multiplication.

Quaternions are stored as [x, y, z, w], where (x, y, z) is the vector part and w is the scalar part. Most functions accept either typed arrays (Float32Array / Float64Array) or plain 4-tuples, and many support an optional destination parameter to avoid allocations.

npm install @xeokit/sdk

Import the helpers you need:

import {
identityQuat,
eulerToQuat,
quatToEuler,
quatToRotationMat4,
mat4ToQuat,
mulQuats,
vec3ApplyQuat,
quatToAngleAxis,
angleAxisToQuaternion
} from "@xeokit/sdk/math/quat";
const q = eulerToQuat([30, 45, 0], "XYZ"); // degrees
console.log("Quaternion:", q);
const v = [1, 0, 0];
const rotated = vec3ApplyQuat(q, v);
console.log("Rotated vector:", rotated);
const m = quatToRotationMat4(q, new Float64Array(16));
const q2 = mat4ToQuat(m);
console.log("Round-trip quaternion:", q2);
const aa = quatToAngleAxis(q); // [x, y, z, angleRadians]
const q3 = angleAxisToQuaternion(aa);
console.log("Angle–axis:", aa, "Back to quat:", q3);

Type Aliases

Quat
QuatFloat32
QuatFloat64

Functions

angleAxisToQuaternion
conjugateQuat
createQuatFloat32
createQuatFloat64
eulerToQuat
identityQuat
inverseQuat
mat4ToQuat
mulQuats
normalizeQuat
quatToAngleAxis
quatToEuler
quatToMat4
quatToRotationMat4
vec3ApplyQuat
vec3PairToQuat