@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
// 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()
staticaddOut(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()
staticfromArray(arr,offset?):Vec2
Parameters
arr
ArrayLike<number>
offset?
number = 0
Returns
Vec2
lerpOut()
staticlerpOut(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()
staticnegateOut(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()
staticnormalizeOut(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()
staticone():Vec2
Returns
Vec2
scaleOut()
staticscaleOut(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()
staticsubOut(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()
staticunitX():Vec2
Returns
Vec2
unitY()
staticunitY():Vec2
Returns
Vec2
zero()
staticzero():Vec2
Returns
Vec2