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.