Represents a 4x4 matrix which is column-major (when typed out it looks row-major).
- Source:
- See:
- 
        - mat4 for data structure information.
 
Methods
(static) add(out, a, b) → {mat4}
- Source:
Adds the two matrices (A+B).
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| a | mat4 | first operand | 
| b | mat4 | second operand | 
Returns:
out
- Type
- mat4
(static) clone(matrix) → {mat4}
- Source:
Creates a clone of the given matrix.
Parameters:
| Name | Type | Description | 
|---|---|---|
| matrix | mat4 | matrix to clone | 
Returns:
a new matrix
- Type
- mat4
(static) copy(out, matrix) → {mat4}
- Source:
Creates a copy of the given matrix.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to copy | 
Returns:
out
- Type
- mat4
(static) create() → {mat4}
- Source:
Creates a new identity matrix.
Returns:
a new matrix
- Type
- mat4
(static) equals(a, b) → {Boolean}
- Source:
Returns whether or not the matrices have exactly the same elements in the same position.
Parameters:
| Name | Type | Description | 
|---|---|---|
| a | mat4 | first matrix | 
| b | mat4 | second matrix | 
Returns:
true if the matrices are equal
- Type
- Boolean
(static) fromRotation(out, rad, axis) → {mat4}
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)
Example
let matrix = fromRotation(create(), TAU / 4, [0, 0, 3])Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| rad | Number | angle to rotate the matrix by | 
| axis | vec3 | axis of which to rotate around | 
Returns:
out
- Type
- mat4
(static) fromScaling(out, vector) → {mat4}
Creates a matrix from a vector scaling. This is equivalent to (but much faster than):
mat4.identity(dest)
mat4.scale(dest, dest, vec)
Example
let matrix = fromScaling([1, 2, 0.5])Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| vector | vec3 | X, Y, Z factors by which to scale | 
Returns:
out
- Type
- mat4
(static) fromTaitBryanRotation(out, yaw, pitch, roll) → {mat4}
- Source:
- See:
Creates a matrix from the given Tait–Bryan angles.
Tait-Bryan Euler angle convention using active, intrinsic rotations around the axes in the order z-y-x.
Example
let matrix = fromTaitBryanRotation(create(), TAU / 4, 0, TAU / 2)Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| yaw | Number | Z rotation in radians | 
| pitch | Number | Y rotation in radians | 
| roll | Number | X rotation in radians | 
Returns:
out
- Type
- mat4
(static) fromTranslation(out, vector) → {mat4}
Creates a matrix from a vector translation. This is equivalent to (but much faster than):
mat4.identity(dest)
mat4.translate(dest, dest, vec)
Example
let matrix = fromTranslation(create(), [1, 2, 3])Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| vector | vec3 | offset (vector) of translation | 
Returns:
out
- Type
- mat4
(static) fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) → {mat4}
Create a matrix with the given values.
Example
let matrix = fromValues(
  1, 0, 0, 1,
  0, 1, 0, 0,
  0, 0, 1, 0,
  0, 0, 0, 1
)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:
a new matrix
- Type
- mat4
(static) fromVectorRotation(out, source, target) → {mat4}
- Source:
- See:
Create a matrix that rotates the given source to the given target vector.
Each vector must be a directional vector with a length greater than zero.
Example
let matrix = fromVectorRotation(mat4.create(), [1, 2, 2], [-3, 3, 12])Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| source | vec3 | source vector | 
| target | vec3 | target vector | 
Returns:
a new matrix
- Type
- mat4
(static) fromXRotation(out, radians) → {mat4}
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, radians)
Example
let matrix = fromXRotation(create(), TAU / 4)Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| radians | Number | angle to rotate the matrix by | 
Returns:
out
- Type
- mat4
(static) fromYRotation(out, radians) → {mat4}
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, radians)
Example
let matrix = fromYRotation(create(), TAU / 4)Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| radians | Number | angle to rotate the matrix by | 
Returns:
out
- Type
- mat4
(static) fromZRotation(out, radians) → {mat4}
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, radians)
Example
let matrix = fromZRotation(create(), TAU / 4)Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| radians | Number | angle to rotate the matrix by | 
Returns:
out
- Type
- mat4
(static) identity(out) → {mat4}
Set a matrix to the identity transform.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
Returns:
out
- Type
- mat4
(static) invert(out, matrix) → {mat4}
- Source:
Creates a invert copy of the given matrix.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to invert | 
Returns:
out
- Type
- mat4
(static) isIdentity(matrix) → {Boolean}
Determine whether the given matrix is the identity transform. This is equivalent to (but much faster than):
mat4.equals(mat4.create(), matrix)
Example
if (mat4.isIdentity(mymatrix)) ...Parameters:
| Name | Type | Description | 
|---|---|---|
| matrix | mat4 | the matrix | 
Returns:
true if matrix is the identity transform
- Type
- Boolean
(static) isMirroring(matrix) → {Boolean}
Determine whether the given matrix is a mirroring transformation.
Parameters:
| Name | Type | Description | 
|---|---|---|
| matrix | mat4 | matrix of reference | 
Returns:
true if matrix is a mirroring transformation
- Type
- Boolean
(static) isOnlyTransformScale(matrix) → {Boolean}
Determine whether the given matrix is only translate and/or scale. This code returns true for TAU / 2 rotation as it can be interpreted as scale.
Parameters:
| Name | Type | Description | 
|---|---|---|
| matrix | mat4 | the matrix | 
Returns:
true if matrix is for translate and/or scale
- Type
- Boolean
(static) mirrorByPlane(out, plane) → {mat4}
Create a matrix for mirroring about the given plane.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| plane | vec4 | plane of which to mirror the matrix | 
Returns:
out
- Type
- mat4
(static) multiply(out, a, b) → {mat4}
Multiplies the two matrices.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| a | mat4 | first operand | 
| b | mat4 | second operand | 
Returns:
out
- Type
- mat4
(static) rightMultiplyVec2(vector, matrix) → {vec2}
Multiply a 2D vector by a matrix (interpreted as 2 row, 1 column).
Calculation: result = v*M, where the fourth element is set to 1.
Parameters:
| Name | Type | Description | 
|---|---|---|
| vector | vec2 | input vector | 
| matrix | mat4 | input matrix | 
Returns:
a new vector
- Type
- vec2
(static) rightMultiplyVec3(vector, matrix) → {vec3}
Multiply a 3D vector by a matrix (interpreted as 3 row, 1 column)
Calculation: result = v*M, where the fourth element is set to 1.
Parameters:
| Name | Type | Description | 
|---|---|---|
| vector | vec3 | input vector | 
| matrix | mat4 | input matrix | 
Returns:
a new vector
- Type
- vec3
(static) rotate(out, matrix, radians, axis) → {mat4}
- Source:
Rotates a matrix by the given angle about the given axis.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to rotate | 
| radians | Number | angle to rotate the matrix by | 
| axis | vec3 | axis to rotate around | 
Returns:
out
- Type
- mat4
(static) rotateX(out, matrix, radians) → {mat4}
Rotates a matrix by the given angle around the X axis.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to rotate | 
| radians | Number | angle to rotate the matrix by | 
Returns:
out
- Type
- mat4
(static) rotateY(out, matrix, radians) → {mat4}
Rotates a matrix by the given angle around the Y axis.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to rotate | 
| radians | Number | angle to rotate the matrix by | 
Returns:
out
- Type
- mat4
(static) rotateZ(out, matrix, radians) → {mat4}
Rotates a matrix by the given angle around the Z axis.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to rotate | 
| radians | Number | angle to rotate the matrix by | 
Returns:
out
- Type
- mat4
(static) scale(out, matrix, dimensions) → {mat4}
- Source:
Scales the matrix by the given dimensions.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to scale | 
| dimensions | vec3 | dimensions to scale the matrix by | 
Returns:
out
- Type
- mat4
(static) subtract(out, a, b) → {mat4}
Subtracts matrix b from matrix a. (A-B)
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| a | mat4 | first operand | 
| b | mat4 | second operand | 
Returns:
out
- Type
- mat4
(static) toString(mat) → {String}
Return a string representing the given matrix.
Parameters:
| Name | Type | Description | 
|---|---|---|
| mat | mat4 | matrix of reference | 
Returns:
string representation
- Type
- String
(static) translate(out, matrix, offsets) → {mat4}
Translate the matrix by the given offset vector.
Parameters:
| Name | Type | Description | 
|---|---|---|
| out | mat4 | receiving matrix | 
| matrix | mat4 | matrix to translate | 
| offsets | vec3 | offset vector to translate by | 
Returns:
out
- Type
- mat4