@web-engine-dev/math / DualQuat
Class: DualQuat
A dual quaternion for representing rigid transformations (rotation + translation). Stored as 8 components: [real.x, real.y, real.z, real.w, dual.x, dual.y, dual.z, dual.w]
Dual quaternions enable smooth interpolation of rigid body transforms (screw motion), which is superior to separate quaternion + translation interpolation for skeletal animation.
Example
const dq = DualQuat.fromRotationTranslation(rotation, translation);
const point = dq.transformPoint(new Vec3(1, 0, 0));Constructors
Constructor
new DualQuat(
real?,dual?):DualQuat
Parameters
real?
dual?
Returns
DualQuat
Properties
dual
readonlydual:Quat
Dual part (encodes translation)
real
readonlyreal:Quat
Real part (rotation quaternion)
Methods
conjugate()
conjugate():
DualQuat
Returns
DualQuat
conjugateMut()
conjugateMut():
this
Returns
this
copyToArray()
copyToArray(
arr,offset?):void
Parameters
arr
number[] | Float32Array<ArrayBufferLike>
offset?
number = 0
Returns
void
equals()
equals(
other,epsilon?):boolean
Parameters
other
DualQuat
epsilon?
number = 1e-6
Returns
boolean
getRotation()
getRotation():
Quat
Returns
getRotationOut()
getRotationOut(
out):Quat
Parameters
out
Returns
getTranslation()
getTranslation():
Vec3
Returns
getTranslationOut()
getTranslationOut(
out):Vec3
Parameters
out
Returns
invert()
invert():
DualQuat
Returns
DualQuat
invertMut()
invertMut():
this
Returns
this
lerp()
lerp(
target,t):DualQuat
Parameters
target
DualQuat
t
number
Returns
DualQuat
lerpMut()
lerpMut(
target,t):this
Parameters
target
DualQuat
t
number
Returns
this
multiply()
multiply(
other):DualQuat
Parameters
other
DualQuat
Returns
DualQuat
multiplyMut()
multiplyMut(
other):this
Parameters
other
DualQuat
Returns
this
normalize()
normalize():
DualQuat
Returns
DualQuat
normalizeMut()
normalizeMut():
this
Returns
this
sclerp()
sclerp(
target,t):DualQuat
Parameters
target
DualQuat
t
number
Returns
DualQuat
sclerpMut()
sclerpMut(
target,t):this
Parameters
target
DualQuat
t
number
Returns
this
toFloat32Array()
toFloat32Array():
Float32Array
Returns
Float32Array
toMat4()
toMat4():
Mat4
Returns
toMat4Out()
toMat4Out(
out):Mat4
Parameters
out
Returns
transformPoint()
transformPoint(
point):Vec3
Parameters
point
Returns
transformPointMut()
transformPointMut(
point):Vec3
Parameters
point
Returns
transformPointOut()
transformPointOut(
point,out):Vec3
Parameters
point
out
Returns
fromArray()
staticfromArray(arr,offset?):DualQuat
Parameters
arr
ArrayLike<number>
offset?
number = 0
Returns
DualQuat
fromMat4()
staticfromMat4(matrix):DualQuat
Parameters
matrix
Returns
DualQuat
fromRotationTranslation()
staticfromRotationTranslation(rotation,translation):DualQuat
Parameters
rotation
translation
Returns
DualQuat
identity()
staticidentity():DualQuat
Returns
DualQuat
lerpOut()
staticlerpOut(a,b,t,out):DualQuat
Parameters
a
DualQuat
b
DualQuat
t
number
out
DualQuat
Returns
DualQuat
multiplyOut()
staticmultiplyOut(a,b,out):DualQuat
Parameters
a
DualQuat
b
DualQuat
out
DualQuat
Returns
DualQuat
normalizeOut()
staticnormalizeOut(dq,out):DualQuat
Parameters
dq
DualQuat
out
DualQuat
Returns
DualQuat
sclerpOut()
staticsclerpOut(a,b,t,out):DualQuat
Parameters
a
DualQuat
b
DualQuat
t
number
out
DualQuat
Returns
DualQuat