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:

Members

staticQuaternion.IDENTITY

An immutable Quaternion instance initialized to (0.0, 0.0, 0.0, 1.0).

staticQuaternion.packedInterpolationLength :Number

The number of elements used to store the object into an array in its interpolatable form.

staticQuaternion.packedLength :Number

The number of elements used to pack the object into an array.

staticQuaternion.ZERO

An immutable Quaternion instance initialized to (0.0, 0.0, 0.0, 0.0).

w :Number

The W component.
Default Value: 0.0

x :Number

The X component.
Default Value: 0.0

y :Number

The Y component.
Default Value: 0.0

z :Number

The Z component.
Default Value: 0.0

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 optional The object onto which to store the result.
Returns:
The modified result parameter or a new Quaternion instance if one was not provided.

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)

staticQuaternion.conjugate(quaternion, result)Quaternion

Computes the conjugate of the provided quaternion.
Name Type Description
quaternion Quaternion The quaternion to conjugate.
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.

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

Converts a packed array into a form suitable for interpolation.
Name Type Default Description
packedArray 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 Number[] optional The object into which to store the result.

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 optional The object onto which to store the result.
Returns:
The modified result parameter or a new Quaternion instance if one was not provided.

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.

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.

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.

staticQuaternion.exp(cartesian, result)Quaternion

The exponential quaternion function.
Name Type Description
cartesian Cartesian3 The cartesian.
result Quaternion optional The object onto which to store the result.
Returns:
The modified result parameter or a new instance if one was not provided.

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 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:
  • Quaternion#slerp

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

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.

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:

staticQuaternion.getAngle(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.

staticQuaternion.getAxis(quaternion, result)Cartesian3

Computes the axis of rotation of the provided quaternion.
Name Type Description
quaternion Quaternion The quaternion to use.
result Cartesian3 optional The object onto which to store the result.
Returns:
The modified result parameter or a new Cartesian3 instance if one was not provided.

staticQuaternion.innerQuadrangle(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 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

staticQuaternion.inverse(quaternion, result)Quaternion

Computes the inverse of the provided quaternion.
Name Type Description
quaternion Quaternion The quaternion to normalize.
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.

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 optional The object onto which to store the result.
Returns:
The modified result parameter or a new Quaternion instance if one was not provided.

staticQuaternion.log(quaternion, result)Cartesian3

The logarithmic quaternion function.
Name Type Description
quaternion Quaternion The unit quaternion.
result Cartesian3 optional The object onto which to store the result.
Returns:
The modified result parameter or a new instance if one was not provided.

staticQuaternion.magnitude(quaternion)Number

Computes magnitude for the provided quaternion.
Name Type Description
quaternion Quaternion The quaternion to conjugate.
Returns:
The magnitude.

staticQuaternion.magnitudeSquared(quaternion)Number

Computes magnitude squared for the provided quaternion.
Name Type Description
quaternion Quaternion The quaternion to conjugate.
Returns:
The magnitude squared.

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 optional The object onto which to store the result.
Returns:
The modified result parameter or a new Quaternion instance if one was not provided.

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 optional The object onto which to store the result.
Returns:
The modified result parameter or a new Quaternion instance if one was not provided.

staticQuaternion.negate(quaternion, result)Quaternion

Negates the provided quaternion.
Name Type Description
quaternion Quaternion The quaternion to be negated.
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.

staticQuaternion.normalize(quaternion, result)Quaternion

Computes the normalized form of the provided quaternion.
Name Type Description
quaternion Quaternion The quaternion to normalize.
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.

staticQuaternion.pack(value, array, startingIndex)

Stores the provided instance into the provided array.
Name Type Default Description
value Quaternion The value to pack.
array Number[] The array to pack into.
startingIndex Number 0 optional The index into the array at which to start packing the elements.

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 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:
  • Quaternion#fastSlerp

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 optional The object onto which to store the result.
Returns:
The modified result parameter or a new instance if none was provided.
Example:
// 1. compute the squad interpolation between two quaternions on a curve
var s0 = Cesium.Quaternion.innerQuadrangle(quaternions[i - 1], quaternions[i], quaternions[i + 1]);
var s1 = Cesium.Quaternion.innerQuadrangle(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.innerQuadrangle(quaternions[0], quaternions[1], quaternions[2]);
var q = Cesium.Quaternion.squad(quaternions[0], quaternions[1], quaternions[0], s1, t);
See:
  • Quaternion#innerQuadrangle

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 optional The object onto which to store the result.
Returns:
The modified result parameter or a new Quaternion instance if one was not provided.

staticQuaternion.unpack(array, startingIndex, result)

Retrieves an instance from a packed array.
Name Type Default Description
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.

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

Retrieves an instance from a packed array converted with convertPackedArrayForInterpolation.
Name Type Default Description
array Number[] The original packed array.
sourceArray Number[] The converted 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.

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.

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.

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.

toString()String

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