Options
All
• Public
• Public/Protected
• All

# Class Matrix

Class used to store matrix data (4x4) Note on matrix definitions in Babylon.js for setting values directly rather than using one of the methods available. Matrix size is given by rows x columns. A Vector3 is a 1 X 3 matrix [x, y, z].

In Babylon.js multiplying a 1 x 3 matrix by a 4 x 4 matrix is done using BABYLON.Vector4.TransformCoordinates(Vector3, Matrix). and extending the passed Vector3 to a Vector4, V = [x, y, z, 1]. Let M be a matrix with elements m(row, column), so that m(2, 3) is the element in row 2 column 3 of M.

Multiplication is of the form VM and has the resulting Vector4 VM = [xm(0, 0) + ym(1, 0) + zm(2, 0) + m(3, 0), xm(0, 1) + ym(1, 1) + zm(2, 1) + m(3, 1), xm(0, 2) + ym(1, 2) + zm(2, 2) + m(3, 2), xm(0, 3) + ym(1, 3) + zm(2, 3) + m(3, 3)]. On the web you will find many examples that use the opposite convention of MV, in which case to make use of the examples you will need to transpose the matrix.

Example Playground - Overview Linear Algebra - https://playground.babylonjs.com/#AV9X17 Example Playground - Overview Transformation - https://playground.babylonjs.com/#AV9X17#1 Example Playground - Overview Projection - https://playground.babylonjs.com/#AV9X17#2

• Matrix

## Constructors

• Creates an empty matrix (filled with zeros)

## Properties

updateFlag: number

Gets the update flag of the matrix which is an unique number for the matrix. It will be incremented every time the matrix data change. You can use it to speed the comparison between two versions of the same matrix.

## Accessors

• Gets the internal data of the matrix

#### Returns DeepImmutableArray<number> | DeepImmutableObject<Float32Array>

• Gets an identity matrix that must not be updated

#### Returns DeepImmutableObject<Matrix>

• get Use64Bits(): boolean
• Gets the precision of matrix computations

## Methods

• Adds the current matrix with a second one Example Playground - https://playground.babylonjs.com/#AV9X17#44

#### Returns Matrix

a new matrix as the addition of the current matrix and the given one

• addAtIndex(index: number, value: number): Matrix
• add a value at the specified position in the current Matrix Example Playground - https://playground.babylonjs.com/#AV9X17#47

#### Parameters

• ##### index: number

the index of the value within the matrix. between 0 and 15.

#### Returns Matrix

the current updated matrix

• Sets the given matrix "result" to the addition of the current matrix and the given one Example Playground - https://playground.babylonjs.com/#AV9X17#45

#### Parameters

• ##### result: T

defines the target matrix

#### Returns T

result input

• Adds in place the given matrix to the current matrix Example Playground - https://playground.babylonjs.com/#AV9X17#46

#### Parameters

• ##### other: DeepImmutableObject<Matrix>

defines the second operand

#### Returns Matrix

the current updated matrix

• addTranslationFromFloats(x: number, y: number, z: number): Matrix
• Adds the translation vector (using 3 floats) in the current matrix Example Playground - https://playground.babylonjs.com/#AV9X17#20 Example Playground - https://playground.babylonjs.com/#AV9X17#48

#### Parameters

• ##### x: number

defines the 1st component of the translation

• ##### y: number

defines the 2nd component of the translation

• ##### z: number

defines the 3rd component of the translation

#### Returns Matrix

the current updated matrix

Returns the matrix as a Float32Array or Array Example Playground - https://playground.babylonjs.com/#AV9X17#114

#### Returns DeepImmutableArray<number> | DeepImmutableObject<Float32Array>

the matrix underlying array.

• Copy the current matrix from the given one Example Playground - https://playground.babylonjs.com/#AV9X17#21

#### Parameters

• ##### other: DeepImmutableObject<Matrix>

defines the source matrix

#### Returns Matrix

the current updated matrix

• copyToArray(array: number[] | Float32Array, offset?: number): Matrix
• Populates the given array from the starting index with the current matrix values

#### Parameters

• ##### array: number[] | Float32Array

defines the target array

• ##### Optional offset: number

defines the offset in the target array where to start storing values

#### Returns Matrix

the current matrix

• Decomposes the current Matrix into a translation, rotation and scaling components Example Playground - https://playground.babylonjs.com/#AV9X17#12

#### Parameters

• ##### Optional scale: Vector3

defines the scale vector3 given as a reference to update

• ##### Optional rotation: Quaternion

defines the rotation quaternion given as a reference to update

• ##### Optional translation: Vector3

defines the translation vector3 given as a reference to update

• ##### Optional preserveScalingNode: TransformNode

Use scaling sign coming from this node. Otherwise scaling sign might change.

#### Returns boolean

true if operation was successful

• Decomposes the current Matrix into a translation, rotation and scaling components of the provided node Example Playground - https://playground.babylonjs.com/#AV9X17#13

#### Parameters

• ##### node: TransformNode

the node to decompose the matrix to

#### Returns boolean

true if operation was successful

• determinant(): number
• Check equality between this matrix and a second one

#### Parameters

• ##### value: DeepImmutableObject<Matrix>

defines the second matrix to compare

#### Returns boolean

true is the current matrix and the given one values are strictly equal

• getClassName(): string
• Returns the name of the current matrix class

#### Returns string

the string "Matrix"

• getHashCode(): number
• Gets the hash code of the current matrix

#### Returns number

the hash code

• Gets only rotation part of the current matrix

#### Returns Matrix

a new matrix sets to the extracted rotation matrix from the current one

• getRotationMatrixToRef<T>(result: T): T
• Extracts the rotation matrix from the current one and sets it as the given "result"

#### Parameters

• ##### result: T

defines the target matrix to store data to

#### Returns T

result input

• Gets specific row of the matrix Example Playground - https://playground.babylonjs.com/#AV9X17#36

#### Parameters

• ##### index: number

defines the number of the row to get

#### Returns Nullable<Vector4>

the index-th row of the current matrix as a new Vector4

• getRowToRef<T>(index: number, rowVector: T): T
• Gets specific row of the matrix to ref Example Playground - https://playground.babylonjs.com/#AV9X17#36

#### Parameters

• ##### index: number

defines the number of the row to get

• ##### rowVector: T

vector to store the index-th row of the current matrix

#### Returns T

result input

• Gets the translation value of the current matrix Example Playground - https://playground.babylonjs.com/#AV9X17#122

#### Returns Vector3

a new Vector3 as the extracted translation from the matrix

• getTranslationToRef<T>(result: T): T
• Fill a Vector3 with the extracted translation from the matrix Example Playground - https://playground.babylonjs.com/#AV9X17#123

#### Parameters

• ##### result: T

defines the Vector3 where to store the translation

#### Returns T

the current matrix

• invertToRef<T>(other: T): T
• Sets the given matrix to the current inverted Matrix Example Playground - https://playground.babylonjs.com/#AV9X17#119

#### Parameters

• ##### other: T

defines the target matrix

#### Returns T

result input

• isIdentity(): boolean
• Check if the current matrix is identity

#### Returns boolean

true is the matrix is the identity matrix

• isIdentityAs3x2(): boolean
• Check if the current matrix is identity as a texture matrix (3x2 store in 4x4)

#### Returns boolean

true is the matrix is the identity matrix

• markAsUpdated(): void
• Update the updateFlag to indicate that the matrix has been updated

#### Returns void

• Multiply two matrices Example Playground - https://playground.babylonjs.com/#AV9X17#15 A.multiply(B) means apply B to A so result is B x A

#### Parameters

• ##### other: DeepImmutableObject<Matrix>

defines the second operand

#### Returns Matrix

a new matrix set with the multiplication result of the current Matrix and the given one

• multiplyAtIndex(index: number, value: number): Matrix
• mutiply the specified position in the current Matrix by a value

#### Parameters

• ##### index: number

the index of the value within the matrix. between 0 and 15.

#### Returns Matrix

the current updated matrix

• Sets the Float32Array "result" from the given index "offset" with the multiplication of the current matrix and the given one

#### Parameters

• ##### other: DeepImmutableObject<Matrix>

defines the second operand

• ##### result: number[] | Float32Array

defines the array where to store the multiplication

• ##### offset: number

defines the offset in the target array where to start storing values

#### Returns Matrix

the current matrix

• Sets the given matrix "result" with the multiplication result of the current Matrix and the given one A.multiplyToRef(B, R) means apply B to A and store in R and R = B x A Example Playground - https://playground.babylonjs.com/#AV9X17#16

#### Parameters

• ##### other: DeepImmutableObject<Matrix>

defines the second operand

• ##### result: T

defines the matrix where to store the multiplication

#### Returns T

result input

• removeRotationAndScaling(): Matrix
• Remove rotation and scaling part from the matrix

#### Returns Matrix

the updated matrix

• Sets all the matrix elements to zero

#### Returns Matrix

the current matrix

• Compute a new matrix set with the current matrix values multiplied by scale (float)

#### Parameters

• ##### scale: number

defines the scale factor

#### Returns Matrix

a new matrix

• scaleAndAddToRef<T>(scale: number, result: T): T
• Scale the current matrix values by a factor and add the result to a given matrix

#### Parameters

• ##### scale: number

defines the scale factor

• ##### result: T

defines the Matrix to store the result

#### Returns T

result input

• scaleToRef<T>(scale: number, result: T): T
• Scale the current matrix values by a factor to a given result matrix

#### Parameters

• ##### scale: number

defines the scale factor

• ##### result: T

defines the matrix to store the result

#### Returns T

result input

• Sets the index-th row of the current matrix to the vector4 values Example Playground - https://playground.babylonjs.com/#AV9X17#36

#### Parameters

• ##### index: number

defines the number of the row to set

• ##### row: Vector4

defines the target vector4

#### Returns Matrix

the updated current matrix

• setRowFromFloats(index: number, x: number, y: number, z: number, w: number): Matrix
• Sets the index-th row of the current matrix with the given 4 x float values Example Playground - https://playground.babylonjs.com/#AV9X17#36

#### Parameters

• ##### index: number

defines the row index

• ##### x: number

defines the x component to set

• ##### y: number

defines the y component to set

• ##### z: number

defines the z component to set

• ##### w: number

defines the w component to set

#### Returns Matrix

the updated current matrix

• Inserts the translation vector in the current matrix Example Playground - https://playground.babylonjs.com/#AV9X17#121

#### Parameters

• ##### vector3: DeepImmutableObject<Vector3>

defines the translation to insert

#### Returns Matrix

the current updated matrix

• setTranslationFromFloats(x: number, y: number, z: number): Matrix
• Inserts the translation vector (using 3 floats) in the current matrix Example Playground - https://playground.babylonjs.com/#AV9X17#120

#### Parameters

• ##### x: number

defines the 1st component of the translation

• ##### y: number

defines the 2nd component of the translation

• ##### z: number

defines the 3rd component of the translation

#### Returns Matrix

the current updated matrix

Returns the matrix as a Float32Array or Array Example Playground - https://playground.babylonjs.com/#AV9X17#49

#### Returns DeepImmutableArray<number> | DeepImmutableObject<Float32Array>

the matrix underlying array

• toNormalMatrix<T>(ref: T): T
• Writes to the given matrix a normal matrix, computed from this one (using values from identity matrix for fourth row and column). Example Playground - https://playground.babylonjs.com/#AV9X17#17

#### Parameters

• ##### ref: T

matrix to store the result

#### Returns T

• toggleModelMatrixHandInPlace(): Matrix
• Toggles model matrix from being right handed to left handed in place and vice versa

#### Returns Matrix

• toggleProjectionMatrixHandInPlace(): Matrix
• Toggles projection matrix from being right handed to left handed in place and vice versa

#### Returns Matrix

• transposeToRef<T>(result: T): T
• Compute the transpose of the matrix and store it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#41

#### Parameters

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a new matrix composed by merging scale (vector3), rotation (quaternion) and translation (vector3) Example Playground - https://playground.babylonjs.com/#AV9X17#24

#### Parameters

• ##### scale: DeepImmutableObject<Vector3>

defines the scale vector3

• ##### rotation: DeepImmutableObject<Quaternion>

defines the rotation quaternion

• ##### translation: DeepImmutableObject<Vector3>

defines the translation vector3

#### Returns Matrix

a new matrix

• Sets a matrix to a value composed by merging scale (vector3), rotation (quaternion) and translation (vector3) Example Playground - https://playground.babylonjs.com/#AV9X17#25

#### Parameters

• ##### scale: DeepImmutableObject<Vector3>

defines the scale vector3

• ##### rotation: DeepImmutableObject<Quaternion>

defines the rotation quaternion

• ##### translation: DeepImmutableObject<Vector3>

defines the translation vector3

• ##### result: T

defines the target matrix

#### Returns T

result input

• Builds a new matrix whose values are computed by:

• decomposing the the "startValue" and "endValue" matrices into their respective scale, rotation and translation matrices
• interpolating for "gradient" (float) the values between each of these decomposed matrices between the start and the end
• recomposing a new matrix from these 3 interpolated scale, rotation and translation matrices Example Playground - https://playground.babylonjs.com/#AV9X17#22 Example Playground - https://playground.babylonjs.com/#AV9X17#51

#### Parameters

• ##### startValue: DeepImmutable<T>

defines the first matrix

• ##### endValue: DeepImmutableObject<Matrix>

defines the second matrix

defines the gradient between the two matrices

#### Returns T

the new matrix

• Update a matrix to values which are computed by:

• decomposing the the "startValue" and "endValue" matrices into their respective scale, rotation and translation matrices
• interpolating for "gradient" (float) the values between each of these decomposed matrices between the start and the end
• recomposing a new matrix from these 3 interpolated scale, rotation and translation matrices Example Playground - https://playground.babylonjs.com/#AV9X17#23 Example Playground - https://playground.babylonjs.com/#AV9X17#53

#### Parameters

• ##### startValue: DeepImmutableObject<Matrix>

defines the first matrix

• ##### endValue: DeepImmutableObject<Matrix>

defines the second matrix

defines the gradient between the two matrices

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a matrix from an array Example Playground - https://playground.babylonjs.com/#AV9X17#42

#### Parameters

• ##### array: DeepImmutableObject<ArrayLike<number>>

defines the source array

• ##### Optional offset: number

defines an offset in the source array

#### Returns Matrix

a new Matrix set from the starting index of the given array

• Copy the content of an array into a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#43

#### Parameters

• ##### array: DeepImmutableObject<ArrayLike<number>>

defines the source array

• ##### offset: number

defines an offset in the source array

• ##### result: T

defines the target matrix

#### Returns T

result input

• FromFloat32ArrayToRefScaled<T>(array: DeepImmutableArray<number> | DeepImmutableObject<Float32Array>, offset: number, scale: number, result: T): T
• Stores an array into a matrix after having multiplied each component by a given factor Example Playground - https://playground.babylonjs.com/#AV9X17#50

#### Parameters

• ##### array: DeepImmutableArray<number> | DeepImmutableObject<Float32Array>

defines the source array

• ##### offset: number

defines the offset in the source array

• ##### scale: number

defines the scaling factor

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a rotation matrix from a quaternion and stores it in a target matrix

#### Parameters

• ##### quat: DeepImmutableObject<Quaternion>

defines the quaternion to use

• ##### result: T

defines the target matrix

#### Returns T

result input

• FromValues(initialM11: number, initialM12: number, initialM13: number, initialM14: number, initialM21: number, initialM22: number, initialM23: number, initialM24: number, initialM31: number, initialM32: number, initialM33: number, initialM34: number, initialM41: number, initialM42: number, initialM43: number, initialM44: number): Matrix
• Creates new matrix from a list of values (16)

#### Parameters

• ##### initialM11: number

defines 1st value of 1st row

• ##### initialM12: number

defines 2nd value of 1st row

• ##### initialM13: number

defines 3rd value of 1st row

• ##### initialM14: number

defines 4th value of 1st row

• ##### initialM21: number

defines 1st value of 2nd row

• ##### initialM22: number

defines 2nd value of 2nd row

• ##### initialM23: number

defines 3rd value of 2nd row

• ##### initialM24: number

defines 4th value of 2nd row

• ##### initialM31: number

defines 1st value of 3rd row

• ##### initialM32: number

defines 2nd value of 3rd row

• ##### initialM33: number

defines 3rd value of 3rd row

• ##### initialM34: number

defines 4th value of 3rd row

• ##### initialM41: number

defines 1st value of 4th row

• ##### initialM42: number

defines 2nd value of 4th row

• ##### initialM43: number

defines 3rd value of 4th row

• ##### initialM44: number

defines 4th value of 4th row

#### Returns Matrix

the new matrix

• FromValuesToRef(initialM11: number, initialM12: number, initialM13: number, initialM14: number, initialM21: number, initialM22: number, initialM23: number, initialM24: number, initialM31: number, initialM32: number, initialM33: number, initialM34: number, initialM41: number, initialM42: number, initialM43: number, initialM44: number, result: Matrix): void
• Stores a list of values (16) inside a given matrix

#### Parameters

• ##### initialM11: number

defines 1st value of 1st row

• ##### initialM12: number

defines 2nd value of 1st row

• ##### initialM13: number

defines 3rd value of 1st row

• ##### initialM14: number

defines 4th value of 1st row

• ##### initialM21: number

defines 1st value of 2nd row

• ##### initialM22: number

defines 2nd value of 2nd row

• ##### initialM23: number

defines 3rd value of 2nd row

• ##### initialM24: number

defines 4th value of 2nd row

• ##### initialM31: number

defines 1st value of 3rd row

• ##### initialM32: number

defines 2nd value of 3rd row

• ##### initialM33: number

defines 3rd value of 3rd row

• ##### initialM34: number

defines 4th value of 3rd row

• ##### initialM41: number

defines 1st value of 4th row

• ##### initialM42: number

defines 2nd value of 4th row

• ##### initialM43: number

defines 3rd value of 4th row

• ##### initialM44: number

defines 4th value of 4th row

• ##### result: Matrix

defines the target matrix

#### Returns void

result input

• Sets the given matrix as a rotation matrix composed from the 3 left handed axes

#### Parameters

• ##### xaxis: DeepImmutableObject<Vector3>

defines the value of the 1st axis

• ##### yaxis: DeepImmutableObject<Vector3>

defines the value of the 2nd axis

• ##### zaxis: DeepImmutableObject<Vector3>

defines the value of the 3rd axis

• ##### result: T

defines the target matrix

#### Returns T

result input

• Extracts a 2x2 matrix from a given matrix and store the result in a Float32Array

#### Parameters

• ##### matrix: DeepImmutableObject<Matrix>

defines the matrix to use

#### Returns number[] | Float32Array

a new Float32Array array with 4 elements : the 2x2 matrix extracted from the given matrix

• Extracts a 3x3 matrix from a given matrix and store the result in a Float32Array

#### Parameters

• ##### matrix: DeepImmutableObject<Matrix>

defines the matrix to use

#### Returns number[] | Float32Array

a new Float32Array array with 9 elements : the 3x3 matrix extracted from the given matrix

• Computes a complete transformation matrix Example Playground - https://playground.babylonjs.com/#AV9X17#113

#### Parameters

• ##### viewport: DeepImmutableObject<Viewport>

defines the viewport to use

• ##### world: DeepImmutable<T>

defines the world matrix

• ##### view: DeepImmutableObject<Matrix>

defines the view matrix

• ##### projection: DeepImmutableObject<Matrix>

defines the projection matrix

• ##### zmin: number

defines the near clip plane

• ##### zmax: number

defines the far clip plane

#### Returns T

the transformation matrix

• Creates a new identity matrix

#### Returns Matrix

a new identity matrix

• IdentityToRef<T>(result: T): T
• Creates a new identity matrix and stores the result in a given matrix

#### Parameters

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a new matrix as the invert of a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#124

#### Parameters

• ##### source: DeepImmutable<T>

defines the source matrix

#### Returns T

the new matrix

• Returns a new Matrix whose values are the interpolated values for "gradient" (float) between the ones of the matrices "startValue" and "endValue". Example Playground - https://playground.babylonjs.com/#AV9X17#55

#### Parameters

• ##### startValue: DeepImmutable<T>

defines the start value

• ##### endValue: DeepImmutableObject<Matrix>

defines the end value

#### Returns T

the new matrix

• Set the given matrix "result" as the interpolated values for "gradient" (float) between the ones of the matrices "startValue" and "endValue". Example Playground - https://playground.babylonjs.com/#AV9X17#54

#### Parameters

• ##### startValue: DeepImmutableObject<Matrix>

defines the start value

• ##### endValue: DeepImmutableObject<Matrix>

defines the end value

• ##### result: T

defines the Matrix object where to store data

#### Returns T

result input

• Creates a new matrix that transforms vertices from world space to camera space. It takes three vectors as arguments that together describe the position and orientation of the camera. This function generates a matrix suitable for a left handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#58 Example Playground - https://playground.babylonjs.com/#AV9X17#59

#### Parameters

• ##### eye: DeepImmutableObject<Vector3>

defines the final position of the entity

• ##### target: DeepImmutableObject<Vector3>

defines where the entity should look at

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity

#### Returns Matrix

the new matrix

• Sets the given "result" Matrix to a matrix that transforms vertices from world space to camera space. It takes three vectors as arguments that together describe the position and orientation of the camera. This function generates a matrix suitable for a left handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#60 Example Playground - https://playground.babylonjs.com/#AV9X17#61

#### Parameters

• ##### eye: DeepImmutableObject<Vector3>

defines the final position of the entity

• ##### target: DeepImmutableObject<Vector3>

defines where the entity should look at

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity

• ##### result: Matrix

defines the target matrix

#### Returns void

result input

• Creates a new matrix that transforms vertices from world space to camera space. It takes three vectors as arguments that together describe the position and orientation of the camera. This function generates a matrix suitable for a right handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#62 Example Playground - https://playground.babylonjs.com/#AV9X17#63

#### Parameters

• ##### eye: DeepImmutableObject<Vector3>

defines the final position of the entity

• ##### target: DeepImmutableObject<Vector3>

defines where the entity should look at

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity

#### Returns Matrix

the new matrix

• Sets the given "result" Matrix to a matrix that transforms vertices from world space to camera space. It takes three vectors as arguments that together describe the position and orientation of the camera. This function generates a matrix suitable for a right handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#64 Example Playground - https://playground.babylonjs.com/#AV9X17#65

#### Parameters

• ##### eye: DeepImmutableObject<Vector3>

defines the final position of the entity

• ##### target: DeepImmutableObject<Vector3>

defines where the entity should look at

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a new matrix that transforms vertices from world space to camera space. It takes two vectors as arguments that together describe the orientation of the camera. The position is assumed to be at the origin (0,0,0) This function generates a matrix suitable for a left handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#66

#### Parameters

• ##### forward: DeepImmutableObject<Vector3>

defines the forward direction - Must be normalized and orthogonal to up.

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity - Must be normalized and orthogonal to forward.

#### Returns Matrix

the new matrix

• Sets the given "result" Matrix to a matrix that transforms vertices from world space to camera space. It takes two vectors as arguments that together describe the orientation of the camera. The position is assumed to be at the origin (0,0,0) This function generates a matrix suitable for a left handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#67

#### Parameters

• ##### forward: DeepImmutableObject<Vector3>

defines the forward direction - Must be normalized and orthogonal to up.

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity - Must be normalized and orthogonal to forward.

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a new matrix that transforms vertices from world space to camera space. It takes two vectors as arguments that together describe the orientation of the camera. The position is assumed to be at the origin (0,0,0) This function generates a matrix suitable for a right handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#68

#### Parameters

• ##### forward: DeepImmutableObject<Vector3>

defines the forward direction - Must be normalized and orthogonal to up.

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity - Must be normalized and orthogonal to forward.

#### Returns Matrix

the new matrix

• Sets the given "result" Matrix to a matrix that transforms vertices from world space to camera space. It takes two vectors as arguments that together describe the orientation of the camera. The position is assumed to be at the origin (0,0,0) This function generates a matrix suitable for a right handed coordinate system Example Playground - https://playground.babylonjs.com/#AV9X17#69

#### Parameters

• ##### forward: DeepImmutableObject<Vector3>

defines the forward direction - Must be normalized and orthogonal to up.

• ##### up: DeepImmutableObject<Vector3>

defines the up vector for the entity - Must be normalized and orthogonal to forward.

• ##### result: T

defines the target matrix

#### Returns T

result input

• OrthoLH(width: number, height: number, znear: number, zfar: number, halfZRange?: boolean): Matrix
• Create a left-handed orthographic projection matrix Example Playground - https://playground.babylonjs.com/#AV9X17#70

#### Parameters

• ##### width: number

defines the viewport width

• ##### height: number

defines the viewport height

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

#### Returns Matrix

a new matrix as a left-handed orthographic projection matrix

• OrthoLHToRef<T>(width: number, height: number, znear: number, zfar: number, result: T, halfZRange?: boolean): T
• Store a left-handed orthographic projection to a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#71

#### Parameters

• ##### width: number

defines the viewport width

• ##### height: number

defines the viewport height

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### result: T

defines the target matrix

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

#### Returns T

result input

• OrthoOffCenterLH(left: number, right: number, bottom: number, top: number, znear: number, zfar: number, halfZRange?: boolean): Matrix
• Create a left-handed orthographic projection matrix Example Playground - https://playground.babylonjs.com/#AV9X17#72

#### Parameters

• ##### left: number

defines the viewport left coordinate

• ##### right: number

defines the viewport right coordinate

• ##### bottom: number

defines the viewport bottom coordinate

• ##### top: number

defines the viewport top coordinate

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

#### Returns Matrix

a new matrix as a left-handed orthographic projection matrix

• OrthoOffCenterLHToRef<T>(left: number, right: number, bottom: number, top: number, znear: number, zfar: number, result: T, halfZRange?: boolean): T
• Stores a left-handed orthographic projection into a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#73

#### Parameters

• ##### left: number

defines the viewport left coordinate

• ##### right: number

defines the viewport right coordinate

• ##### bottom: number

defines the viewport bottom coordinate

• ##### top: number

defines the viewport top coordinate

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### result: T

defines the target matrix

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

#### Returns T

result input

• OrthoOffCenterRH(left: number, right: number, bottom: number, top: number, znear: number, zfar: number, halfZRange?: boolean): Matrix
• Creates a right-handed orthographic projection matrix Example Playground - https://playground.babylonjs.com/#AV9X17#76

#### Parameters

• ##### left: number

defines the viewport left coordinate

• ##### right: number

defines the viewport right coordinate

• ##### bottom: number

defines the viewport bottom coordinate

• ##### top: number

defines the viewport top coordinate

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

#### Returns Matrix

a new matrix as a right-handed orthographic projection matrix

• OrthoOffCenterRHToRef<T>(left: number, right: number, bottom: number, top: number, znear: number, zfar: number, result: T, halfZRange?: boolean): T
• Stores a right-handed orthographic projection into a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#77

#### Parameters

• ##### left: number

defines the viewport left coordinate

• ##### right: number

defines the viewport right coordinate

• ##### bottom: number

defines the viewport bottom coordinate

• ##### top: number

defines the viewport top coordinate

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### result: T

defines the target matrix

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

#### Returns T

result input

• PerspectiveFovLH(fov: number, aspect: number, znear: number, zfar: number, halfZRange?: boolean, projectionPlaneTilt?: number, reverseDepthBufferMode?: boolean): Matrix
• Creates a left-handed perspective projection matrix Example Playground - https://playground.babylonjs.com/#AV9X17#78

#### Parameters

• ##### fov: number

defines the horizontal field of view

• ##### aspect: number

defines the aspect ratio

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane. If 0, assume we are in "infinite zfar" mode

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

• ##### Optional reverseDepthBufferMode: boolean

true to indicate that we are in a reverse depth buffer mode (meaning znear and zfar have been inverted when calling the function)

#### Returns Matrix

a new matrix as a left-handed perspective projection matrix

• PerspectiveFovLHToRef<T>(fov: number, aspect: number, znear: number, zfar: number, result: T, isVerticalFovFixed?: boolean, halfZRange?: boolean, projectionPlaneTilt?: number, reverseDepthBufferMode?: boolean): T
• Stores a left-handed perspective projection into a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#81

#### Parameters

• ##### fov: number

defines the horizontal field of view

• ##### aspect: number

defines the aspect ratio

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane. If 0, assume we are in "infinite zfar" mode

• ##### result: T

defines the target matrix

• ##### Optional isVerticalFovFixed: boolean

defines it the fov is vertically fixed (default) or horizontally

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

• ##### Optional reverseDepthBufferMode: boolean

true to indicate that we are in a reverse depth buffer mode (meaning znear and zfar have been inverted when calling the function)

#### Returns T

result input

• PerspectiveFovRH(fov: number, aspect: number, znear: number, zfar: number, halfZRange?: boolean, projectionPlaneTilt?: number, reverseDepthBufferMode?: boolean): Matrix
• Creates a right-handed perspective projection matrix Example Playground - https://playground.babylonjs.com/#AV9X17#83

#### Parameters

• ##### fov: number

defines the horizontal field of view

• ##### aspect: number

defines the aspect ratio

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane. If 0, assume we are in "infinite zfar" mode

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

• ##### Optional reverseDepthBufferMode: boolean

true to indicate that we are in a reverse depth buffer mode (meaning znear and zfar have been inverted when calling the function)

#### Returns Matrix

a new matrix as a right-handed perspective projection matrix

• PerspectiveFovRHToRef<T>(fov: number, aspect: number, znear: number, zfar: number, result: T, isVerticalFovFixed?: boolean, halfZRange?: boolean, projectionPlaneTilt?: number, reverseDepthBufferMode?: boolean): T
• Stores a right-handed perspective projection into a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#84

#### Parameters

• ##### fov: number

defines the horizontal field of view

• ##### aspect: number

defines the aspect ratio

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane. If 0, assume we are in "infinite zfar" mode

• ##### result: T

defines the target matrix

• ##### Optional isVerticalFovFixed: boolean

defines it the fov is vertically fixed (default) or horizontally

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

• ##### Optional reverseDepthBufferMode: boolean

true to indicate that we are in a reverse depth buffer mode (meaning znear and zfar have been inverted when calling the function)

#### Returns T

result input

• PerspectiveFovReverseLHToRef<T>(fov: number, aspect: number, znear: number, zfar: number, result: T, isVerticalFovFixed?: boolean, halfZRange?: boolean, projectionPlaneTilt?: number): T
• Stores a left-handed perspective projection into a given matrix with depth reversed Example Playground - https://playground.babylonjs.com/#AV9X17#89

#### Parameters

• ##### fov: number

defines the horizontal field of view

• ##### aspect: number

defines the aspect ratio

• ##### znear: number

defines the near clip plane

• ##### zfar: number

not used as infinity is used as far clip

• ##### result: T

defines the target matrix

• ##### Optional isVerticalFovFixed: boolean

defines it the fov is vertically fixed (default) or horizontally

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

#### Returns T

result input

• PerspectiveFovReverseRHToRef<T>(fov: number, aspect: number, znear: number, zfar: number, result: T, isVerticalFovFixed?: boolean, halfZRange?: boolean, projectionPlaneTilt?: number): T
• Stores a right-handed perspective projection into a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#90

#### Parameters

• ##### fov: number

defines the horizontal field of view

• ##### aspect: number

defines the aspect ratio

• ##### znear: number

defines the near clip plane

• ##### zfar: number

not used as infinity is used as far clip

• ##### result: T

defines the target matrix

• ##### Optional isVerticalFovFixed: boolean

defines it the fov is vertically fixed (default) or horizontally

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

#### Returns T

result input

• PerspectiveFovWebVRToRef<T>(fov: { downDegrees: number; leftDegrees: number; rightDegrees: number; upDegrees: number }, znear: number, zfar: number, result: T, rightHanded?: boolean, halfZRange?: boolean, projectionPlaneTilt?: number): T
• Stores a perspective projection for WebVR info a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#92

#### Parameters

• ##### fov: { downDegrees: number; leftDegrees: number; rightDegrees: number; upDegrees: number }

defines the field of view

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### result: T

defines the target matrix

• ##### Optional rightHanded: boolean

defines if the matrix must be in right-handed mode (false by default)

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

#### Returns T

result input

• PerspectiveLH(width: number, height: number, znear: number, zfar: number, halfZRange?: boolean, projectionPlaneTilt?: number): Matrix
• Creates a left-handed perspective projection matrix Example Playground - https://playground.babylonjs.com/#AV9X17#85

#### Parameters

• ##### width: number

defines the viewport width

• ##### height: number

defines the viewport height

• ##### znear: number

defines the near clip plane

• ##### zfar: number

defines the far clip plane

• ##### Optional halfZRange: boolean

true to generate NDC coordinates between 0 and 1 instead of -1 and 1 (default: false)

• ##### Optional projectionPlaneTilt: number

optional tilt angle of the projection plane around the X axis (horizontal)

#### Returns Matrix

a new matrix as a left-handed perspective projection matrix

• Computes a reflection matrix from a plane Example Playground - https://playground.babylonjs.com/#AV9X17#87

#### Parameters

• ##### plane: DeepImmutableObject<IPlaneLike>

defines the reflection plane

#### Returns Matrix

a new matrix

• Computes a reflection matrix from a plane Example Playground - https://playground.babylonjs.com/#AV9X17#88

#### Parameters

• ##### plane: DeepImmutableObject<IPlaneLike>

defines the reflection plane

• ##### result: T

defines the target matrix

#### Returns T

result input

• Takes normalised vectors and returns a rotation matrix to align "from" with "to". Taken from http://www.iquilezles.org/www/articles/noacos/noacos.htm Example Playground - https://playground.babylonjs.com/#AV9X17#93

#### Parameters

• ##### from: DeepImmutableObject<Vector3>

defines the vector to align

• ##### to: DeepImmutableObject<Vector3>

defines the vector to align to

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a new rotation matrix for "angle" radians around the given axis Example Playground - https://playground.babylonjs.com/#AV9X17#96

#### Parameters

• ##### axis: DeepImmutableObject<Vector3>

defines the axis to use

• ##### angle: number

defines the angle (in radians) to use

#### Returns Matrix

the new matrix

• Creates a new rotation matrix for "angle" radians around the given axis and stores it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#94

#### Parameters

• ##### axis: DeepImmutableObject<Vector3>

defines the axis to use

• ##### angle: number

defines the angle (in radians) to use

• ##### result: T

defines the target matrix

#### Returns T

result input

• RotationX(angle: number): Matrix
• Creates a new rotation matrix for "angle" radians around the X axis Example Playground - https://playground.babylonjs.com/#AV9X17#97

#### Parameters

• ##### angle: number

defines the angle (in radians) to use

#### Returns Matrix

the new matrix

• RotationXToRef<T>(angle: number, result: T): T
• Creates a new rotation matrix for "angle" radians around the X axis and stores it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#98

#### Parameters

• ##### angle: number

defines the angle (in radians) to use

• ##### result: T

defines the target matrix

#### Returns T

result input

• RotationY(angle: number): Matrix
• Creates a new rotation matrix for "angle" radians around the Y axis Example Playground - https://playground.babylonjs.com/#AV9X17#99

#### Parameters

• ##### angle: number

defines the angle (in radians) to use

#### Returns Matrix

the new matrix

• RotationYToRef<T>(angle: number, result: T): T
• Creates a new rotation matrix for "angle" radians around the Y axis and stores it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#100

#### Parameters

• ##### angle: number

defines the angle (in radians) to use

• ##### result: T

defines the target matrix

#### Returns T

result input

• RotationYawPitchRoll(yaw: number, pitch: number, roll: number): Matrix
• Creates a rotation matrix Example Playground - https://playground.babylonjs.com/#AV9X17#103 Example Playground - https://playground.babylonjs.com/#AV9X17#105

#### Parameters

• ##### yaw: number

defines the yaw angle in radians (Y axis)

• ##### pitch: number

defines the pitch angle in radians (X axis)

• ##### roll: number

defines the roll angle in radians (Z axis)

#### Returns Matrix

the new rotation matrix

• RotationYawPitchRollToRef<T>(yaw: number, pitch: number, roll: number, result: T): T
• Creates a rotation matrix and stores it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#104

#### Parameters

• ##### yaw: number

defines the yaw angle in radians (Y axis)

• ##### pitch: number

defines the pitch angle in radians (X axis)

• ##### roll: number

defines the roll angle in radians (Z axis)

• ##### result: T

defines the target matrix

#### Returns T

result input

• RotationZ(angle: number): Matrix
• Creates a new rotation matrix for "angle" radians around the Z axis Example Playground - https://playground.babylonjs.com/#AV9X17#101

#### Parameters

• ##### angle: number

defines the angle (in radians) to use

#### Returns Matrix

the new matrix

• RotationZToRef<T>(angle: number, result: T): T
• Creates a new rotation matrix for "angle" radians around the Z axis and stores it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#102

#### Parameters

• ##### angle: number

defines the angle (in radians) to use

• ##### result: T

defines the target matrix

#### Returns T

result input

• Scaling(x: number, y: number, z: number): Matrix
• Creates a scaling matrix Example Playground - https://playground.babylonjs.com/#AV9X17#107

#### Parameters

• ##### x: number

defines the scale factor on X axis

• ##### y: number

defines the scale factor on Y axis

• ##### z: number

defines the scale factor on Z axis

#### Returns Matrix

the new matrix

• ScalingToRef<T>(x: number, y: number, z: number, result: T): T
• Creates a scaling matrix and stores it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#108

#### Parameters

• ##### x: number

defines the scale factor on X axis

• ##### y: number

defines the scale factor on Y axis

• ##### z: number

defines the scale factor on Z axis

• ##### result: T

defines the target matrix

#### Returns T

result input

• Translation(x: number, y: number, z: number): Matrix
• Creates a translation matrix Example Playground - https://playground.babylonjs.com/#AV9X17#109

#### Parameters

• ##### x: number

defines the translation on X axis

• ##### y: number

defines the translation on Y axis

• ##### z: number

defines the translationon Z axis

#### Returns Matrix

the new matrix

• TranslationToRef<T>(x: number, y: number, z: number, result: T): T
• Creates a translation matrix and stores it in a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#110

#### Parameters

• ##### x: number

defines the translation on X axis

• ##### y: number

defines the translation on Y axis

• ##### z: number

defines the translationon Z axis

• ##### result: T

defines the target matrix

#### Returns T

result input

• Compute the transpose of a given matrix Example Playground - https://playground.babylonjs.com/#AV9X17#111

#### Parameters

• ##### matrix: DeepImmutable<T>

defines the matrix to transpose

#### Returns T

the new matrix

• Compute the transpose of a matrix and store it in a target matrix Example Playground - https://playground.babylonjs.com/#AV9X17#112

#### Parameters

• ##### matrix: DeepImmutableObject<Matrix>

defines the matrix to transpose

• ##### result: T

defines the target matrix

#### Returns T

result input

• Creates a new zero matrix

#### Returns Matrix

a new zero matrix

## Legend

• Constructor
• Property
• Method
• Inherited constructor
• Inherited property
• Inherited method
• Property
• Method
• Static method

Theme