VJMAP logoVJMAP
CAD · WebGIS
中

Namespace: mat4

Updated 2026-09-14~ 36 min read
.md

Table of contents

Type aliases

Functions

Type aliases

valueType

Ƭ valueType: mat4type

Functions

add

▸ add(out: mat4type, a: mat4type, b: mat4type): mat4type

Adds two mat4's

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the first operand
b mat4type the second operand

Returns: mat4type

out


adjoint

▸ adjoint(out: mat4type, a: mat4type): mat4type

Calculates the adjugate of a mat4

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the source matrix

Returns: mat4type

out


clone

▸ clone(a: mat4type): mat4type

Creates a new mat4 initialized with values from an existing matrix

Parameters
Name Type Description
a mat4type matrix to clone

Returns: mat4type

a new 4x4 matrix


copy

▸ copy(out: mat4type, a: mat4type): mat4type

Copy the values from one mat4 to another

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the source matrix

Returns: mat4type

out


create

▸ create(): mat4type

Creates a new identity mat4

Returns: mat4type

a new 4x4 matrix


determinant

▸ determinant(a: mat4type): number

Calculates the determinant of a mat4

Parameters
Name Type Description
a mat4type the source matrix

Returns: number

determinant of a


equals

▸ equals(a: mat4type, b: mat4type): boolean

Returns whether or not the matrices have approximately the same elements in the same position.

Parameters
Name Type Description
a mat4type The first matrix.
b mat4type The second matrix.

Returns: boolean

True if the matrices are equal, false otherwise.


exactEquals

▸ exactEquals(a: mat4type, b: mat4type): boolean

Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)

Parameters
Name Type Description
a mat4type The first matrix.
b mat4type The second matrix.

Returns: boolean

True if the matrices are equal, false otherwise.


frob

▸ frob(a: mat4type): number

Returns Frobenius norm of a mat4

Parameters
Name Type Description
a mat4type the matrix to calculate Frobenius norm of

Returns: number

Frobenius norm


fromQuat

▸ fromQuat(out: mat4type, q: quattype): mat4type

Calculates a 4x4 matrix from the given quaternion

Parameters
Name Type Description
out mat4type mat4 receiving operation result
q quattype Quaternion to create matrix from

Returns: mat4type

out


fromRotation

▸ fromRotation(out: mat4type, rad: number, axis: vec3type): mat4type | null

Creates a matrix from a given angle around a given axis This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.rotate(dest, dest, rad, axis);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
rad number the angle to rotate the matrix by
axis vec3type the axis to rotate around

Returns: mat4type | null

out


fromRotationTranslation

▸ fromRotationTranslation(out: mat4type, q: quattype, v: vec3type): mat4type

Creates a matrix from a quaternion rotation and vector translation This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.translate(dest, vec);
var quatMat = mat4.create();
quat.toMat4(quat, quatMat);
mat4.multiply(dest, quatMat);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
q quattype Rotation quaternion
v vec3type Translation vector

Returns: mat4type

out


fromRotationTranslationScale

▸ fromRotationTranslationScale(out: mat4type, q: quattype, v: vec3type, s: vec3type): mat4type

Creates a matrix from a quaternion rotation, vector translation and vector scale This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.translate(dest, vec);
var quatMat = mat4.create();
quat4.toMat4(quat, quatMat);
mat4.multiply(dest, quatMat);
mat4.scale(dest, scale)
Parameters
Name Type Description
out mat4type mat4 receiving operation result
q quattype Rotation quaternion
v vec3type Translation vector
s vec3type Scaling vector

Returns: mat4type

out


fromRotationTranslationScaleOrigin

▸ fromRotationTranslationScaleOrigin(out: mat4type, q: quattype, v: vec3type, s: vec3type, o: vec3type): mat4type

Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.translate(dest, vec);
mat4.translate(dest, origin);
var quatMat = mat4.create();
quat4.toMat4(quat, quatMat);
mat4.multiply(dest, quatMat);
mat4.scale(dest, scale)
mat4.translate(dest, negativeOrigin);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
q quattype Rotation quaternion
v vec3type Translation vector
s vec3type Scaling vector
o vec3type The origin vector around which to scale and rotate

Returns: mat4type

out


fromScaling

▸ fromScaling(out: mat4type, v: vec3type): mat4type

Creates a matrix from a vector scaling This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.scale(dest, dest, vec);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
v vec3type Scaling vector

Returns: mat4type

out


fromTranslation

▸ fromTranslation(out: mat4type, v: vec3type): mat4type

Creates a matrix from a vector translation This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.translate(dest, dest, vec);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
v vec3type Translation vector

Returns: mat4type

out


fromValues

▸ fromValues(m00: number, m01: number, m02: number, m03: number, m10: number, m11: number, m12: number, m13: number, m20: number, m21: number, m22: number, m23: number, m30: number, m31: number, m32: number, m33: number): mat4type

Create a new mat4 with the given values

Parameters
Name Type Description
m00 number Component in column 0, row 0 position (index 0)
m01 number Component in column 0, row 1 position (index 1)
m02 number Component in column 0, row 2 position (index 2)
m03 number Component in column 0, row 3 position (index 3)
m10 number Component in column 1, row 0 position (index 4)
m11 number Component in column 1, row 1 position (index 5)
m12 number Component in column 1, row 2 position (index 6)
m13 number Component in column 1, row 3 position (index 7)
m20 number Component in column 2, row 0 position (index 8)
m21 number Component in column 2, row 1 position (index 9)
m22 number Component in column 2, row 2 position (index 10)
m23 number Component in column 2, row 3 position (index 11)
m30 number Component in column 3, row 0 position (index 12)
m31 number Component in column 3, row 1 position (index 13)
m32 number Component in column 3, row 2 position (index 14)
m33 number Component in column 3, row 3 position (index 15)

Returns: mat4type

A new mat4


fromXRotation

▸ fromXRotation(out: mat4type, rad: number): mat4type

Creates a matrix from the given angle around the X axis This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.rotateX(dest, dest, rad);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
rad number the angle to rotate the matrix by

Returns: mat4type

out


fromYRotation

▸ fromYRotation(out: mat4type, rad: number): mat4type

Creates a matrix from the given angle around the Y axis This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.rotateY(dest, dest, rad);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
rad number the angle to rotate the matrix by

Returns: mat4type

out


fromZRotation

▸ fromZRotation(out: mat4type, rad: number): mat4type

Creates a matrix from the given angle around the Z axis This is equivalent to (but much faster than):

mat4.identity(dest);
mat4.rotateZ(dest, dest, rad);
Parameters
Name Type Description
out mat4type mat4 receiving operation result
rad number the angle to rotate the matrix by

Returns: mat4type

out


frustum

▸ frustum(out: mat4type, left: number, right: number, bottom: number, top: number, near: number, far: number): mat4type

Generates a frustum matrix with the given bounds

Parameters
Name Type Description
out mat4type mat4 frustum matrix will be written into
left number Left bound of the frustum
right number Right bound of the frustum
bottom number Bottom bound of the frustum
top number Top bound of the frustum
near number Near bound of the frustum
far number Far bound of the frustum

Returns: mat4type

out


getRotation

▸ getRotation(out: vec4type, mat: mat4type): quattype

Returns a quaternion representing the rotational component of a transformation matrix. If a matrix is built with fromRotationTranslation, the returned quaternion will be the same as the quaternion originally supplied.

Parameters
Name Type Description
out vec4type Quaternion to receive the rotation component
mat mat4type Matrix to be decomposed (input)

Returns: quattype

out


getScaling

▸ getScaling(out: vec3type, mat: mat4type): vec3type

Returns the scaling factor component of a transformation matrix. If a matrix is built with fromRotationTranslationScale with a normalized Quaternion paramter, the returned vector will be the same as the scaling vector originally supplied.

Parameters
Name Type Description
out vec3type Vector to receive scaling factor component
mat mat4type Matrix to be decomposed (input)

Returns: vec3type

out


getTranslation

▸ getTranslation(out: vec3type, mat: mat4type): vec3type

Returns the translation vector component of a transformation matrix. If a matrix is built with fromRotationTranslation, the returned vector will be the same as the translation vector originally supplied.

Parameters
Name Type Description
out vec3type Vector to receive translation component
mat mat4type Matrix to be decomposed (input)

Returns: vec3type

out


identity

▸ identity(out: mat4type): mat4type

Set a mat4 to the identity matrix

Parameters
Name Type Description
out mat4type the receiving matrix

Returns: mat4type

out


invert

▸ invert(out: mat4type, a: mat4type): mat4type | null

Inverts a mat4

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the source matrix

Returns: mat4type | null

out


lookAt

▸ lookAt(out: mat4type, eye: vec3type, center: vec3type, up: vec3type): mat4type

Generates a look-at matrix with the given eye position, focal point, and up axis

Parameters
Name Type Description
out mat4type mat4 frustum matrix will be written into
eye vec3type Position of the viewer
center vec3type Point the viewer is looking at
up vec3type vec3 pointing up

Returns: mat4type

out


multiply

▸ multiply(out: mat4type, a: mat4type, b: mat4type): mat4type

Multiplies two mat4s

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the first operand
b mat4type the second operand

Returns: mat4type

out


multiplyScalar

▸ multiplyScalar(out: mat4type, a: mat4type, b: number): mat4type

Multiply each element of the matrix by a scalar.

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the matrix to scale
b number amount to scale the matrix's elements by

Returns: mat4type

out


multiplyScalarAndAdd

▸ multiplyScalarAndAdd(out: mat4type, a: mat4type, b: mat4type, s: number): mat4type

Adds two mat4's after multiplying each element of the second operand by a scalar value.

Parameters
Name Type Description
out mat4type the receiving vector
a mat4type the first operand
b mat4type the second operand
s number the amount to scale b's elements by before adding

Returns: mat4type

out


ortho

▸ ortho(out: mat4type, left: number, right: number, bottom: number, top: number, near: number, far: number): mat4type

Generates a orthogonal projection matrix with the given bounds

Parameters
Name Type Description
out mat4type mat4 frustum matrix will be written into
left number Left bound of the frustum
right number Right bound of the frustum
bottom number Bottom bound of the frustum
top number Top bound of the frustum
near number Near bound of the frustum
far number Far bound of the frustum

Returns: mat4type

out


perspective

▸ perspective(out: mat4type, fovy: number, aspect: number, near: number, far: number): mat4type

Generates a perspective projection matrix with the given bounds

Parameters
Name Type Description
out mat4type mat4 frustum matrix will be written into
fovy number Vertical field of view in radians
aspect number Aspect ratio. typically viewport width/height
near number Near bound of the frustum
far number Far bound of the frustum

Returns: mat4type

out


perspectiveFromFieldOfView

▸ perspectiveFromFieldOfView(out: mat4type, fov: { downDegrees: number ; leftDegrees: number ; rightDegrees: number ; upDegrees: number }, near: number, far: number): mat4type

Generates a perspective projection matrix with the given field of view. This is primarily useful for generating projection matrices to be used with the still experiemental WebVR API.

Parameters
Name Type Description
out mat4type mat4 frustum matrix will be written into
fov object Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees
fov.downDegrees number -
fov.leftDegrees number -
fov.rightDegrees number -
fov.upDegrees number -
near number Near bound of the frustum
far number Far bound of the frustum

Returns: mat4type

out


rotate

▸ rotate(out: mat4type, a: mat4type, rad: number, axis: vec3type): mat4type | null

Rotates a mat4 by the given angle around the given axis

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the matrix to rotate
rad number the angle to rotate the matrix by
axis vec3type the axis to rotate around

Returns: mat4type | null

out


rotateX

▸ rotateX(out: mat4type, a: mat4type, rad: number): mat4type

Rotates a matrix by the given angle around the X axis

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the matrix to rotate
rad number the angle to rotate the matrix by

Returns: mat4type

out


rotateY

▸ rotateY(out: mat4type, a: mat4type, rad: number): mat4type

Rotates a matrix by the given angle around the Y axis

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the matrix to rotate
rad number the angle to rotate the matrix by

Returns: mat4type

out


rotateZ

▸ rotateZ(out: mat4type, a: mat4type, rad: number): mat4type

Rotates a matrix by the given angle around the Z axis

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the matrix to rotate
rad number the angle to rotate the matrix by

Returns: mat4type

out


scale

▸ scale(out: mat4type, a: mat4type, v: vec3type): mat4type

Scales the mat4 by the dimensions in the given vec3 not using vectorization

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the matrix to scale
v vec3type the vec3 to scale the matrix by

Returns: mat4type

out


set

▸ set(out: mat4type, m00: number, m01: number, m02: number, m03: number, m10: number, m11: number, m12: number, m13: number, m20: number, m21: number, m22: number, m23: number, m30: number, m31: number, m32: number, m33: number): mat4type

Set the components of a mat4 to the given values

Parameters
Name Type Description
out mat4type the receiving matrix
m00 number Component in column 0, row 0 position (index 0)
m01 number Component in column 0, row 1 position (index 1)
m02 number Component in column 0, row 2 position (index 2)
m03 number Component in column 0, row 3 position (index 3)
m10 number Component in column 1, row 0 position (index 4)
m11 number Component in column 1, row 1 position (index 5)
m12 number Component in column 1, row 2 position (index 6)
m13 number Component in column 1, row 3 position (index 7)
m20 number Component in column 2, row 0 position (index 8)
m21 number Component in column 2, row 1 position (index 9)
m22 number Component in column 2, row 2 position (index 10)
m23 number Component in column 2, row 3 position (index 11)
m30 number Component in column 3, row 0 position (index 12)
m31 number Component in column 3, row 1 position (index 13)
m32 number Component in column 3, row 2 position (index 14)
m33 number Component in column 3, row 3 position (index 15)

Returns: mat4type

out


str

▸ str(a: mat4type): string

Returns a string representation of a mat4

Parameters
Name Type Description
a mat4type matrix to represent as a string

Returns: string

string representation of the matrix


subtract

▸ subtract(out: mat4type, a: mat4type, b: mat4type): mat4type

Subtracts matrix b from matrix a

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the first operand
b mat4type the second operand

Returns: mat4type

out


translate

▸ translate(out: mat4type, a: mat4type, v: vec3type): mat4type

Translate a mat4 by the given vector

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the matrix to translate
v vec3type vector to translate by

Returns: mat4type

out


transpose

▸ transpose(out: mat4type, a: mat4type): mat4type

Transpose the values of a mat4

Parameters
Name Type Description
out mat4type the receiving matrix
a mat4type the source matrix

Returns: mat4type

out

vjmap / Exports / Math2D

Was this page helpful?