Dual Quaternion
Format: [real, dual]
Quaternion format: XYZW
Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.
        
        
            
        
    
    Format: [real, dual]
Quaternion format: XYZW
Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.
Members
(static, constant) getReal
    Gets the real part of a dual quat
        
    
    
        Methods
(static) add(out, a, b) → {quat2}
    Adds two dual quat's
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the first operand | 
| b | quat2 | the second operand | 
Returns:
    out
- Type
- quat2
(static) clone(a) → {quat2}
    Creates a new quat initialized with values from an existing quaternion
    Parameters:
| Name | Type | Description | 
|---|---|---|
| a | quat2 | dual quaternion to clone | 
Returns:
    new dual quaternion
- Type
- quat2
(static) conjugate(out, a) → {quat2}
    Calculates the conjugate of a dual quat
If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving quaternion | 
| a | quat2 | quat to calculate conjugate of | 
Returns:
    out
- Type
- quat2
(static) copy(out, a) → {quat2}
    Copy the values from one dual quat to another
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the source dual quaternion | 
Returns:
    out
- Type
- quat2
(static) create() → {quat2}
    Creates a new identity dual quat
Returns:
    a new dual quaternion [real -> rotation, dual -> translation]
- Type
- quat2
(static) dot(a, b) → {Number}
    Calculates the dot product of two dual quat's (The dot product of the real parts)
    Parameters:
| Name | Type | Description | 
|---|---|---|
| a | quat2 | the first operand | 
| b | quat2 | the second operand | 
Returns:
    dot product of a and b
- Type
- Number
(static) equals(a, b) → {Boolean}
    Returns whether or not the dual quaternions have approximately the same elements in the same position.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| a | quat2 | the first dual quat. | 
| b | quat2 | the second dual quat. | 
Returns:
    true if the dual quats are equal, false otherwise.
- Type
- Boolean
(static) exactEquals(a, b) → {Boolean}
    Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)
    Parameters:
| Name | Type | Description | 
|---|---|---|
| a | quat2 | the first dual quaternion. | 
| b | quat2 | the second dual quaternion. | 
Returns:
    true if the dual quaternions are equal, false otherwise.
- Type
- Boolean
(static) fromMat4(out, a) → {quat2}
    Creates a new dual quat from a matrix (4x4)
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the dual quaternion | 
| a | mat4 | the matrix | 
Returns:
    dual quat receiving operation result
- Type
- quat2
(static) fromRotation(dual, q) → {quat2}
    Creates a dual quat from a quaternion
    Parameters:
| Name | Type | Description | 
|---|---|---|
| dual | quat2 | quaternion receiving operation result | 
| q | quat | the quaternion | 
Returns:
    dual quaternion receiving operation result
- Type
- quat2
(static) fromRotationTranslation(dual, q, t) → {quat2}
    Creates a dual quat from a quaternion and a translation
    Parameters:
| Name | Type | Description | 
|---|---|---|
| dual | quat2 | quaternion receiving operation result | 
| q | quat | quaternion | 
| t | vec3 | tranlation vector | 
Returns:
    dual quaternion receiving operation result
- Type
- quat2
(static) fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) → {quat2}
    Creates a new dual quat from the given values (quat and translation)
    Parameters:
| Name | Type | Description | 
|---|---|---|
| x1 | Number | X component | 
| y1 | Number | Y component | 
| z1 | Number | Z component | 
| w1 | Number | W component | 
| x2 | Number | X component (translation) | 
| y2 | Number | Y component (translation) | 
| z2 | Number | Z component (translation) | 
Returns:
    new dual quaternion
- Type
- quat2
(static) fromTranslation(dual, t) → {quat2}
    Creates a dual quat from a translation
    Parameters:
| Name | Type | Description | 
|---|---|---|
| dual | quat2 | quaternion receiving operation result | 
| t | vec3 | translation vector | 
Returns:
    dual quaternion receiving operation result
- Type
- quat2
(static) fromValues(x1, y1, z1, w1, x2, y2, z2, w2) → {quat2}
    Creates a new dual quat initialized with the given values
    Parameters:
| Name | Type | Description | 
|---|---|---|
| x1 | Number | X component | 
| y1 | Number | Y component | 
| z1 | Number | Z component | 
| w1 | Number | W component | 
| x2 | Number | X component | 
| y2 | Number | Y component | 
| z2 | Number | Z component | 
| w2 | Number | W component | 
Returns:
    new dual quaternion
- Type
- quat2
(static) getDual(out, a) → {quat}
    Gets the dual part of a dual quat
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat | dual part | 
| a | quat2 | Dual Quaternion | 
Returns:
    dual part
- Type
- quat
(static) getTranslation(out, a) → {vec3}
    Gets the translation of a normalized dual quat
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | vec3 | translation | 
| a | quat2 | Dual Quaternion to be decomposed | 
Returns:
    translation
- Type
- vec3
(static) identity(out) → {quat2}
    Set a dual quat to the identity dual quaternion
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving quaternion | 
Returns:
    out
- Type
- quat2
(static) invert(out, a) → {quat2}
    Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | dual quat to calculate inverse of | 
Returns:
    out
- Type
- quat2
(static) len()
    Alias for quat2.length
        
            
    
    
    (static) length(a) → {Number}
    Calculates the length of a dual quat
    Parameters:
| Name | Type | Description | 
|---|---|---|
| a | quat2 | dual quat to calculate length of | 
Returns:
    length of a
- Type
- Number
(static) lerp(out, a, b, t) → {quat2}
    Performs a linear interpolation between two dual quats's
NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quat | 
| a | quat2 | the first operand | 
| b | quat2 | the second operand | 
| t | Number | interpolation amount, in the range [0-1], between the two inputs | 
Returns:
    out
- Type
- quat2
(static) mul()
    Alias for quat2.multiply
        
            
    
    
    (static) multiply(out, a, b) → {quat2}
    Multiplies two dual quat's
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the first operand | 
| b | quat2 | the second operand | 
Returns:
    out
- Type
- quat2
(static) normalize(out, a) → {quat2}
    Normalize a dual quat
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | dual quaternion to normalize | 
Returns:
    out
- Type
- quat2
(static) rotateAroundAxis(out, a, axis, rad) → {quat2}
    Rotates a dual quat around a given axis. Does the normalisation automatically
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the dual quaternion to rotate | 
| axis | vec3 | the axis to rotate around | 
| rad | Number | how far the rotation should be | 
Returns:
    out
- Type
- quat2
(static) rotateByQuatAppend(out, a, q) → {quat2}
    Rotates a dual quat by a given quaternion (a * q)
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the dual quaternion to rotate | 
| q | quat | quaternion to rotate by | 
Returns:
    out
- Type
- quat2
(static) rotateByQuatPrepend(out, q, a) → {quat2}
    Rotates a dual quat by a given quaternion (q * a)
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| q | quat | quaternion to rotate by | 
| a | quat2 | the dual quaternion to rotate | 
Returns:
    out
- Type
- quat2
(static) rotateX(out, a, rad) → {quat2}
    Rotates a dual quat around the X axis
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the dual quaternion to rotate | 
| rad | number | how far should the rotation be | 
Returns:
    out
- Type
- quat2
(static) rotateY(out, a, rad) → {quat2}
    Rotates a dual quat around the Y axis
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the dual quaternion to rotate | 
| rad | number | how far should the rotation be | 
Returns:
    out
- Type
- quat2
(static) rotateZ(out, a, rad) → {quat2}
    Rotates a dual quat around the Z axis
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the dual quaternion to rotate | 
| rad | number | how far should the rotation be | 
Returns:
    out
- Type
- quat2
(static) scale(out, a, b) → {quat2}
    Scales a dual quat by a scalar number
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quat | 
| a | quat2 | the dual quat to scale | 
| b | Number | amount to scale the dual quat by | 
Returns:
    out
- Type
- quat2
(static) set(out, x1, y1, z1, w1, x2, y2, z2, w2) → {quat2}
    Set the components of a dual quat to the given values
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving quaternion | 
| x1 | Number | X component | 
| y1 | Number | Y component | 
| z1 | Number | Z component | 
| w1 | Number | W component | 
| x2 | Number | X component | 
| y2 | Number | Y component | 
| z2 | Number | Z component | 
| w2 | Number | W component | 
Returns:
    out
- Type
- quat2
(static) setDual(out, q) → {quat2}
    Set the dual component of a dual quat to the given quaternion
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving quaternion | 
| q | quat | a quaternion representing the dual part | 
Returns:
    out
- Type
- quat2
(static) setReal(out, q) → {quat2}
    Set the real component of a dual quat to the given quaternion
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving quaternion | 
| q | quat | a quaternion representing the real part | 
Returns:
    out
- Type
- quat2
(static) sqrLen()
    Alias for quat2.squaredLength
        
            
    
    
    (static) squaredLength(a) → {Number}
    Calculates the squared length of a dual quat
    Parameters:
| Name | Type | Description | 
|---|---|---|
| a | quat2 | dual quat to calculate squared length of | 
Returns:
    squared length of a
- Type
- Number
(static) str(a) → {String}
    Returns a string representation of a dual quatenion
    Parameters:
| Name | Type | Description | 
|---|---|---|
| a | quat2 | dual quaternion to represent as a string | 
Returns:
    string representation of the dual quat
- Type
- String
(static) translate(out, a, v) → {quat2}
    Translates a dual quat by the given vector
    Parameters:
| Name | Type | Description | 
|---|---|---|
| out | quat2 | the receiving dual quaternion | 
| a | quat2 | the dual quaternion to translate | 
| v | vec3 | vector to translate by | 
Returns:
    out
- Type
- quat2