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.