Skip to content

@web-engine-dev/math


@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 ​

ts
const dq = DualQuat.fromRotationTranslation(rotation, translation);
const point = dq.transformPoint(new Vec3(1, 0, 0));

Constructors ​

Constructor ​

new DualQuat(real?, dual?): DualQuat

Parameters ​

real? ​

Quat

dual? ​

Quat

Returns ​

DualQuat

Properties ​

dual ​

readonly dual: Quat

Dual part (encodes translation)


real ​

readonly real: 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 ​

Quat


getRotationOut() ​

getRotationOut(out): Quat

Parameters ​

out ​

Quat

Returns ​

Quat


getTranslation() ​

getTranslation(): Vec3

Returns ​

Vec3


getTranslationOut() ​

getTranslationOut(out): Vec3

Parameters ​

out ​

Vec3

Returns ​

Vec3


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 ​

Mat4


toMat4Out() ​

toMat4Out(out): Mat4

Parameters ​

out ​

Mat4

Returns ​

Mat4


transformPoint() ​

transformPoint(point): Vec3

Parameters ​

point ​

Vec3

Returns ​

Vec3


transformPointMut() ​

transformPointMut(point): Vec3

Parameters ​

point ​

Vec3

Returns ​

Vec3


transformPointOut() ​

transformPointOut(point, out): Vec3

Parameters ​

point ​

Vec3

out ​

Vec3

Returns ​

Vec3


fromArray() ​

static fromArray(arr, offset?): DualQuat

Parameters ​

arr ​

ArrayLike<number>

offset? ​

number = 0

Returns ​

DualQuat


fromMat4() ​

static fromMat4(matrix): DualQuat

Parameters ​

matrix ​

Mat4

Returns ​

DualQuat


fromRotationTranslation() ​

static fromRotationTranslation(rotation, translation): DualQuat

Parameters ​

rotation ​

Quat

translation ​

Vec3

Returns ​

DualQuat


identity() ​

static identity(): DualQuat

Returns ​

DualQuat


lerpOut() ​

static lerpOut(a, b, t, out): DualQuat

Parameters ​

a ​

DualQuat

b ​

DualQuat

t ​

number

out ​

DualQuat

Returns ​

DualQuat


multiplyOut() ​

static multiplyOut(a, b, out): DualQuat

Parameters ​

a ​

DualQuat

b ​

DualQuat

out ​

DualQuat

Returns ​

DualQuat


normalizeOut() ​

static normalizeOut(dq, out): DualQuat

Parameters ​

dq ​

DualQuat

out ​

DualQuat

Returns ​

DualQuat


sclerpOut() ​

static sclerpOut(a, b, t, out): DualQuat

Parameters ​

a ​

DualQuat

b ​

DualQuat

t ​

number

out ​

DualQuat

Returns ​

DualQuat

Proprietary software. All rights reserved.