Skip to content

Repository files navigation

pex-math

npm versionstability-stablenpm minzipped sizedependenciestypesConventional Commitsstyled with prettierlinted with eslintlicense

Array-based vector, quaternion and matrix math with utils for PEX.

Installation

npm install pex-math

Usage

import{mat4}from"pex-math";constidentityMatrix=mat4.create();// => [1, 0, 0, 0,// 0, 1, 0, 0,// 0, 0, 1, 0,// 0, 0, 0, 1]

API

Modules

pex-math
avec2
avec3
avec4
eases
euler
mat2x3
mat3
mat4
quat
utils
vec2
vec3
vec4

Typedefs

TypedArray : Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float16Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array
AVec2 : TypedArray
AVec3 : TypedArray
AVec4 : TypedArray
AMat4 : TypedArray
AQuat : TypedArray
Euler : Array.<number>
Mat2x3 : Array.<number>
Mat3 : Array.<number>
Mat4 : Array.<number>
Quat : Array.<number>
Vec2 : Array.<number>
Vec3 : Array.<number>
Vec4 : Array.<number>
Degrees : number
Radians : number
iterativeCallback : function

Callback for iterating typed arrays.

easeFnnumber

Ease functions signature.

easeStepFnnumber

Ease step functions signature.

pex-math

pex-math.mat2x3 : mat2x3

Kind: static property of pex-math

pex-math.mat3 : mat3

Kind: static property of pex-math

pex-math.mat4 : mat4

Kind: static property of pex-math

pex-math.vec2 : vec2

Kind: static property of pex-math

pex-math.vec3 : vec3

Kind: static property of pex-math

pex-math.vec4 : vec4

Kind: static property of pex-math

pex-math.avec2 : avec2

Kind: static property of pex-math

pex-math.avec3 : avec3

Kind: static property of pex-math

pex-math.avec4 : avec4

Kind: static property of pex-math

pex-math.quat : quat

Kind: static property of pex-math

pex-math.euler : euler

Kind: static property of pex-math

pex-math.eases : eases

Kind: static property of pex-math

pex-math.utils : utils

Kind: static property of pex-math

avec2

avec2.set2(a, i, x, y)

Sets a vector components.

Kind: static method of avec2

ParamType
aAVec2
inumber
xnumber
ynumber

avec2.set(a, i, b, j)

Sets a vector to another vector.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber

avec2.equals(a, i, b, j) ⇒ boolean

Compares two vectors.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber

avec2.add(a, i, b, j)

Adds a vector to another.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber

avec2.sub(a, i, b, j)

Subtracts a vector from another.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber

avec2.scale(a, i, s)

Scales a vector by a number.

Kind: static method of avec2

ParamType
aAVec2
inumber
snumber

avec2.addScaled(a, i, b, j, s)

Adds two vectors after scaling the second one.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber
snumber

avec2.dot(a, i, b, j) ⇒ number

Calculates the dot product of two vectors.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber

avec2.length(a, i) ⇒ number

Calculates the length of a vector.

Kind: static method of avec2

ParamType
aAVec2
inumber

avec2.lengthSq(a, i) ⇒ number

Calculates the squared length of a vector.

Kind: static method of avec2

ParamType
aAVec2
inumber

avec2.normalize(a, i)

Normalises a vector.

Kind: static method of avec2

ParamType
aAVec2
inumber

avec2.distance(a, i, b, j) ⇒ number

Calculates the distance between two vectors.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber

avec2.distanceSq(a, i, b, j) ⇒ number

Calculates the squared distance between two vectors.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber

avec2.limit(a, i, len)

Limits a vector to a length.

Kind: static method of avec2

ParamType
aAVec2
inumber
lennumber

avec2.lerp(a, i, b, j, t)

Linearly interpolates between two vectors.

Kind: static method of avec2

ParamType
aAVec2
inumber
bAVec2
jnumber
tnumber

avec2.forEach(a, callbackFn)

Executes a function once for each array element.

Kind: static method of avec2

ParamType
aAVec2
callbackFniterativeCallback

avec2.map(a, callbackFn) ⇒ AVec2

Creates a new array populated with the results of calling a provided function on every element in the calling array.

Kind: static method of avec2

ParamType
aAVec2
callbackFniterativeCallback

avec2.toString(a, i, [precision]) ⇒ string

Prints a vector to a string.

Kind: static method of avec2

ParamTypeDefault
aAVec2
inumber
[precision]number4

avec3

avec3.set3(a, i, x, y, z)

Sets a vector components.

Kind: static method of avec3

ParamType
aAVec3
inumber
xnumber
ynumber
znumber

avec3.set(a, i, b, j)

Sets a vector to another vector.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.equals(a, i, b, j) ⇒ boolean

Compares two vectors.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.add(a, i, b, j)

Adds a vector to another.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.sub(a, i, b, j)

Subtracts a vector from another.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.scale(a, i, s)

Scales a vector by a number.

Kind: static method of avec3

ParamType
aAVec3
inumber
snumber

avec3.addScaled(a, i, b, j, s)

Adds two vectors after scaling the second one.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber
snumber

avec3.multMat4(a, i, m, j)

Multiplies a vector by a matrix.

Kind: static method of avec3

ParamType
aAVec3
inumber
mAMat4
jnumber

avec3.multQuat(a, i, q, j)

Multiplies a vector by a quaternion.

Kind: static method of avec3

ParamType
aAVec3
inumber
qAQuat
jnumber

avec3.dot(a, i, b, j) ⇒ number

Calculates the dot product of two vectors.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.cross(a, i, b, j)

Calculates the cross product of two vectors.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.length(a, i) ⇒ number

Calculates the length of a vector.

Kind: static method of avec3

ParamType
aAVec3
inumber

avec3.lengthSq(a, i) ⇒ number

Calculates the squared length of a vector.

Kind: static method of avec3

ParamType
aAVec3
inumber

avec3.normalize(a, i)

Normalises a vector.

Kind: static method of avec3

ParamType
aAVec3
inumber

avec3.distance(a, i, b, j) ⇒ number

Calculates the distance between two vectors.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.distanceSq(a, i, b, j) ⇒ number

Calculates the squared distance between two vectors.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber

avec3.limit(a, i, len)

Limits a vector to a length.

Kind: static method of avec3

ParamType
aAVec3
inumber
lennumber

avec3.lerp(a, i, b, j, t)

Linearly interpolates between two vectors.

Kind: static method of avec3

ParamType
aAVec3
inumber
bAVec3
jnumber
tnumber

avec3.forEach(a, callbackFn)

Executes a function once for each array element.

Kind: static method of avec3

ParamType
aAVec3
callbackFniterativeCallback

avec3.map(a, callbackFn) ⇒ AVec3

Creates a new array populated with the results of calling a provided function on every element in the calling array.

Kind: static method of avec3

ParamType
aAVec3
callbackFniterativeCallback

avec3.toString(a, i, [precision]) ⇒ string

Prints a vector to a string.

Kind: static method of avec3

ParamTypeDefault
aAVec3
inumber
[precision]number4

avec4

avec4.set4(a, i, x, y, z, w)

Sets a vector components.

Kind: static method of avec4

ParamType
aAVec4
inumber
xnumber
ynumber
znumber
wnumber

avec4.set(a, i, b, j)

Sets a vector to another vector.

Kind: static method of avec4

ParamType
aAVec4
inumber
bAVec4
jnumber

avec4.equals(a, i, b, j) ⇒ boolean

Compares two vectors.

Kind: static method of avec4

ParamType
aAVec4
inumber
bAVec4
jnumber

avec4.add(a, i, b, j)

Adds a vector to another.

Kind: static method of avec4

ParamType
aAVec4
inumber
bAVec4
jnumber

avec4.sub(a, i, b, j)

Subtracts a vector from another.

Kind: static method of avec4

ParamType
aAVec4
inumber
bAVec4
jnumber

avec4.scale(a, i, s)

Scales a vector by a number.

Kind: static method of avec4

ParamType
aAVec4
inumber
snumber

avec4.addScaled(a, i, b, j, s)

Adds two vectors after scaling the second one.

Kind: static method of avec4

ParamType
aAVec4
inumber
bAVec4
jnumber
snumber

avec4.multMat4(a, i, m, j)

Multiplies a vector with a matrix.

Kind: static method of avec4

ParamType
aAVec4
inumber
mAMat4
jnumber

avec4.lerp(a, i, b, j, t)

Linearly interpolates between two vectors.

Kind: static method of avec4

ParamType
aAVec4
inumber
bAVec4
jnumber
tnumber

avec4.forEach(a, callbackFn)

Executes a function once for each array element.

Kind: static method of avec4

ParamType
aAVec4
callbackFniterativeCallback

avec4.map(a, callbackFn) ⇒ AVec4

Creates a new array populated with the results of calling a provided function on every element in the calling array.

Kind: static method of avec4

ParamType
aAVec4
callbackFniterativeCallback

avec4.toString(a, i, [precision]) ⇒ string

Prints a vector to a string.

Kind: static method of avec4

ParamTypeDefault
aAVec4
inumber
[precision]number4

eases

eases.linear() : easeFn

Kind: static method of eases

eases.sineIn() : easeFn

Kind: static method of eases

eases.sineOut() : easeFn

Kind: static method of eases

eases.sineInOut() : easeFn

Kind: static method of eases

eases.quadIn() : easeFn

Kind: static method of eases

eases.quadOut() : easeFn

Kind: static method of eases

eases.quadInOut() : easeFn

Kind: static method of eases

eases.cubicIn() : easeFn

Kind: static method of eases

eases.cubicOut() : easeFn

Kind: static method of eases

eases.cubicInOut() : easeFn

Kind: static method of eases

eases.quartIn() : easeFn

Kind: static method of eases

eases.quartOut() : easeFn

Kind: static method of eases

eases.quartInOut() : easeFn

Kind: static method of eases

eases.quintIn() : easeFn

Kind: static method of eases

eases.quintOut() : easeFn

Kind: static method of eases

eases.quintInOut() : easeFn

Kind: static method of eases

eases.expoIn() : easeFn

Kind: static method of eases

eases.expoOut() : easeFn

Kind: static method of eases

eases.expoInOut() : easeFn

Kind: static method of eases

eases.circIn() : easeFn

Kind: static method of eases

eases.circOut() : easeFn

Kind: static method of eases

eases.circInOut() : easeFn

Kind: static method of eases

eases.backIn() : easeFn

Kind: static method of eases

eases.backOut() : easeFn

Kind: static method of eases

eases.backInOut() : easeFn

Kind: static method of eases

eases.elasticIn() : easeFn

Kind: static method of eases

eases.elasticOut() : easeFn

Kind: static method of eases

eases.elasticInOut() : easeFn

Kind: static method of eases

eases.bounceIn() : easeFn

Kind: static method of eases

eases.bounceOut() : easeFn

Kind: static method of eases

eases.bounceInOut() : easeFn

Kind: static method of eases

eases.stepStart() : easeStepFn

Kind: static method of eases

eases.stepEnd() : easeStepFn

Kind: static method of eases

eases.stepNone() : easeStepFn

Kind: static method of eases

eases.stepBoth() : easeStepFn

Kind: static method of eases

euler

euler.create() ⇒ Euler

Create a new euler angles [0, 0, 0]: vec3 array of [x, y, z] rotation [yaw, pitch, roll] in radians.

Kind: static method of euler

euler.fromQuat(a, q) ⇒ Euler

Creates euler angles from quaternion. Assumes XYZ order of rotations.

Kind: static method of euler

ParamType
aEuler
qQuat

mat2x3

mat2x3.create() ⇒ Mat2x3

Returns a 2x3 identity matrix, a short form for a 3x3 matrix with the last row ignored.

Row major memory layout:

0 1
2 3
4 5

Equivalent to the column major OpenGL spec:

0 3
1 4
2 5
m00 m10
m01 m11
m02 m12

Kind: static method of mat2x3

mat2x3.identity(a) ⇒ Mat2x3

Sets a matrix to the identity matrix.

Kind: static method of mat2x3

ParamType
aMat2x3

mat2x3.copy(a) ⇒ Mat2x3

Returns a copy of a matrix.

Kind: static method of mat2x3

ParamType
aMat2x3

mat2x3.set(a, b) ⇒ Mat2x3

Sets a matrix from another matrix.

Kind: static method of mat2x3

ParamType
aMat2x3
bMat2x3

mat2x3.equals(a, b) ⇒ boolean

Compares two matrices.

Kind: static method of mat2x3

ParamType
aMat2x3
bMat2x3

mat2x3.mult(a, b) ⇒ Mat2x3

Multiplies two matrices.

Kind: static method of mat2x3

ParamType
aMat2x3
bMat2x3

mat2x3.translate(a, v) ⇒ Mat2x3

Translates a matrix by a vector.

Kind: static method of mat2x3

ParamType
aMat2x3
vVec2

mat2x3.rotate(a, rad) ⇒ Mat2x3

Rotates a matrix by an angle.

Kind: static method of mat2x3

ParamType
aMat2x3
radRadians

mat2x3.scale(a, v) ⇒ Mat2x3

Scales a matrix by a vector.

Kind: static method of mat2x3

ParamType
aMat2x3
vVec2

mat3

mat3.create() ⇒ Mat3

Returns a 3x3 identity matrix.

Row major memory layout:

 0 1 2
3 4 5
6 7 8

Equivalent to the column major OpenGL spec:

 0 3 6
1 4 7
2 5 8
m00 m10 m20
m01 m11 m21
m02 m12 m22

Kind: static method of mat3

mat3.identity(a) ⇒ Mat3

Sets a matrix to the identity matrix.

Kind: static method of mat3

ParamType
aMat3

mat3.copy(a) ⇒ Mat3

Returns a copy of a matrix.

Kind: static method of mat3

ParamType
aMat3

mat3.set(a, b) ⇒ Mat3

Sets a matrix from another matrix.

Kind: static method of mat3

ParamType
aMat3
bMat3

mat3.equals(a, b) ⇒ boolean

Compares two matrices.

Kind: static method of mat3

ParamType
aMat3
bMat3

mat3.mult(a, b) ⇒ Mat3

Multiplies two matrices.

Kind: static method of mat3

ParamType
aMat3
bMat3

mat3.transpose(a) ⇒ Mat3

Transposes a matrix.

Kind: static method of mat3

ParamType
aMat3

mat3.fromQuat(a, q) ⇒ Mat3

Sets matrix to a quaternion.

Kind: static method of mat3

ParamType
aMat3
qQuat

mat3.fromMat2x3(a, b) ⇒ Mat3

Sets a 3x3 matrix from a 2x3 matrix.

Kind: static method of mat3

ParamType
aMat3
bMat2x3

mat3.fromMat4(a, b) ⇒ Mat3

Sets a 3x3 matrix to a 4x4 matrix.

Kind: static method of mat3

ParamType
aMat3
bMat4

mat4

mat4.create() ⇒ Mat4

Returns a 4x4 identity matrix.

Row major memory layout:

 0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

Equivalent to the column major OpenGL spec:

 0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15
m00 m10 m20 m30
m01 m11 m21 m31
m02 m12 m22 m32
m03 m13 m23 m33

Kind: static method of mat4

mat4.identity(a) ⇒ Mat4

Sets a matrix to the identity matrix.

Kind: static method of mat4

ParamType
aMat4

mat4.copy(a) ⇒ Mat4

Returns a copy of a matrix.

Kind: static method of mat4

ParamType
aMat4

mat4.set(a, b) ⇒ Mat4

Sets a matrix from another matrix.

Kind: static method of mat4

ParamType
aMat4
bMat4

mat4.equals(a, b) ⇒ boolean

Compares two matrices.

Kind: static method of mat4

ParamType
aMat4
bMat4

mat4.mult(a, b) ⇒ Mat4

Multiplies two matrices.

Kind: static method of mat4

ParamType
aMat4
bMat4

mat4.invert(a) ⇒ Mat4

Inverts a matrix.

Kind: static method of mat4

ParamType
aMat4

mat4.determinant(a) ⇒ number

Returns the determinant of a matrix.

Kind: static method of mat4

ParamType
aMat4

mat4.transpose(a) ⇒ Mat4

Transposes a matrix.

Kind: static method of mat4

ParamType
aMat4

mat4.translate(a, v) ⇒ Mat4

Translates a matrix by a vector.

Kind: static method of mat4

ParamType
aMat4
vVec3

mat4.rotate(a, r, v) ⇒ Mat4

Rotates a matrix by an angle at an axis.

Kind: static method of mat4

ParamType
aMat4
rRadians
vVec3

mat4.scale(a, v) ⇒ Mat4

Scales a matrix by a vector.

Kind: static method of mat4

ParamType
aMat4
vVec3

mat4.fromQuat(a, q) ⇒ Mat4

Sets a matrix to a quaternion.

Kind: static method of mat4

ParamType
aMat4
qQuat

mat4.fromTranslationRotationScale(a, v, q, s) ⇒ Mat4

Sets a matrix to the TRS matrix.

Kind: static method of mat4

ParamType
aMat4
vVec3
qQuat
sVec3

mat4.fromMat3(a, b) ⇒ Mat4

Sets a 4x4 matrix to a 3x3 matrix.

Kind: static method of mat4

ParamType
aMat4
bMat3

mat4.frustum(a, left, right, bottom, top, near, far) ⇒ Mat4

Creates a frustum matrix with depth mapped to [-1, 1] (WebGL/OpenGL).

Kind: static method of mat4

ParamType
aMat4
leftnumber
rightnumber
bottomnumber
topnumber
nearnumber
farnumber

mat4.frustumZO(a, left, right, bottom, top, near, far) ⇒ Mat4

Creates a frustum matrix with depth mapped to [0, 1] (WebGPU/DirectX/Metal/Vulkan).

Kind: static method of mat4

ParamType
aMat4
leftnumber
rightnumber
bottomnumber
topnumber
nearnumber
farnumber

mat4.perspective(a, fovy, aspectRatio, near, far) ⇒ Mat4

Creates a perspective matrix with depth mapped to [-1, 1] (WebGL/OpenGL).

Kind: static method of mat4

ParamType
aMat4
fovyRadians
aspectRationumber
nearnumber
farnumber

mat4.perspectiveZO(a, fovy, aspectRatio, near, far) ⇒ Mat4

Creates a perspective matrix with depth mapped to [0, 1] (WebGPU/DirectX/Metal/Vulkan).

Kind: static method of mat4

ParamType
aMat4
fovyRadians
aspectRationumber
nearnumber
farnumber

mat4.ortho(a, left, right, bottom, top, near, far) ⇒ Mat4

Creates an orthographic matrix with depth mapped to [-1, 1] (WebGL/OpenGL).

Kind: static method of mat4

ParamType
aMat4
leftnumber
rightnumber
bottomnumber
topnumber
nearnumber
farnumber

mat4.orthoZO(a, left, right, bottom, top, near, far) ⇒ Mat4

Creates an orthographic matrix with depth mapped to [0, 1] (WebGPU/DirectX/Metal/Vulkan).

Kind: static method of mat4

ParamType
aMat4
leftnumber
rightnumber
bottomnumber
topnumber
nearnumber
farnumber

mat4.lookAt(a, from, to, [up]) ⇒ Mat4

Calculates a lookAt matrix from position, target and up vectors.

Kind: static method of mat4

ParamTypeDefault
aMat4
fromVec3
toVec3
[up]Vec3Y_UP

mat4.fromDirection(a, direction, [up]) ⇒ Mat4

Sets a matrix from a direction. Note: we assume +Z facing models.

Kind: static method of mat4

ParamTypeDefault
aMat4
directionVec3
[up]Vec3Y_UP

mat4.fromPointToPoint(a, from, to, [up]) ⇒ Mat4

Sets a matrix from a point to another.

Kind: static method of mat4

ParamTypeDefault
aMat4
fromVec3
toVec3
[up]Vec3Y_UP

quat

quat.set ⇒ Quat

Sets a quaternion to another quaternion.

Kind: static constant of quat

ParamType
aQuat
bQuat

quat.equals ⇒ boolean

Compares two quaternions.

Kind: static constant of quat

ParamType
aQuat
bQuat

quat.toString ⇒ Quat

Prints a quaternion to a string.

Kind: static constant of quat

ParamType
aQuat
precisionnumber

quat.create() ⇒ Quat

Returns a new quat at 0, 0, 0, 1.

Kind: static method of quat

quat.identity(a) ⇒ Quat

Sets a quaternion to the identity quaternion.

Kind: static method of quat

ParamType
aQuat

quat.copy(a) ⇒ Quat

Returns a copy of a quaternion.

Kind: static method of quat

ParamType
aQuat

quat.mult(a, b) ⇒ Quat

Multiplies one quaternion by another.

Kind: static method of quat

ParamType
aQuat
bQuat

quat.invert(a) ⇒ Quat

Inverts a quaternion.

Kind: static method of quat

ParamType
aQuat

quat.conjugate(a) ⇒ Quat

Conjugates a quaternion.

Kind: static method of quat

ParamType
aQuat

quat.length(a) ⇒ Quat

Calculates the length of a quaternion.

Kind: static method of quat

ParamType
aQuat

quat.normalize(a) ⇒ Quat

Normalizes a quaternion.

Kind: static method of quat

ParamType
aQuat

quat.dot(a, b) ⇒ Quat

Calculates the dot product of two quaternions.

Kind: static method of quat

ParamType
aQuat
bQuat

quat.fromEuler(a, e) ⇒ Quat

Set euler angles to a quaternion. Assumes XYZ rotation order.

Kind: static method of quat

ParamType
aQuat
eEuler

quat.fromAxisAngle(a, v, r) ⇒ Quat

Set the angle at an axis of a quaternion.

Kind: static method of quat

ParamType
aQuat
vVec3
rRadians

quat.fromAxes(a, x, y, z) ⇒ Quat

Sets a quaternion from orthonormal base xyz.

Kind: static method of quat

ParamType
aQuat
xVec3
yVec3
zVec3

quat.fromMat3(a, m) ⇒ Quat

Sets a quaternion to a 3x3 matrix.

Kind: static method of quat

ParamType
aQuat
mMat3

quat.fromMat4(a, m) ⇒ Quat

Sets a quaternion to a 4x4 matrix.

Kind: static method of quat

ParamType
aQuat
mMat4

quat.fromDirection(a, direction, [up]) ⇒ Quat

Sets a quaternion from a direction Note: we assume +Z facing models.

Kind: static method of quat

ParamTypeDefault
aQuat
directionVec3
[up]Vec3Y_UP

quat.fromPointToPoint(a, from, to, [up]) ⇒ Quat

Sets a quaternion from a point to another.

Kind: static method of quat

ParamTypeDefault
aQuat
fromVec3
toVec3
[up]Vec3Y_UP

quat.slerp(a, b, t) ⇒ Quat

Spherical linear interpolates between two quaternions.

Kind: static method of quat

ParamType
aQuat
bQuat
tnumber

utils

utils.EPSILON : number

Kind: static constant of utils

utils.HALF_PI : number

Kind: static constant of utils

utils.Y_UP : Vec3

Kind: static constant of utils

utils.lerp(a, b, t) ⇒ number

Linear interpolation between two numbers.

Kind: static method of utils

ParamType
anumber
bnumber
tnumber

utils.clamp(n, min, max) ⇒ number

Clamps a number between two numbers.

Kind: static method of utils

ParamType
nnumber
minnumber
maxnumber

utils.smoothstep(n, min, max) ⇒ number

Smooth Hermite interpolation between 0 and 1

Kind: static method of utils

ParamType
nnumber
minnumber
maxnumber

utils.remap(n, inStart, inEnd, outStart, outEnd) ⇒ number

Maps a number from one range to another.

Kind: static method of utils

ParamType
nnumber
inStartnumber
inEndnumber
outStartnumber
outEndnumber

utils.toRadians(degrees) ⇒ Radians

Transforms degrees into radians.

Kind: static method of utils

ParamType
degreesDegrees

utils.toDegrees(radians) ⇒ Degrees

Transforms radians into degrees.

Kind: static method of utils

ParamType
radiansRadians

utils.isPowerOfTwo(a) ⇒ boolean

Check if a number is a power of two

Kind: static method of utils

ParamType
anumber

utils.nextPowerOfTwo(n) ⇒ number

Returns the next highest power of two.

Kind: static method of utils

ParamType
nnumber

utils.prevPowerOfTwo(n) ⇒ number

Returns the previous power of two.

Kind: static method of utils

ParamType
nnumber

vec2

vec2.create() ⇒ Vec2

Returns a new vec2 at 0, 0.

Kind: static method of vec2

vec2.copy(a) ⇒ Vec2

Returns a copy of a vector.

Kind: static method of vec2

ParamType
aVec2

vec2.set(a, b) ⇒ Vec2

Sets a vector to another vector.

Kind: static method of vec2

ParamType
aVec2
bVec2

vec2.equals(a, b) ⇒ boolean

Compares two vectors.

Kind: static method of vec2

ParamType
aVec2
bVec2

vec2.add(a, b) ⇒ Vec2

Add a vector to another.

Kind: static method of vec2

ParamType
aVec2
bVec2

vec2.sub(a, b) ⇒ Vec2

Subtracts a vector from another.

Kind: static method of vec2

ParamType
aVec2
bVec2

vec2.scale(a, s) ⇒ Vec2

Scales a vector by a number.

Kind: static method of vec2

ParamType
aVec2
snumber

vec2.addScaled(a, b, s) ⇒ Vec2

Adds two vectors after scaling the second one.

Kind: static method of vec2

ParamType
aVec2
bVec2
snumber

vec2.dot(a, b) ⇒ number

Calculates the dot product of two vectors.

Kind: static method of vec2

ParamType
aVec2
bVec2

vec2.length(a) ⇒ number

Calculates the length of a vector.

Kind: static method of vec2

ParamType
aVec2

vec2.lengthSq(a) ⇒ number

Calculates the squared length of a vector.

Kind: static method of vec2

ParamType
aVec2

vec2.normalize(a) ⇒ Vec2

Normalises a vector.

Kind: static method of vec2

ParamType
aVec2

vec2.distance(a, b) ⇒ number

Calculates the distance between two vectors.

Kind: static method of vec2

ParamType
aVec2
bVec2

vec2.distanceSq(a, b) ⇒ number

Calculates the squared distance between two vectors.

Kind: static method of vec2

ParamType
aVec2
bVec2

vec2.limit(a, len) ⇒ Vec2

Limits a vector to a length.

Kind: static method of vec2

ParamType
aVec2
lennumber

vec2.lerp(a, b, t) ⇒ Vec2

Linearly interpolates between two vectors.

Kind: static method of vec2

ParamType
aVec2
bVec2
tnumber

vec2.toString(a, [precision]) ⇒ string

Prints a vector to a string.

Kind: static method of vec2

ParamTypeDefault
aVec2
[precision]number4

vec3

vec3.create() ⇒ Vec3

Returns a new vec3 at 0, 0, 0.

Kind: static method of vec3

vec3.copy(a) ⇒ Vec3

Returns a copy of a vector.

Kind: static method of vec3

ParamType
aVec3

vec3.set(a, b) ⇒ Vec3

Sets a vector to another vector.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.equals(a, b) ⇒ boolean

Compares two vectors.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.add(a, b) ⇒ Vec3

Adds a vector to another.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.sub(a, b) ⇒ Vec3

Subtracts a vector from another.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.scale(a, s) ⇒ Vec3

Scales a vector by a number.

Kind: static method of vec3

ParamType
aVec3
snumber

vec3.addScaled(a, b, s) ⇒ Vec3

Adds two vectors after scaling the second one.

Kind: static method of vec3

ParamType
aVec3
bVec3
snumber

vec3.multMat4(a, m) ⇒ Vec3

Multiplies a vector by a matrix.

Kind: static method of vec3

ParamType
aVec3
mMat4

vec3.multQuat(a, q) ⇒ Vec3

Multiplies a vector by a quaternion.

Kind: static method of vec3

ParamType
aVec3
qQuat

vec3.dot(a, b) ⇒ number

Calculates the dot product of two vectors.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.cross(a, b) ⇒ Vec3

Calculates the cross product of two vectors.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.length(a) ⇒ number

Calculates the length of a vector.

Kind: static method of vec3

ParamType
aVec3

vec3.lengthSq(a) ⇒ number

Calculates the squared length of a vector.

Kind: static method of vec3

ParamType
aVec3

vec3.normalize(a) ⇒ Vec3

Normalises a vector.

Kind: static method of vec3

ParamType
aVec3

vec3.distance(a, b) ⇒ number

Calculates the distance between two vectors.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.distanceSq(a, b) ⇒ number

Calculates the squared distance between two vectors.

Kind: static method of vec3

ParamType
aVec3
bVec3

vec3.limit(a, len) ⇒ Vec3

Limits a vector to a length.

Kind: static method of vec3

ParamType
aVec3
lennumber

vec3.lerp(a, b, t) ⇒ Vec3

Linearly interpolates between two vectors.

Kind: static method of vec3

ParamType
aVec3
bVec3
tnumber

vec3.toString(a, [precision]) ⇒ string

Prints a vector to a string.

Kind: static method of vec3

ParamTypeDefault
aVec3
[precision]number4

vec4

vec4.create() ⇒ Vec4

Returns a new vec4 at 0, 0, 0, 1.

Kind: static method of vec4

vec4.copy(a) ⇒ Vec4

Returns a copy of a vector.

Kind: static method of vec4

ParamType
aVec4

vec4.set(a, b) ⇒ Vec4

Sets a vector to another vector.

Kind: static method of vec4

ParamType
aVec4
bVec4

vec4.equals(a, b) ⇒ boolean

Compares two vectors.

Kind: static method of vec4

ParamType
aVec4
bVec4

vec4.add(a, b) ⇒ Vec4

Adds a vector to another.

Kind: static method of vec4

ParamType
aVec4
bVec4

vec4.sub(a, b) ⇒ Vec4

Subtracts a vector from another.

Kind: static method of vec4

ParamType
aVec4
bVec4

vec4.scale(a, s) ⇒ Vec4

Scales a vector by a number.

Kind: static method of vec4

ParamType
aVec4
snumber

vec4.addScaled(a, b, s) ⇒ Vec4

Adds two vectors after scaling the second one.

Kind: static method of vec4

ParamType
aVec4
bVec4
snumber

vec4.fromVec3(a, b) ⇒ Vec4

Create a vec4 from vec3.

Kind: static method of vec4

ParamType
aVec4
bVec3

vec4.multMat4(a, m) ⇒ Vec4

Multiplies a vector with a matrix.

Kind: static method of vec4

ParamType
aVec4
mMat4

vec4.lerp(a, b, t) ⇒ Vec4

Linearly interpolates between two vectors.

Kind: static method of vec4

ParamType
aVec4
bVec4
tnumber

vec4.toString(a, [precision]) ⇒ string

Prints a vector to a string.

Kind: static method of vec4

ParamTypeDefault
aVec4
[precision]number4

TypedArray : Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float16Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array

Kind: global typedef

AVec2 : TypedArray

Kind: global typedef

AVec3 : TypedArray

Kind: global typedef

AVec4 : TypedArray

Kind: global typedef

AMat4 : TypedArray

Kind: global typedef

AQuat : TypedArray

Kind: global typedef

Euler : Array.<number>

Kind: global typedef

Mat2x3 : Array.<number>

Kind: global typedef

Mat3 : Array.<number>

Kind: global typedef

Mat4 : Array.<number>

Kind: global typedef

Quat : Array.<number>

Kind: global typedef

Vec2 : Array.<number>

Kind: global typedef

Vec3 : Array.<number>

Kind: global typedef

Vec4 : Array.<number>

Kind: global typedef

Degrees : number

Kind: global typedef

Radians : number

Kind: global typedef

iterativeCallback : function

Callback for iterating typed arrays.

Kind: global typedef

ParamType
elementVec2 | Vec3 | Vec4
indexnumber
arrayAVec2 | AVec3 | AVec4

easeFn ⇒ number

Ease functions signature.

Kind: global typedef

ParamTypeDescription
tnumberInterpolant value

easeStepFn ⇒ number

Ease step functions signature.

Kind: global typedef

ParamTypeDefaultDescription
tnumberInterpolant value
[step]number1Number of steps

License

MIT. See license file.

About

Array-based vector, quaternion and matrix math with utils for PEX.

Topics

Resources

Code of conduct

Contributing

Stars

17 stars

Watchers

4 watching

Forks

Releases

Used by

Contributors

Languages