# [name]

A 4x4 Matrix.

## Example

`// Simple rig for rotating around 3 axes var m = new THREE.Matrix4(); var m1 = new THREE.Matrix4(); var m2 = new THREE.Matrix4(); var m3 = new THREE.Matrix4(); var alpha = 0; var beta = Math.PI; var gamma = Math.PI/2; m1.makeRotationX( alpha ); m2.makeRotationY( beta ); m3.makeRotationZ( gamma ); m.multiplyMatrices( m1, m2 ); m.multiply( m3 );`

## Constructor

### [name]()

Creates and initializes the matrix to the identity matrix.

## Properties

### [property:Float32Array elements]

A column-major list of matrix values.

## Methods

### [method:Matrix4 set]( [page:Float n11], [page:Float n12], [page:Float n13], [page:Float n14], [page:Float n21], [page:Float n22], [page:Float n23], [page:Float n24], [page:Float n31], [page:Float n32], [page:Float n33], [page:Float n34], [page:Float n41], [page:Float n42], [page:Float n43], [page:Float n44] ) [page:Matrix4 this]

Sets all fields of this matrix to the supplied row-major values n11..n44.

### [method:Matrix4 identity]() [page:Matrix4 this]

Resets this matrix to identity.

### [method:Matrix4 copy]( [page:Matrix4 m] ) [page:Matrix4 this]

Copies the values of matrix *m* into this matrix.

### [method:Matrix4 fromArray]( [page:Array array] ) [page:Matrix4 this]

array -- [page:Array] The array to read the elements from.
Sets the elements of this matrix based on an array in column-major format.

### [method:Matrix4 copyPosition]( [page:Matrix4 m] ) [page:Matrix4 this]

Copies the translation component of the supplied matrix *m* into this matrix translation component.

### [method:Matrix4 makeBasis]( [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] ) [page:Matrix4 this]

Creates the basis matrix consisting of the three provided axis vectors. Returns the current matrix.

### [method:Matrix4 extractBasis]( [page:Vector3 xAxis], [page:Vector3 yAxis], [page:Vector3 zAxis] ) [page:Matrix4 this]

Extracts basis of into the three axis vectors provided. Returns the current matrix.

### [method:Matrix4 extractRotation]( [page:Matrix4 m] ) [page:Matrix4 this]

Extracts the rotation of the supplied matrix *m* into this matrix rotation component.

### [method:Matrix4 lookAt]( [page:Vector3 eye], [page:Vector3 center], [page:Vector3 up], ) [page:Matrix4 this]

Constructs a rotation matrix, looking from *eye* towards *center* with defined *up* vector.

### [method:Matrix4 multiply]( [page:Matrix4 m] ) [page:Matrix4 this]

Post-multiplies this matrix by *m*.

### [method:Matrix4 premultiply]( [page:Matrix4 m] ) [page:Matrix4 this]

Pre-multiplies this matrix by *m*.

### [method:Matrix4 multiplyMatrices]( [page:Matrix4 a], [page:Matrix4 b] ) [page:Matrix4 this]

Sets this matrix to *a x b*.

### [method:Matrix4 multiplyToArray]( [page:Matrix4 a], [page:Matrix4 b], [page:Array r] ) [page:Matrix4 this]

Sets this matrix to *a x b* and stores the result into the flat array *r*.
*r* can be either a regular Array or a TypedArray.

### [method:Matrix4 multiplyScalar]( [page:Float s] ) [page:Matrix4 this]

Multiplies every component of the matrix by a scalar value *s*.

### [method:Float determinant]() [page:Matrix4 this]

Computes and returns the determinant of this matrix.
Based on [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm]

### [method:Matrix4 transpose]() [page:Matrix4 this]

Transposes this matrix.

### [method:Matrix4 setPosition]( [page:Vector3 v] ) [page:Matrix4 this]

Sets the position component for this matrix from vector *v*.

### [method:Matrix4 getInverse]( [page:Matrix4 m] ) [page:Matrix4 this]

Sets this matrix to the inverse of matrix *m*.
Based on [link:http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm].

### [method:Matrix4 makeRotationFromEuler]( [page:Euler euler] ) [page:Matrix4 this]

euler — Rotation vector followed by order of rotations, e.g., "XYZ".
Sets the rotation submatrix of this matrix to the rotation specified by Euler angles, the rest of the matrix is identity.
Default order is *"XYZ"*.

### [method:Matrix4 makeRotationFromQuaternion]( [page:Quaternion q] ) [page:Matrix4 this]

Sets the rotation submatrix of this matrix to the rotation specified by *q*. The rest of the matrix is identity.

### [method:Matrix4 scale]( [page:Vector3 v] ) [page:Matrix4 this]

Multiplies the columns of this matrix by vector *v*.

### [method:Matrix4 compose]( [page:Vector3 translation], [page:Quaternion quaternion], [page:Vector3 scale] ) [page:Matrix4 this]

Sets this matrix to the transformation composed of *translation*, *quaternion* and *scale*.

### [method:null decompose]( [page:Vector3 translation], [page:Quaternion quaternion], [page:Vector3 scale] ) [page:Matrix4 this]

Decomposes this matrix into the *translation*, *quaternion* and *scale* components.

### [method:Matrix4 makeTranslation]( [page:Float x], [page:Float y], [page:Float z] ) [page:Matrix4 this]

Sets this matrix as translation transform.

### [method:Matrix4 makeRotationX]( [page:Float theta] ) [page:Matrix4 this]

theta — Rotation angle in radians.
Sets this matrix as rotation transform around x axis by *theta* radians.

### [method:Matrix4 makeRotationY]( [page:Float theta] ) [page:Matrix4 this]

theta — Rotation angle in radians.
Sets this matrix as rotation transform around y axis by *theta* radians.

### [method:Matrix4 makeRotationZ]( [page:Float theta] ) [page:Matrix4 this]

theta — Rotation angle in radians.
Sets this matrix as rotation transform around z axis by *theta* radians.

### [method:Matrix4 makeRotationAxis]( [page:Vector3 axis], [page:Float theta] ) [page:Matrix4 this]

axis — Rotation axis, should be normalized. theta — Rotation angle in radians.
Sets this matrix as rotation transform around *axis* by *angle* radians.
Based on [link:http://www.gamedev.net/reference/articles/article1199.asp].

### [method:Matrix4 makeScale]( [page:Float x], [page:Float y], [page:Float z] ) [page:Matrix4 this]

Sets this matrix as scale transform.

### [method:Matrix4 makeFrustum]( [page:Float left], [page:Float right], [page:Float bottom], [page:Float top], [page:Float near], [page:Float far] ) [page:Matrix4 this]

Creates a [page:Frustum frustum] matrix.

### [method:Matrix4 makePerspective]( [page:Float fov], [page:Float aspect], [page:Float near], [page:Float far] ) [page:Matrix4 this]

Creates a perspective projection matrix.

### [method:Matrix4 makeOrthographic]( [page:Float left], [page:Float right], [page:Float top], [page:Float bottom], [page:Float near], [page:Float far] ) [page:Matrix4 this]

Creates an orthographic projection matrix.

### [method:Array applyToVector3Array]( [page:Array a] ) [page:Matrix4 this]

array -- An array in the form [vector1x, vector1y, vector1z, vector2x, vector2y, vector2z, ...]
Multiplies (applies) this matrix to every vector3 in the array.

### [method:Float getMaxScaleOnAxis]() [page:Matrix4 this]

Gets the maximum scale value of the 3 axes.

### [method:Matrix4 clone]() [page:Matrix4 this]

Creates a copy of this matrix.

### [method:Array toArray]( [page:Array array], [page:Integer offset] ) [page:Matrix4 this]

array -- [page:Array] optional array to store the vector
offset -- [page:Integer] optional offset into the array
Writes the elements of this matrix to an array in column-major format.

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]