Skip to content

@web-engine-dev/math


@web-engine-dev/math / Vec4

Class: Vec4

A 4D vector class with x, y, z, and w components.

Default operations are immutable and return new instances. For performance-critical code paths (game loops, hot paths), use the mutable variants (suffix Mut) or static out-parameter methods (suffix Out) to avoid allocations.

Useful for homogeneous coordinates, RGBA colors, and quaternion data.

Example

ts
// Immutable (allocates new Vec4)
const result = a.add(b);

// Mutable (modifies a in place, no allocation)
a.addMut(b);

// Out-parameter (writes to existing Vec4)
Vec4.addOut(a, b, result);

Constructors

Constructor

new Vec4(x?, y?, z?, w?): Vec4

Parameters

x?

number = 0

y?

number = 0

z?

number = 0

w?

number = 0

Returns

Vec4

Properties

w

w: number


x

x: number


y

y: number


z

z: number

Methods

[iterator]()

[iterator](): Generator<number>

Returns

Generator<number>


abs()

abs(): Vec4

Returns

Vec4


add()

add(v): Vec4

Parameters

v

Vec4

Returns

Vec4


addMut()

addMut(v): this

Adds another vector to this vector in place.

Parameters

v

Vec4

Vector to add

Returns

this

this for chaining


ceil()

ceil(): Vec4

Returns

Vec4


clamp()

clamp(min, max): Vec4

Parameters

min

Vec4

max

Vec4

Returns

Vec4


copyMut()

copyMut(v): this

Copies components from another vector.

Parameters

v

Vec4

Source vector

Returns

this

this for chaining


copyToArray()

copyToArray(arr, offset?): void

Parameters

arr

number[] | Float32Array<ArrayBufferLike>

offset?

number = 0

Returns

void


distance()

distance(v): number

Parameters

v

Vec4

Returns

number


distanceSq()

distanceSq(v): number

Parameters

v

Vec4

Returns

number


div()

div(s): Vec4

Divides this vector by a scalar. Returns zero vector if divisor is zero to avoid Infinity/NaN.

Parameters

s

number

Scalar divisor

Returns

Vec4

New divided vector


divVec()

divVec(v): Vec4

Component-wise division by another vector. Uses 0 for components where divisor is 0 to avoid Infinity/NaN.

Parameters

v

Vec4

Vector to divide by

Returns

Vec4

New vector with component-wise quotients


dot()

dot(v): number

Parameters

v

Vec4

Returns

number


equals()

equals(v, epsilon?): boolean

Parameters

v

Vec4

epsilon?

number = 0

Returns

boolean


floor()

floor(): Vec4

Returns

Vec4


length()

length(): number

Returns

number


lengthSq()

lengthSq(): number

Returns

number


lerp()

lerp(v, t): Vec4

Parameters

v

Vec4

t

number

Returns

Vec4


lerpMut()

lerpMut(v, t): this

Linearly interpolates this vector towards another in place.

Parameters

v

Vec4

Target vector

t

number

Interpolation factor (0 = this, 1 = v)

Returns

this

this for chaining


max()

max(v): Vec4

Parameters

v

Vec4

Returns

Vec4


min()

min(v): Vec4

Parameters

v

Vec4

Returns

Vec4


mul()

mul(s): Vec4

Parameters

s

number

Returns

Vec4


mulVec()

mulVec(v): Vec4

Parameters

v

Vec4

Returns

Vec4


negate()

negate(): Vec4

Returns

Vec4


negateMut()

negateMut(): this

Negates this vector in place.

Returns

this

this for chaining


normalize()

normalize(): Vec4

Returns

Vec4


normalizeMut()

normalizeMut(): this

Normalizes this vector in place.

Returns

this

this for chaining


round()

round(): Vec4

Returns

Vec4


scaleMut()

scaleMut(s): this

Multiplies this vector by a scalar in place.

Parameters

s

number

Scalar value

Returns

this

this for chaining


setMut()

setMut(x, y, z, w): this

Sets the components of this vector directly.

Parameters

x

number

X component

y

number

Y component

z

number

Z component

w

number

W component

Returns

this

this for chaining


sub()

sub(v): Vec4

Parameters

v

Vec4

Returns

Vec4


subMut()

subMut(v): this

Subtracts another vector from this vector in place.

Parameters

v

Vec4

Vector to subtract

Returns

this

this for chaining


toArray()

toArray(): [number, number, number, number]

Returns

[number, number, number, number]


toFloat32Array()

toFloat32Array(): Float32Array

Returns

Float32Array


toString()

toString(): string

Returns

string


addOut()

static addOut(a, b, out): Vec4

Adds two vectors and writes the result to out.

Parameters

a

Vec4

First vector

b

Vec4

Second vector

out

Vec4

Output vector

Returns

Vec4

out for chaining


fromArray()

static fromArray(arr, offset?): Vec4

Parameters

arr

ArrayLike<number>

offset?

number = 0

Returns

Vec4


lerpOut()

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

Linearly interpolates between two vectors and writes the result to out.

Parameters

a

Vec4

Start vector

b

Vec4

End vector

t

number

Interpolation factor (0 = a, 1 = b)

out

Vec4

Output vector

Returns

Vec4

out for chaining


negateOut()

static negateOut(v, out): Vec4

Negates a vector and writes the result to out.

Parameters

v

Vec4

Vector to negate

out

Vec4

Output vector

Returns

Vec4

out for chaining


normalizeOut()

static normalizeOut(v, out): Vec4

Normalizes a vector and writes the result to out.

Parameters

v

Vec4

Vector to normalize

out

Vec4

Output vector

Returns

Vec4

out for chaining


one()

static one(): Vec4

Returns

Vec4


scaleOut()

static scaleOut(v, s, out): Vec4

Scales a vector and writes the result to out.

Parameters

v

Vec4

Vector to scale

s

number

Scalar value

out

Vec4

Output vector

Returns

Vec4

out for chaining


subOut()

static subOut(a, b, out): Vec4

Subtracts b from a and writes the result to out.

Parameters

a

Vec4

First vector

b

Vec4

Second vector

out

Vec4

Output vector

Returns

Vec4

out for chaining


unitW()

static unitW(): Vec4

Returns

Vec4


unitX()

static unitX(): Vec4

Returns

Vec4


unitY()

static unitY(): Vec4

Returns

Vec4


unitZ()

static unitZ(): Vec4

Returns

Vec4


zero()

static zero(): Vec4

Returns

Vec4

Proprietary software. All rights reserved.