quat2

quat2()

Dual Quaternion
Format: [real, dual]
Quaternion format: XYZW
Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.

Members

innergetReal

Gets the real part of a dual quat

Methods

inneradd$7(out, a, b)quat2

Adds two dual quat's
Name Type Description
out quat2 the receiving dual quaternion
a quat2 the first operand
b quat2 the second operand
Returns:
out

innerclone$7(a)quat2

Creates a new quat initialized with values from an existing quaternion
Name Type Description
a quat2 dual quaternion to clone
Returns:
new dual quaternion

innerconjugate$1(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.
Name Type Description
out quat2 the receiving quaternion
a quat2 quat to calculate conjugate of
Returns:
out

innercopy$7(out, a)quat2

Copy the values from one dual quat to another
Name Type Description
out quat2 the receiving dual quaternion
a quat2 the source dual quaternion
Returns:
out

innercreate$7()quat2

Creates a new identity dual quat
Returns:
a new dual quaternion [real -> rotation, dual -> translation]

innerdot$3(a, b)Number

Calculates the dot product of two dual quat's (The dot product of the real parts)
Name Type Description
a quat2 the first operand
b quat2 the second operand
Returns:
dot product of a and b

innerequals$8(a, b)Boolean

Returns whether or not the dual quaternions have approximately the same elements in the same position.
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.

innerexactEquals$7(a, b)Boolean

Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)
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.

innerfromMat4$1(out, a)quat2

Creates a new dual quat from a matrix (4x4)
Name Type Description
out quat2 the dual quaternion
a mat4 the matrix
Returns:
dual quat receiving operation result

innerfromRotation$4(dual, q)quat2

Creates a dual quat from a quaternion
Name Type Description
dual quat2 quaternion receiving operation result
q quat the quaternion
Returns:
dual quaternion receiving operation result

innerfromRotationTranslation$1(dual, q, t)quat2

Creates a dual quat from a quaternion and a translation
Name Type Description
dual quat2 quaternion receiving operation result
q quat a normalized quaternion
t vec3 tranlation vector
Returns:
dual quaternion receiving operation result

innerfromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2)quat2

Creates a new dual quat from the given values (quat and translation)
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

innerfromTranslation$3(dual, t)quat2

Creates a dual quat from a translation
Name Type Description
dual quat2 quaternion receiving operation result
t vec3 translation vector
Returns:
dual quaternion receiving operation result

innerfromValues$7(x1, y1, z1, w1, x2, y2, z2, w2)quat2

Creates a new dual quat initialized with the given values
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

innergetDual(out, a)quat

Gets the dual part of a dual quat
Name Type Description
out quat dual part
a quat2 Dual Quaternion
Returns:
dual part

innergetTranslation$1(out, a)vec3

Gets the translation of a normalized dual quat
Name Type Description
out vec3 translation
a quat2 Dual Quaternion to be decomposed
Returns:
translation

inneridentity$5(out)quat2

Set a dual quat to the identity dual quaternion
Name Type Description
out quat2 the receiving quaternion
Returns:
out

innerinvert$5(out, a)quat2

Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper
Name Type Description
out quat2 the receiving dual quaternion
a quat2 dual quat to calculate inverse of
Returns:
out

innerlen$3()

Alias for quat2.length

innerlength$3(a)Number

Calculates the length of a dual quat
Name Type Description
a quat2 dual quat to calculate length of
Returns:
length of a

innerlerp$3(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)
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

innermul$7()

Alias for quat2.multiply

innermultiply$7(out, a, b)quat2

Multiplies two dual quat's
Name Type Description
out quat2 the receiving dual quaternion
a quat2 the first operand
b quat2 the second operand
Returns:
out

innernormalize$3(out, a)quat2

Normalize a dual quat
Name Type Description
out quat2 the receiving dual quaternion
a quat2 dual quaternion to normalize
Returns:
out

innerrotateAroundAxis(out, a, axis, rad)quat2

Rotates a dual quat around a given axis. Does the normalisation automatically
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

innerrotateByQuatAppend(out, a, q)quat2

Rotates a dual quat by a given quaternion (a * q)
Name Type Description
out quat2 the receiving dual quaternion
a quat2 the dual quaternion to rotate
q quat quaternion to rotate by
Returns:
out

innerrotateByQuatPrepend(out, q, a)quat2

Rotates a dual quat by a given quaternion (q * a)
Name Type Description
out quat2 the receiving dual quaternion
q quat quaternion to rotate by
a quat2 the dual quaternion to rotate
Returns:
out

innerrotateX$3(out, a, rad)quat2

Rotates a dual quat around the X axis
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

innerrotateY$3(out, a, rad)quat2

Rotates a dual quat around the Y axis
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

innerrotateZ$3(out, a, rad)quat2

Rotates a dual quat around the Z axis
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

innerscale$7(out, a, b)quat2

Scales a dual quat by a scalar number
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

innerset$7(out, x1, y1, z1, w1, x2, y2, z2, w2)quat2

Set the components of a dual quat to the given values
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

innersetDual(out, q)quat2

Set the dual component of a dual quat to the given quaternion
Name Type Description
out quat2 the receiving quaternion
q quat a quaternion representing the dual part
Returns:
out

innersetReal(out, q)quat2

Set the real component of a dual quat to the given quaternion
Name Type Description
out quat2 the receiving quaternion
q quat a quaternion representing the real part
Returns:
out

innersqrLen$3()

Alias for quat2.squaredLength

innersquaredLength$3(a)Number

Calculates the squared length of a dual quat
Name Type Description
a quat2 dual quat to calculate squared length of
Returns:
squared length of a

innerstr$7(a)String

Returns a string representation of a dual quatenion
Name Type Description
a quat2 dual quaternion to represent as a string
Returns:
string representation of the dual quat

innertranslate$3(out, a, v)quat2

Translates a dual quat by the given vector
Name Type Description
out quat2 the receiving dual quaternion
a quat2 the dual quaternion to translate
v vec3 vector to translate by
Returns:
out