Quaternion - Cesium Documentation

# Quaternion

#### new Quaternion(x, y, z, w)

  A set of 4-dimensional coordinates used to represent rotation in 3-dimensional space.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `x` | Number | `0.0` | optional The X component.
  `y` | Number | `0.0` | optional The Y component.
  `z` | Number | `0.0` | optional The Z component.
  `w` | Number | `0.0` | optional The W component.

  ##### See:

  - PackableForInterpolation
  Source: Core/Quaternion.js, line 34

### Members

#### staticconstantQuaternion.IDENTITY :Quaternion

  An immutable Quaternion instance initialized to (0.0, 0.0, 0.0, 1.0).
  Source: Core/Quaternion.js, line 1099

#### staticQuaternion.packedInterpolationLength :Number

  The number of elements used to store the object into an array in its interpolatable form.
  Source: Core/Quaternion.js, line 279

#### staticQuaternion.packedLength :Number

  The number of elements used to pack the object into an array.
  Source: Core/Quaternion.js, line 221

#### staticconstantQuaternion.ZERO :Quaternion

  An immutable Quaternion instance initialized to (0.0, 0.0, 0.0, 0.0).
  Source: Core/Quaternion.js, line 1091

#### w :Number

  The W component.
  Default Value: `0.0`
  Source: Core/Quaternion.js, line 61

#### x :Number

  The X component.
  Default Value: `0.0`
  Source: Core/Quaternion.js, line 40

#### y :Number

  The Y component.
  Default Value: `0.0`
  Source: Core/Quaternion.js, line 47

#### z :Number

  The Z component.
  Default Value: `0.0`
  Source: Core/Quaternion.js, line 54

### Methods

#### staticQuaternion.add(left, right, result) → Quaternion

  Computes the componentwise sum of two quaternions.

  Name | Type | Description
  --- | --- | ---
  `left` | Quaternion | The first quaternion.
  `right` | Quaternion | The second quaternion.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 465

#### staticQuaternion.clone(quaternion, result) → Quaternion

  Duplicates a Quaternion instance.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to duplicate.
  `result` | Quaternion | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Quaternion instance if one was not provided. (Returns undefined if quaternion is undefined)
  Source: Core/Quaternion.js, line 345

#### staticQuaternion.computeAngle(quaternion) → Number

  Computes the angle of rotation of the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to use.

  ##### Returns:

  The angle of rotation.
  Source: Core/Quaternion.js, line 693

#### staticQuaternion.computeAxis(quaternion, result) → Cartesian3

  Computes the axis of rotation of the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to use.
  `result` | Cartesian3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 663

#### staticQuaternion.computeInnerQuadrangle(q0, q1, q2, result) → Quaternion

  Computes an inner quadrangle point.

  This will compute quaternions that ensure a squad curve is C1.

  Name | Type | Description
  --- | --- | ---
  `q0` | Quaternion | The first quaternion.
  `q1` | Quaternion | The second quaternion.
  `q2` | Quaternion | The third quaternion.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### See:

  - Quaternion#squad
  Source: Core/Quaternion.js, line 866

#### staticQuaternion.conjugate(quaternion, result) → Quaternion

  Computes the conjugate of the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to conjugate.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 368

#### staticQuaternion.convertPackedArrayForInterpolation(packedArray, startingIndex, lastIndex, result)

  Converts a packed array into a form suitable for interpolation.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `packedArray` | Array.<Number> |  | The packed array.
  `startingIndex` | Number | `0` | optional The index of the first element to be converted.
  `lastIndex` | Number | `packedArray.length` | optional The index of the last element to be converted.
  `result` | Array.<Number> |  | The object into which to store the result.

  Source: Core/Quaternion.js, line 289

#### staticQuaternion.divideByScalar(quaternion, scalar, result) → Quaternion

  Divides the provided quaternion componentwise by the provided scalar.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to be divided.
  `scalar` | Number | The scalar to divide by.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 636

#### staticQuaternion.dot(left, right) → Number

  Computes the dot (scalar) product of two quaternions.

  Name | Type | Description
  --- | --- | ---
  `left` | Quaternion | The first quaternion.
  `right` | Quaternion | The second quaternion.

  ##### Returns:

  The dot product.
  Source: Core/Quaternion.js, line 544

#### staticQuaternion.equals(left, right) → Boolean

  Compares the provided quaternions componentwise and returns `true` if they are equal, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `left` | Quaternion | optional The first quaternion.
  `right` | Quaternion | optional The second quaternion.

  ##### Returns:

  `true` if left and right are equal, `false` otherwise.
  Source: Core/Quaternion.js, line 1049

#### staticQuaternion.equalsEpsilon(left, right, epsilon) → Boolean

  Compares the provided quaternions componentwise and returns `true` if they are within the provided epsilon, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `left` | Quaternion | optional The first quaternion.
  `right` | Quaternion | optional The second quaternion.
  `epsilon` | Number | The epsilon to use for equality testing.

  ##### Returns:

  `true` if left and right are within the provided epsilon, `false` otherwise.
  Source: Core/Quaternion.js, line 1069

#### staticQuaternion.exp(cartesian, result) → Quaternion

  The exponential quaternion function.

  Name | Type | Description
  --- | --- | ---
  `cartesian` | Cartesian3 | The cartesian.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 824

#### staticQuaternion.fastSlerp(start, end, t, result) → Quaternion

  Computes the spherical linear interpolation or extrapolation at t using the provided quaternions. This implementation is faster than `Quaternion#slerp`, but is only accurate up to 10-6.

  Name | Type | Description
  --- | --- | ---
  `start` | Quaternion | The value corresponding to t at 0.0.
  `end` | Quaternion | The value corresponding to t at 1.0.
  `t` | Number | The point along t at which to interpolate.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### See:

  - Quaternion#slerp
  Source: Core/Quaternion.js, line 961

#### staticQuaternion.fastSquad(q0, q1, s0, s1, t, result) → Quaternion

  Computes the spherical quadrangle interpolation between quaternions. An implementation that is faster than `Quaternion#squad`, but less accurate.

  Name | Type | Description
  --- | --- | ---
  `q0` | Quaternion | The first quaternion.
  `q1` | Quaternion | The second quaternion.
  `s0` | Quaternion | The first inner quadrangle.
  `s1` | Quaternion | The second inner quadrangle.
  `t` | Number | The time in [0,1] used to interpolate.
  `result` | Quaternion | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new instance if none was provided.

  ##### See:

  - Quaternion#squad
  Source: Core/Quaternion.js, line 1023

#### staticQuaternion.fromAxisAngle(axis, angle, result) → Quaternion

  Computes a quaternion representing a rotation around an axis.

  Name | Type | Description
  --- | --- | ---
  `axis` | Cartesian3 | The axis of rotation.
  `angle` | Number | The angle in radians to rotate around the axis.
  `result` | Quaternion | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Quaternion instance if one was not provided.
  Source: Core/Quaternion.js, line 74

#### staticQuaternion.fromHeadingPitchRoll(heading, pitch, roll, result) → Quaternion

  Computes a rotation from the given heading, pitch and roll angles. Heading is the rotation about the negative z axis. Pitch is the rotation about the negative y axis. Roll is the rotation about the positive x axis.

  Name | Type | Description
  --- | --- | ---
  `heading` | Number | The heading angle in radians.
  `pitch` | Number | The pitch angle in radians.
  `roll` | Number | The roll angle in radians.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Quaternion instance if none was provided.
  Source: Core/Quaternion.js, line 191

#### staticQuaternion.fromRotationMatrix(matrix, result) → Quaternion

  Computes a Quaternion from the provided Matrix3 instance.

  Name | Type | Description
  --- | --- | ---
  `matrix` | Matrix3 | The rotation matrix.
  `result` | Quaternion | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Quaternion instance if one was not provided.

  ##### See:

  - Matrix3.fromQuaternion
  Source: Core/Quaternion.js, line 113

#### staticQuaternion.inverse(quaternion, result) → Quaternion

  Computes the inverse of the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to normalize.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 445

#### staticQuaternion.lerp(start, end, t, result) → Quaternion

  Computes the linear interpolation or extrapolation at t using the provided quaternions.

  Name | Type | Description
  --- | --- | ---
  `start` | Quaternion | The value corresponding to t at 0.0.
  `end` | Quaternion | The value corresponding to t at 1.0.
  `t` | Number | The point along t at which to interpolate.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 716

#### staticQuaternion.log(quaternion, result) → Cartesian3

  The logarithmic quaternion function.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The unit quaternion.
  `result` | Cartesian3 | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 797

#### staticQuaternion.magnitude(quaternion) → Number

  Computes magnitude for the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to conjugate.

  ##### Returns:

  The magnitude.
  Source: Core/Quaternion.js, line 407

#### staticQuaternion.magnitudeSquared(quaternion) → Number

  Computes magnitude squared for the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to conjugate.

  ##### Returns:

  The magnitude squared.
  Source: Core/Quaternion.js, line 391

#### staticQuaternion.multiply(left, right, result) → Quaternion

  Computes the product of two quaternions.

  Name | Type | Description
  --- | --- | ---
  `left` | Quaternion | The first quaternion.
  `right` | Quaternion | The second quaternion.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 565

#### staticQuaternion.multiplyByScalar(quaternion, scalar, result) → Quaternion

  Multiplies the provided quaternion componentwise by the provided scalar.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to be scaled.
  `scalar` | Number | The scalar to multiply with.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 608

#### staticQuaternion.negate(quaternion, result) → Quaternion

  Negates the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to be negated.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 520

#### staticQuaternion.normalize(quaternion, result) → Quaternion

  Computes the normalized form of the provided quaternion.

  Name | Type | Description
  --- | --- | ---
  `quaternion` | Quaternion | The quaternion to normalize.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 418

#### staticQuaternion.pack(value, array, startingIndex)

  Stores the provided instance into the provided array.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `value` | Quaternion |  | The value to pack.
  `array` | Array.<Number> |  | The array to pack into.
  `startingIndex` | Number | `0` | optional The index into the array at which to start packing the elements.

  Source: Core/Quaternion.js, line 230

#### staticQuaternion.slerp(start, end, t, result) → Quaternion

  Computes the spherical linear interpolation or extrapolation at t using the provided quaternions.

  Name | Type | Description
  --- | --- | ---
  `start` | Quaternion | The value corresponding to t at 0.0.
  `end` | Quaternion | The value corresponding to t at 1.0.
  `t` | Number | The point along t at which to interpolate.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### See:

  - Quaternion#fastSlerp
  Source: Core/Quaternion.js, line 751

#### staticQuaternion.squad(q0, q1, s0, s1, t, result) → Quaternion

  Computes the spherical quadrangle interpolation between quaternions.

  Name | Type | Description
  --- | --- | ---
  `q0` | Quaternion | The first quaternion.
  `q1` | Quaternion | The second quaternion.
  `s0` | Quaternion | The first inner quadrangle.
  `s1` | Quaternion | The second inner quadrangle.
  `t` | Number | The time in [0,1] used to interpolate.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.

  ##### Example:

      // 1. compute the squad interpolation between two quaternions on a curve
      var s0 = Cesium.Quaternion.computeInnerQuadrangle(quaternions[i - 1], quaternions[i], quaternions[i + 1]);
      var s1 = Cesium.Quaternion.computeInnerQuadrangle(quaternions[i], quaternions[i + 1], quaternions[i + 2]);
      var q = Cesium.Quaternion.squad(quaternions[i], quaternions[i + 1], s0, s1, t);

      // 2. compute the squad interpolation as above but where the first quaternion is a end point.
      var s1 = Cesium.Quaternion.computeInnerQuadrangle(quaternions[0], quaternions[1], quaternions[2]);
      var q = Cesium.Quaternion.squad(quaternions[0], quaternions[1], quaternions[0], s1, t);

  ##### See:

  - Quaternion#computeInnerQuadrangle
  Source: Core/Quaternion.js, line 914

#### staticQuaternion.subtract(left, right, result) → Quaternion

  Computes the componentwise difference of two quaternions.

  Name | Type | Description
  --- | --- | ---
  `left` | Quaternion | The first quaternion.
  `right` | Quaternion | The second quaternion.
  `result` | Quaternion | The object onto which to store the result.

  ##### Returns:

  The modified result parameter.
  Source: Core/Quaternion.js, line 493

#### staticQuaternion.unpack(array, startingIndex, result)

  Retrieves an instance from a packed array.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `array` | Array.<Number> |  | The packed array.
  `startingIndex` | Number | `0` | optional The starting index of the element to be unpacked.
  `result` | Quaternion |  | optional The object into which to store the result.

  Source: Core/Quaternion.js, line 256

#### staticQuaternion.unpackInterpolationResult(array, sourceArray, startingIndex, lastIndex, result)

  Retrieves an instance from a packed array converted with `convertPackedArrayForInterpolation`.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `array` | Array.<Number> |  | The array previously packed for interpolation.
  `sourceArray` | Array.<Number> |  | The original packed array.
  `startingIndex` | Number | `0` | optional The startingIndex used to convert the array.
  `lastIndex` | Number | `packedArray.length` | optional The lastIndex used to convert the array.
  `result` | Quaternion |  | optional The object into which to store the result.

  Source: Core/Quaternion.js, line 320

#### clone(result) → Quaternion

  Duplicates this Quaternion instance.

  Name | Type | Description
  --- | --- | ---
  `result` | Quaternion | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Quaternion instance if one was not provided.
  Source: Core/Quaternion.js, line 1107

#### equals(right) → Boolean

  Compares this and the provided quaternion componentwise and returns `true` if they are equal, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `right` | Quaternion | optional The right hand side quaternion.

  ##### Returns:

  `true` if left and right are equal, `false` otherwise.
  Source: Core/Quaternion.js, line 1118

#### equalsEpsilon(right, epsilon) → Boolean

  Compares this and the provided quaternion componentwise and returns `true` if they are within the provided epsilon, `false` otherwise.

  Name | Type | Description
  --- | --- | ---
  `right` | Quaternion | optional The right hand side quaternion.
  `epsilon` | Number | The epsilon to use for equality testing.

  ##### Returns:

  `true` if left and right are within the provided epsilon, `false` otherwise.
  Source: Core/Quaternion.js, line 1131

#### toString() → String

  Returns a string representing this quaternion in the format (x, y, z, w).

  ##### Returns:

  A string representing this Quaternion.
  Source: Core/Quaternion.js, line 1140