Quaternion

Quaternion

new

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

Parameters:
Name Type Argument Default Description
x Number <optional>
0.0 The X component.
y Number <optional>
0.0 The Y component.
z Number <optional>
0.0 The Z component.
w Number <optional>
0.0 The W component.
See:
Source:

Members

:Number

The W component.
Default Value:
  • 0.0

:Number

The X component.
Default Value:
  • 0.0

:Number

The Y component.
Default Value:
  • 0.0

:Number

The Z component.
Default Value:
  • 0.0

<static>

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

<static> :Number

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

<static> :Number

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

<static>

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

Methods

Duplicates this Quaternion instance.

Parameters:
Name Type Argument Description
result Quaternion <optional>
The object onto which to store the result.
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

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

Parameters:
Name Type Argument Description
right Quaternion <optional>
The right hand side quaternion.
Returns:
Boolean true if left and right are equal, false otherwise.

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

Parameters:
Name Type Argument Description
right Quaternion <optional>
The right hand side quaternion.
epsilon Number The epsilon to use for equality testing.
Throws:
DeveloperError : epsilon is required and must be a number.
Returns:
Boolean true if left and right are within the provided epsilon, false otherwise.

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

Returns:
String A string representing this Quaternion.

<static>

Computes the componentwise sum of two quaternions.

Parameters:
Name Type Argument Description
left Quaternion The first quaternion.
right Quaternion The second quaternion.
result Quaternion <optional>
The object onto which to store the result.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Duplicates a Quaternion instance.

Parameters:
Name Type Argument Description
quaternion Quaternion The quaternion to duplicate.
result Quaternion <optional>
The object onto which to store the result.
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided. (Returns undefined if quaternion is undefined)

<static>

Computes the conjugate of the provided quaternion.

Parameters:
Name Type Argument Description
quaternion Quaternion The quaternion to conjugate.
result Quaternion <optional>
The object onto which to store the result.
Throws:
DeveloperError : quaternion is required.
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Converts a packed array into a form suitable for interpolation.

Parameters:
Name Type Argument Default Description
packedArray Array The packed array.
startingIndex Number <optional>
0 The index of the first element to be converted.
lastIndex Number <optional>
packedArray.length The index of the last element to be converted.
result Array <optional>
The object into which to store the result.
Throws:
DeveloperError : packedArray is required.

<static>

Divides the provided quaternion componentwise by the provided scalar.

Parameters:
Name Type Argument 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.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Computes the dot (scalar) product of two quaternions.

Parameters:
Name Type Description
left Quaternion The first quaternion.
right Quaternion The second quaternion.
Throws:
Returns:
Number The dot product.

<static>

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

Parameters:
Name Type Argument Description
left Quaternion <optional>
The first quaternion.
right Quaternion <optional>
The second quaternion.
Returns:
Boolean true if left and right are equal, false otherwise.

<static>

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

Parameters:
Name Type Argument Description
left Quaternion <optional>
The first quaternion.
right Quaternion <optional>
The second quaternion.
epsilon Number The epsilon to use for equality testing.
Throws:
DeveloperError : epsilon is required and must be a number.
Returns:
Boolean true if left and right are within the provided epsilon, false otherwise.

<static>

The exponential quaternion function.

Parameters:
Name Type Argument Description
cartesian Cartesian3 The cartesian.
result Quaternion <optional>
The object onto which to store the result.
Throws:
DeveloperError : cartesian is required.
Returns:
Quaternion The modified result parameter or a new instance if one was not provided.

<static>

Computes a quaternion representing a rotation around an axis.

Parameters:
Name Type Argument 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.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Computes a Quaternion from the provided Matrix3 instance.

Parameters:
Name Type Argument Description
matrix Matrix3 The rotation matrix.
result Quaternion <optional>
The object onto which to store the result.
Throws:
DeveloperError : matrix is required.
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.
See:

<static>

Computes the angle of rotation of the provided quaternion.

Parameters:
Name Type Description
quaternion Quaternion The quaternion to use.
Throws:
DeveloperError : quaternion is required.
Returns:
Number The angle of rotation.

<static>

Computes the axis of rotation of the provided quaternion.

Parameters:
Name Type Argument Description
quaternion Quaternion The quaternion to use.
result Cartesian3 <optional>
The object onto which to store the result.
Throws:
DeveloperError : quaternion is required.
Returns:
Cartesian3 The modified result parameter or a new Cartesian3 instance if one was not provided.

<static>

Computes an inner quadrangle point.

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

Parameters:
Name Type Argument 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.
Throws:
DeveloperError : q0, q1, and q2 are required.
Returns:
Quaternion The modified result parameter or a new instance if none was provided.
See:
  • Quaternion#squad

<static>

Computes the inverse of the provided quaternion.

Parameters:
Name Type Argument Description
quaternion Quaternion The quaternion to normalize.
result Quaternion <optional>
The object onto which to store the result.
Throws:
DeveloperError : quaternion is required.
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

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

Parameters:
Name Type Argument Description
start The value corresponding to t at 0.0.
end The value corresponding to t at 1.0.
t The point along t at which to interpolate.
result Quaternion <optional>
The object onto which to store the result.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

The logarithmic quaternion function.

Parameters:
Name Type Argument Description
quaternion Quaternion The unit quaternion.
result Cartesian3 <optional>
The object onto which to store the result.
Throws:
DeveloperError : quaternion is required.
Returns:
Cartesian3 The modified result parameter or a new instance if one was not provided.

<static>

Computes magnitude for the provided quaternion.

Parameters:
Name Type Description
quaternion Quaternion The quaternion to conjugate.
Throws:
DeveloperError : quaternion is required.
Returns:
Number The magnitude.

<static>

Computes magnitude squared for the provided quaternion.

Parameters:
Name Type Description
quaternion Quaternion The quaternion to conjugate.
Throws:
DeveloperError : quaternion is required.
Returns:
Number The magnitude squared.

<static>

Computes the product of two quaternions.

Parameters:
Name Type Argument Description
left Quaternion The first quaternion.
right Quaternion The second quaternion.
result Quaternion <optional>
The object onto which to store the result.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Multiplies the provided quaternion componentwise by the provided scalar.

Parameters:
Name Type Argument 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.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Negates the provided quaternion.

Parameters:
Name Type Argument Description
quaternion Quaternion The quaternion to be negated.
result Quaternion <optional>
The object onto which to store the result.
Throws:
DeveloperError : quaternion is required.
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Computes the normalized form of the provided quaternion.

Parameters:
Name Type Argument Description
quaternion Quaternion The quaternion to normalize.
result Quaternion <optional>
The object onto which to store the result.
Throws:
DeveloperError : quaternion is required.
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Stores the provided instance into the provided array.

Parameters:
Name Type Argument Default Description
value Quaternion The value to pack.
array Array The array to pack into.
startingIndex Number <optional>
0 The index into the array at which to start packing the elements.
Throws:

<static>

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

Parameters:
Name Type Argument Description
start The value corresponding to t at 0.0.
end The value corresponding to t at 1.0.
t The point along t at which to interpolate.
result Quaternion <optional>
The object onto which to store the result.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Computes the spherical quadrangle interpolation between quaternions.

Parameters:
Name Type Argument 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.
Throws:
Returns:
Quaternion 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 = Quaternion.innerQuadrangle(quaternions[i - 1], quaternions[i], quaternions[i + 1]);
var s1 = Quaternion.innerQuadrangle(quaternions[i], quaternions[i + 1], quaternions[i + 2]);
var q = 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 = Quaternion.innerQuadrangle(quaternions[0], quaternions[1], quaternions[2]);
var q = Quaternion.squad(quaternions[0], quaternions[1], quaternions[0], s1, t);
See:
  • Quaternion#innerQuadrangle

<static>

Computes the componentwise difference of two quaternions.

Parameters:
Name Type Argument Description
left Quaternion The first quaternion.
right Quaternion The second quaternion.
result Quaternion <optional>
The object onto which to store the result.
Throws:
Returns:
Quaternion The modified result parameter or a new Quaternion instance if one was not provided.

<static>

Retrieves an instance from a packed array.

Parameters:
Name Type Argument Default Description
array Array The packed array.
startingIndex Number <optional>
0 The starting index of the element to be unpacked.
result Quaternion <optional>
The object into which to store the result.
Throws:
DeveloperError : array is required.

<static>

Retrieves an instance from a packed array converted with convertPackedArrayForInterpolation.

Parameters:
Name Type Argument Default Description
array Array The original packed array.
sourceArray Array The converted array.
startingIndex Number <optional>
0 The startingIndex used to convert the array.
lastIndex Number <optional>
packedArray.length The lastIndex used to convert the array.
result Quaternion <optional>
The object into which to store the result.
Throws: