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.