Skip to content

@web-engine-dev/math


@web-engine-dev/math / Vec2

Class: Vec2 ​

A 2D vector class with x and y 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.

Example ​

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

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

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

Constructors ​

Constructor ​

new Vec2(x?, y?): Vec2

Parameters ​

x? ​

number = 0

y? ​

number = 0

Returns ​

Vec2

Properties ​

x ​

x: number


y ​

y: number

Methods ​

[iterator]() ​

[iterator](): Generator<number>

Returns ​

Generator<number>


abs() ​

abs(): Vec2

Returns ​

Vec2


add() ​

add(v): Vec2

Parameters ​

v ​

Vec2

Returns ​

Vec2


addMut() ​

addMut(v): this

Adds another vector to this vector in place.

Parameters ​

v ​

Vec2

Vector to add

Returns ​

this

this for chaining


ceil() ​

ceil(): Vec2

Returns ​

Vec2


clamp() ​

clamp(min, max): Vec2

Parameters ​

min ​

Vec2

max ​

Vec2

Returns ​

Vec2


copyMut() ​

copyMut(v): this

Copies components from another vector.

Parameters ​

v ​

Vec2

Source vector

Returns ​

this

this for chaining


copyToArray() ​

copyToArray(arr, offset?): void

Parameters ​

arr ​

number[] | Float32Array<ArrayBufferLike>

offset? ​

number = 0

Returns ​

void


cross() ​

cross(v): number

Returns the "cross product" (z-component of 3D cross with z=0). Useful for determining winding order.

Parameters ​

v ​

Vec2

Returns ​

number


distance() ​

distance(v): number

Parameters ​

v ​

Vec2

Returns ​

number


distanceSq() ​

distanceSq(v): number

Parameters ​

v ​

Vec2

Returns ​

number


div() ​

div(s): Vec2

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

Parameters ​

s ​

number

Scalar divisor

Returns ​

Vec2

New divided vector


divVec() ​

divVec(v): Vec2

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

Parameters ​

v ​

Vec2

Vector to divide by

Returns ​

Vec2

New vector with component-wise quotients


dot() ​

dot(v): number

Parameters ​

v ​

Vec2

Returns ​

number


equals() ​

equals(v, epsilon?): boolean

Parameters ​

v ​

Vec2

epsilon? ​

number = 0

Returns ​

boolean


floor() ​

floor(): Vec2

Returns ​

Vec2


length() ​

length(): number

Returns ​

number


lengthSq() ​

lengthSq(): number

Returns ​

number


lerp() ​

lerp(v, t): Vec2

Parameters ​

v ​

Vec2

t ​

number

Returns ​

Vec2


lerpMut() ​

lerpMut(v, t): this

Linearly interpolates this vector towards another in place.

Parameters ​

v ​

Vec2

Target vector

t ​

number

Interpolation factor (0 = this, 1 = v)

Returns ​

this

this for chaining


max() ​

max(v): Vec2

Parameters ​

v ​

Vec2

Returns ​

Vec2


min() ​

min(v): Vec2

Parameters ​

v ​

Vec2

Returns ​

Vec2


mul() ​

mul(s): Vec2

Parameters ​

s ​

number

Returns ​

Vec2


mulVec() ​

mulVec(v): Vec2

Parameters ​

v ​

Vec2

Returns ​

Vec2


negate() ​

negate(): Vec2

Returns ​

Vec2


negateMut() ​

negateMut(): this

Negates this vector in place.

Returns ​

this

this for chaining


normalize() ​

normalize(): Vec2

Returns ​

Vec2


normalizeMut() ​

normalizeMut(): this

Normalizes this vector in place.

Returns ​

this

this for chaining


perpendicular() ​

perpendicular(): Vec2

Returns a perpendicular vector (90 degrees counter-clockwise).

Returns ​

Vec2


reflect() ​

reflect(normal): Vec2

Reflects the vector across a normal.

Parameters ​

normal ​

Vec2

Returns ​

Vec2


rotate() ​

rotate(angle): Vec2

Rotates the vector by the given angle (in radians).

Parameters ​

angle ​

number

Returns ​

Vec2


round() ​

round(): Vec2

Returns ​

Vec2


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): this

Sets the components of this vector directly.

Parameters ​

x ​

number

X component

y ​

number

Y component

Returns ​

this

this for chaining


sub() ​

sub(v): Vec2

Parameters ​

v ​

Vec2

Returns ​

Vec2


subMut() ​

subMut(v): this

Subtracts another vector from this vector in place.

Parameters ​

v ​

Vec2

Vector to subtract

Returns ​

this

this for chaining


toArray() ​

toArray(): [number, number]

Returns ​

[number, number]


toFloat32Array() ​

toFloat32Array(): Float32Array

Returns ​

Float32Array


toString() ​

toString(): string

Returns ​

string


addOut() ​

static addOut(a, b, out): Vec2

Adds two vectors and writes the result to out.

Parameters ​

a ​

Vec2

First vector

b ​

Vec2

Second vector

out ​

Vec2

Output vector

Returns ​

Vec2

out for chaining


fromArray() ​

static fromArray(arr, offset?): Vec2

Parameters ​

arr ​

ArrayLike<number>

offset? ​

number = 0

Returns ​

Vec2


lerpOut() ​

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

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

Parameters ​

a ​

Vec2

Start vector

b ​

Vec2

End vector

t ​

number

Interpolation factor (0 = a, 1 = b)

out ​

Vec2

Output vector

Returns ​

Vec2

out for chaining


negateOut() ​

static negateOut(v, out): Vec2

Negates a vector and writes the result to out.

Parameters ​

v ​

Vec2

Vector to negate

out ​

Vec2

Output vector

Returns ​

Vec2

out for chaining


normalizeOut() ​

static normalizeOut(v, out): Vec2

Normalizes a vector and writes the result to out.

Parameters ​

v ​

Vec2

Vector to normalize

out ​

Vec2

Output vector

Returns ​

Vec2

out for chaining


one() ​

static one(): Vec2

Returns ​

Vec2


scaleOut() ​

static scaleOut(v, s, out): Vec2

Scales a vector and writes the result to out.

Parameters ​

v ​

Vec2

Vector to scale

s ​

number

Scalar value

out ​

Vec2

Output vector

Returns ​

Vec2

out for chaining


subOut() ​

static subOut(a, b, out): Vec2

Subtracts b from a and writes the result to out.

Parameters ​

a ​

Vec2

First vector

b ​

Vec2

Second vector

out ​

Vec2

Output vector

Returns ​

Vec2

out for chaining


unitX() ​

static unitX(): Vec2

Returns ​

Vec2


unitY() ​

static unitY(): Vec2

Returns ​

Vec2


zero() ​

static zero(): Vec2

Returns ​

Vec2

Proprietary software. All rights reserved.