Theme:

Quaternion

Represents a rotation. Expected to be normalized.

Setting any component triggers an internal change callback (used to sync with Euler on Object3D).

Constructor

const q = new Quaternion(x, y, z, w) // defaults to (0, 0, 0, 1) (identity)

Properties

  • x, y, z, w — Quaternion components
  • isQuaternion — Type flag (true)

Static Methods

  • Quaternion.slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) — SLERP on flat arrays
  • Quaternion.multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) — Multiply on flat arrays

Methods

Setting

  • set(x, y, z, w), copy(q), identity()
  • setFromEuler(euler, update?) — From Euler angles
  • setFromAxisAngle(axis, angle) — From axis + angle
  • setFromRotationMatrix(m) — From 4x4 rotation matrix
  • setFromUnitVectors(vFrom, vTo) — Rotation between two directions
  • fromArray(array, offset?), fromBufferAttribute(attribute, index)

Arithmetic

  • multiply(q) — Post-multiply
  • premultiply(q) — Pre-multiply
  • multiplyQuaternions(a, b) — Multiply two quaternions, store result

Operations

  • dot(q) — Dot product
  • length(), lengthSq() — Magnitude
  • normalize() — Normalize to unit length
  • invert() — Invert (via conjugate, assumes unit length)
  • conjugate() — Negate x, y, z

Interpolation

  • slerp(qb, t) — Spherical lerp toward qb
  • slerpQuaternions(qa, qb, t) — Slerp between two quaternions
  • rotateTowards(q, step) — Step toward target by angular amount
  • angleTo(q) — Angle between quaternions in radians

Other

  • random() — Uniformly random rotation
  • equals(q), clone()
  • toArray(array?, offset?), toJSON()