Implementation of a quaternion. This is used for rotating things without incurring in the dreaded gimbal lock issue, amongst other advantages.

Example

const quaternion = new THREE.Quaternion();
quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );
const vector = new THREE.Vector3( 1, 0, 0 );
vector.applyQuaternion( quaternion );

Constructors

  • Parameters

    • Optional x: number

      x coordinate

    • Optional y: number

      y coordinate

    • Optional z: number

      z coordinate

    • Optional w: number

      w coordinate

    Returns Quaternion

Properties

_onChangeCallback: (() => void)

Type declaration

    • (): void
    • Returns void

isQuaternion: true
w: number

Default

1
x: number

Default

0
y: number

Default

0
z: number

Default

0

Methods

  • Returns Generator<number, void, unknown>

  • Parameters

    • callback: (() => void)
        • (): void
        • Returns void

    Returns Quaternion

  • Parameters

    Returns number

  • Clones this quaternion.

    Returns this

  • Returns Quaternion

  • Copies values of q to this quaternion.

    Parameters

    Returns this

  • Parameters

    Returns number

  • Parameters

    Returns boolean

  • Sets this quaternion's x, y, z and w value from the provided array or array-like.

    Parameters

    • array: ArrayLike<number> | number[]

      the source array or array-like.

    • Optional offset: number

      (optional) offset into the array. Default is 0.

    Returns this

  • Sets x, y, z, w properties of this quaternion from the attribute.

    Parameters

    Returns Quaternion

  • Returns Quaternion

  • Inverts this quaternion.

    Returns Quaternion

  • Computes length of this quaternion.

    Returns number

  • Returns number

  • Multiplies this quaternion by b.

    Parameters

    Returns Quaternion

  • Parameters

    • v: any

    Returns any

    Deprecated

    Use Vector#applyQuaternion vector.applyQuaternion( quaternion ) instead.

  • Normalizes this quaternion.

    Returns Quaternion

  • Returns Quaternion

  • Parameters

    Returns Quaternion

  • Sets values of this quaternion.

    Parameters

    • x: number
    • y: number
    • z: number
    • w: number

    Returns Quaternion

  • Sets this quaternion from rotation specified by Euler angles.

    Parameters

    • euler: Euler
    • Optional update: boolean

    Returns Quaternion

  • Returns an array [x, y, z, w], or copies x, y, z and w into the provided array.

    Parameters

    • Optional array: number[]

      (optional) array to store the quaternion to. If this is not provided, a new array will be created.

    • Optional offset: number

      (optional) optional offset into the array.

    Returns number[]

    The created or provided array.

  • Copies x, y, z and w into the provided array-like.

    Parameters

    • array: ArrayLike<number>

      array-like to store the quaternion to.

    • Optional offset: number

      (optional) optional offset into the array.

    Returns ArrayLike<number>

    The provided array-like.

  • This method defines the serialization result of Quaternion.

    Returns [number, number, number, number]

    The numerical elements of this quaternion in an array of format [x, y, z, w].

  • Parameters

    • dst: number[]
    • dstOffset: number
    • src0: number[]
    • srcOffset: number
    • src1: number[]
    • stcOffset1: number

    Returns number[]

  • Parameters

    Returns number

    Deprecated

    Use qm.slerpQuaternions( qa, qb, t ) instead..

  • Parameters

    • dst: number[]
    • dstOffset: number
    • src0: number[]
    • srcOffset: number
    • src1: number[]
    • stcOffset1: number
    • t: number

    Returns void