# Matrix4x4 Struct

## Definition

Represents a 4x4 matrix.

`public value class Matrix4x4 : IEquatable<System::Numerics::Matrix4x4>`

`public struct Matrix4x4 : IEquatable<System.Numerics.Matrix4x4>`

`type Matrix4x4 = struct`

```
Public Structure Matrix4x4
Implements IEquatable(Of Matrix4x4)
```

- Inheritance

- Implements

## Remarks

For matrix transformations, the Vector2, Vector3, and Vector4 instances are represented as rows: a vector *v* is transformed by a matrix *M* with *vM* multiplication.

## Constructors

Matrix4x4(Matrix3x2) |
Creates a Matrix4x4 object from a specified Matrix3x2 object. |

Matrix4x4(Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single) |
Creates a 4x4 matrix from the specified components. |

## Fields

M11 |
The first element of the first row. |

M12 |
The second element of the first row. |

M13 |
The third element of the first row. |

M14 |
The fourth element of the first row. |

M21 |
The first element of the second row. |

M22 |
The second element of the second row. |

M23 |
The third element of the second row. |

M24 |
The fourth element of the second row. |

M31 |
The first element of the third row. |

M32 |
The second element of the third row. |

M33 |
The third element of the third row. |

M34 |
The fourth element of the third row. |

M41 |
The first element of the fourth row. |

M42 |
The second element of the fourth row. |

M43 |
The third element of the fourth row. |

M44 |
The fourth element of the fourth row. |

## Properties

Identity |
Gets the multiplicative identity matrix. |

IsIdentity |
Indicates whether the current matrix is the identity matrix. |

Translation |
Gets or sets the translation component of this matrix. |

## Methods

Add(Matrix4x4, Matrix4x4) |
Adds each element in one matrix with its corresponding element in a second matrix. |

CreateBillboard(Vector3, Vector3, Vector3, Vector3) |
Creates a spherical billboard that rotates around a specified object position. |

CreateConstrainedBillboard(Vector3, Vector3, Vector3, Vector3, Vector3) |
Creates a cylindrical billboard that rotates around a specified axis. |

CreateFromAxisAngle(Vector3, Single) |
Creates a matrix that rotates around an arbitrary vector. |

CreateFromQuaternion(Quaternion) |
Creates a rotation matrix from the specified Quaternion rotation value. |

CreateFromYawPitchRoll(Single, Single, Single) |
Creates a rotation matrix from the specified yaw, pitch, and roll. |

CreateLookAt(Vector3, Vector3, Vector3) |
Creates a view matrix. |

CreateOrthographic(Single, Single, Single, Single) |
Creates an orthographic perspective matrix from the given view volume dimensions. |

CreateOrthographicOffCenter(Single, Single, Single, Single, Single, Single) |
Creates a customized orthographic projection matrix. |

CreatePerspective(Single, Single, Single, Single) |
Creates a perspective projection matrix from the given view volume dimensions. |

CreatePerspectiveFieldOfView(Single, Single, Single, Single) |
Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. |

CreatePerspectiveOffCenter(Single, Single, Single, Single, Single, Single) |
Creates a customized perspective projection matrix. |

CreateReflection(Plane) |
Creates a matrix that reflects the coordinate system about a specified plane. |

CreateRotationX(Single) |
Creates a matrix for rotating points around the X axis. |

CreateRotationX(Single, Vector3) |
Creates a matrix for rotating points around the X axis from a center point. |

CreateRotationY(Single) |
Creates a matrix for rotating points around the Y axis. |

CreateRotationY(Single, Vector3) |
The amount, in radians, by which to rotate around the Y axis from a center point. |

CreateRotationZ(Single) |
Creates a matrix for rotating points around the Z axis. |

CreateRotationZ(Single, Vector3) |
Creates a matrix for rotating points around the Z axis from a center point. |

CreateScale(Single) |
Creates a uniform scaling matrix that scale equally on each axis. |

CreateScale(Single, Single, Single) |
Creates a scaling matrix from the specified X, Y, and Z components. |

CreateScale(Single, Single, Single, Vector3) |
Creates a scaling matrix that is offset by a given center point. |

CreateScale(Single, Vector3) |
Creates a uniform scaling matrix that scales equally on each axis with a center point. |

CreateScale(Vector3) |
Creates a scaling matrix from the specified vector scale. |

CreateScale(Vector3, Vector3) |
Creates a scaling matrix with a center point. |

CreateShadow(Vector3, Plane) |
Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. |

CreateTranslation(Single, Single, Single) |
Creates a translation matrix from the specified X, Y, and Z components. |

CreateTranslation(Vector3) |
Creates a translation matrix from the specified 3-dimensional vector. |

CreateWorld(Vector3, Vector3, Vector3) |
Creates a world matrix with the specified parameters. |

Decompose(Matrix4x4, Vector3, Quaternion, Vector3) |
Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. |

Equals(Matrix4x4) |
Returns a value that indicates whether this instance and another 4x4 matrix are equal. |

Equals(Object) |
Returns a value that indicates whether this instance and a specified object are equal. |

GetDeterminant() |
Calculates the determinant of the current 4x4 matrix. |

GetHashCode() |
Returns the hash code for this instance. |

Invert(Matrix4x4, Matrix4x4) |
Inverts the specified matrix. The return value indicates whether the operation succeeded. |

Lerp(Matrix4x4, Matrix4x4, Single) |
Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. |

Multiply(Matrix4x4, Matrix4x4) |
Returns the matrix that results from multiplying two matrices together. |

Multiply(Matrix4x4, Single) |
Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. |

Negate(Matrix4x4) |
Negates the specified matrix by multiplying all its values by -1. |

Subtract(Matrix4x4, Matrix4x4) |
Subtracts each element in a second matrix from its corresponding element in a first matrix. |

ToString() |
Returns a string that represents this matrix. |

Transform(Matrix4x4, Quaternion) |
Transforms the specified matrix by applying the specified Quaternion rotation. |

Transpose(Matrix4x4) |
Transposes the rows and columns of a matrix. |

## Operators

Addition(Matrix4x4, Matrix4x4) |
Adds each element in one matrix with its corresponding element in a second matrix. |

Equality(Matrix4x4, Matrix4x4) |
Returns a value that indicates whether the specified matrices are equal. |

Inequality(Matrix4x4, Matrix4x4) |
Returns a value that indicates whether the specified matrices are not equal. |

Multiply(Matrix4x4, Matrix4x4) |
Returns the matrix that results from multiplying two matrices together. |

Multiply(Matrix4x4, Single) |
Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. |

Subtraction(Matrix4x4, Matrix4x4) |
Subtracts each element in a second matrix from its corresponding element in a first matrix. |

UnaryNegation(Matrix4x4) |
Negates the specified matrix by multiplying all its values by -1. |