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