Skip to content
This repository has been archived by the owner on Aug 23, 2024. It is now read-only.

VRageMath.Matrix

Morten Aune Lyrstad edited this page Apr 16, 2022 · 53 revisions

IndexNamespace Index

Matrix Struct

public struct Matrix: IEquatable<Matrix>

Defines a matrix.

Namespace: VRageMath
Assembly: VRage.Math.dll

Implements:

Fields

static Matrix Identity

static Matrix Zero

float M11

Value at row 1 column 1 of the matrix.

float M12

Value at row 1 column 2 of the matrix.

float M13

Value at row 1 column 3 of the matrix.

float M14

Value at row 1 column 4 of the matrix.

float M21

Value at row 2 column 1 of the matrix.

float M22

Value at row 2 column 2 of the matrix.

float M23

Value at row 2 column 3 of the matrix.

float M24

Value at row 2 column 4 of the matrix.

float M31

Value at row 3 column 1 of the matrix.

float M32

Value at row 3 column 2 of the matrix.

float M33

Value at row 3 column 3 of the matrix.

float M34

Value at row 3 column 4 of the matrix.

float M41

Value at row 4 column 1 of the matrix.

float M42

Value at row 4 column 2 of the matrix.

float M43

Value at row 4 column 3 of the matrix.

float M44

Value at row 4 column 4 of the matrix.

Properties

Vector3 Backward { get; set; }

Gets and sets the backward vector of the Matrix.

Vector3 Col0 { get; }

Vector3 Col1 { get; }

Vector3 Col2 { get; }

Vector3 Down { get; set; }

Gets and sets the down vector of the Matrix.

Vector3 Forward { get; set; }

Gets and sets the forward vector of the Matrix.

float Item { get; set; }

Vector3 Left { get; set; }

Gets and sets the left vector of the Matrix.

Vector3 Right { get; set; }

Gets and sets the right vector of the Matrix.

Vector3 Scale { get; }

Vector3 Translation { get; set; }

Gets and sets the translation vector of the Matrix.

Vector3 Up { get; set; }

Gets and sets the up vector of the Matrix.

Constructors

Matrix(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44)

Matrix(float m11, float m12, float m13, float m21, float m22, float m23, float m31, float m32, float m33)

Matrix(MatrixD other)

Methods

static Matrix Add(Matrix matrix1, Matrix matrix2)

Adds a matrix to another matrix.

static void Add(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)

Adds a matrix to another matrix.

static Matrix AlignRotationToAxes(ref Matrix toAlign, ref Matrix axisDefinitionMatrix)

static Matrix CreateBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3? cameraForwardVector)

Creates a spherical billboard that rotates around a specified object position.

static void CreateBillboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 cameraUpVector, Vector3? cameraForwardVector, out Matrix result)

Creates a spherical billboard that rotates around a specified object position.

static Matrix CreateConstrainedBillboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 rotateAxis, Vector3? cameraForwardVector, Vector3? objectForwardVector)

Creates a cylindrical billboard that rotates around a specified axis.

static void CreateConstrainedBillboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 rotateAxis, Vector3? cameraForwardVector, Vector3? objectForwardVector, out Matrix result)

Creates a cylindrical billboard that rotates around a specified axis.

static Matrix CreateFromAxisAngle(Vector3 axis, float angle)

Creates a new Matrix that rotates around an arbitrary vector.

static void CreateFromAxisAngle(ref Vector3 axis, float angle, out Matrix result)

Creates a new Matrix that rotates around an arbitrary vector.

static Matrix CreateFromDir(Vector3 dir)

static Matrix CreateFromDir(Vector3 dir, Vector3 suggestedUp)

static Matrix CreateFromPerspectiveFieldOfView(ref Matrix proj, float nearPlaneDistance, float farPlaneDistance)

static Matrix CreateFromQuaternion(Quaternion quaternion)

Creates a rotation Matrix from a Quaternion.

static void CreateFromQuaternion(ref Quaternion quaternion, out Matrix result)

Creates a rotation Matrix from a Quaternion.

static Matrix CreateFromTransformScale(Quaternion orientation, Vector3 position, Vector3 scale)

static Matrix CreateFromYawPitchRoll(float yaw, float pitch, float roll)

Creates a new rotation matrix from a specified yaw, pitch, and roll.

static void CreateFromYawPitchRoll(float yaw, float pitch, float roll, out Matrix result)

Fills in a rotation matrix from a specified yaw, pitch, and roll.

static Matrix CreateLookAt(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector)

Creates a view matrix.

static void CreateLookAt(ref Vector3 cameraPosition, ref Vector3 cameraTarget, ref Vector3 cameraUpVector, out Matrix result)

Creates a view matrix.

static Matrix CreateLookAtInverse(Vector3 cameraPosition, Vector3 cameraTarget, Vector3 cameraUpVector)

static Matrix CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane)

Builds an orthogonal projection matrix.

static void CreateOrthographic(float width, float height, float zNearPlane, float zFarPlane, out Matrix result)

Builds an orthogonal projection matrix.

static Matrix CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane)

Builds a customized, orthogonal projection matrix.

static void CreateOrthographicOffCenter(float left, float right, float bottom, float top, float zNearPlane, float zFarPlane, out Matrix result)

Builds a customized, orthogonal projection matrix.

static Matrix CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance)

Builds a perspective projection matrix and returns the result by value.

static void CreatePerspective(float width, float height, float nearPlaneDistance, float farPlaneDistance, out Matrix result)

Builds a perspective projection matrix and returns the result by reference.

static Matrix CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)

Builds a perspective projection matrix based on a field of view and returns by value.

static void CreatePerspectiveFieldOfView(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance, out Matrix result)

Builds a perspective projection matrix based on a field of view and returns by reference.

static Matrix CreatePerspectiveFovRhComplementary(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)

static Matrix CreatePerspectiveFovRhInfinite(float fieldOfView, float aspectRatio, float nearPlaneDistance)

static Matrix CreatePerspectiveFovRhInfiniteComplementary(float fieldOfView, float aspectRatio, float nearPlaneDistance)

static Matrix CreatePerspectiveFovRhInfiniteComplementaryInverse(float fieldOfView, float aspectRatio, float nearPlaneDistance)

static Matrix CreatePerspectiveFovRhInfiniteInverse(float fieldOfView, float aspectRatio, float nearPlaneDistance)

static Matrix CreatePerspectiveFovRhInverse(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)

static Matrix CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance)

Builds a customized, perspective projection matrix.

static void CreatePerspectiveOffCenter(float left, float right, float bottom, float top, float nearPlaneDistance, float farPlaneDistance, out Matrix result)

Builds a customized, perspective projection matrix.

static Matrix CreateReflection(Plane value)

Creates a Matrix that reflects the coordinate system about a specified Plane.

static void CreateReflection(ref Plane value, out Matrix result)

Fills in an existing Matrix so that it reflects the coordinate system about a specified Plane.

static void CreateRotationFromTwoVectors(ref Vector3 fromVector, ref Vector3 toVector, out Matrix resultMatrix)

static Matrix CreateRotationX(float radians)

Returns a matrix that can be used to rotate a set of vertices around the x-axis.

static void CreateRotationX(float radians, out Matrix result)

Populates data into a user-specified matrix that can be used to rotate a set of vertices around the x-axis.

static Matrix CreateRotationY(float radians)

Returns a matrix that can be used to rotate a set of vertices around the y-axis.

static void CreateRotationY(float radians, out Matrix result)

Populates data into a user-specified matrix that can be used to rotate a set of vertices around the y-axis.

static Matrix CreateRotationZ(float radians)

Returns a matrix that can be used to rotate a set of vertices around the z-axis.

static void CreateRotationZ(float radians, out Matrix result)

Populates data into a user-specified matrix that can be used to rotate a set of vertices around the z-axis.

static Matrix CreateScale(float xScale, float yScale, float zScale)

Creates a scaling Matrix.

static void CreateScale(float xScale, float yScale, float zScale, out Matrix result)

Creates a scaling Matrix.

static Matrix CreateScale(Vector3 scales)

Creates a scaling Matrix.

static void CreateScale(ref Vector3 scales, out Matrix result)

Creates a scaling Matrix.

static Matrix CreateScale(float scale)

Creates a scaling Matrix.

static void CreateScale(float scale, out Matrix result)

Creates a scaling Matrix.

static Matrix CreateShadow(Vector3 lightDirection, Plane plane)

Creates a Matrix that flattens geometry into a specified Plane as if casting a shadow from a specified light source.

static void CreateShadow(ref Vector3 lightDirection, ref Plane plane, out Matrix result)

Fills in a Matrix to flatten geometry into a specified Plane as if casting a shadow from a specified light source.

static Matrix CreateTranslation(Vector3 position)

Creates a translation Matrix.

static void CreateTranslation(ref Vector3 position, out Matrix result)

Creates a translation Matrix.

static Matrix CreateTranslation(float xPosition, float yPosition, float zPosition)

Creates a translation Matrix.

static void CreateTranslation(float xPosition, float yPosition, float zPosition, out Matrix result)

Creates a translation Matrix.

static Matrix CreateWorld(Vector3 position)

static Matrix CreateWorld(Vector3 position, Vector3 forward, Vector3 up)

Creates a world matrix with the specified parameters.

static void CreateWorld(ref Vector3 position, ref Vector3 forward, ref Vector3 up, out Matrix result)

Creates a world matrix with the specified parameters.

static Matrix Divide(Matrix matrix1, Matrix matrix2)

Divides the components of a matrix by the corresponding components of another matrix.

static void Divide(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)

Divides the components of a matrix by the corresponding components of another matrix.

static Matrix Divide(Matrix matrix1, float divider)

Divides the components of a matrix by a scalar.

static void Divide(ref Matrix matrix1, float divider, out Matrix result)

Divides the components of a matrix by a scalar.

static bool GetEulerAnglesXYZ(ref Matrix mat, out Vector3 xyz)

static Matrix Invert(Matrix matrix)

Calculates the inverse of a matrix.

static Matrix Invert(ref Matrix matrix)

static void Invert(ref Matrix matrix, out Matrix result)

Calculates the inverse of a matrix.

static Matrix Lerp(Matrix matrix1, Matrix matrix2, float amount)

Linearly interpolates between the corresponding values of two matrices.

static void Lerp(ref Matrix matrix1, ref Matrix matrix2, float amount, out Matrix result)

Linearly interpolates between the corresponding values of two matrices.

static Matrix Multiply(Matrix matrix1, Matrix matrix2)

Multiplies a matrix by another matrix.

static void Multiply(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)

Multiplies a matrix by another matrix.

static Matrix Multiply(Matrix matrix1, float scaleFactor)

Multiplies a matrix by a scalar value.

static void Multiply(ref Matrix matrix1, float scaleFactor, out Matrix result)

Multiplies a matrix by a scalar value.

static void MultiplyRotation(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)

Multiplies a matrix by another matrix, only rotation parts.

static Matrix Negate(Matrix matrix)

Negates individual elements of a matrix.

static void Negate(ref Matrix matrix, out Matrix result)

Negates individual elements of a matrix.

static Matrix Normalize(Matrix matrix)

static Matrix Orthogonalize(Matrix rotationMatrix)

static void Rescale(ref Matrix matrix, float scale)

Same result as Matrix.CreateScale(scale) * matrix, but much faster

static void Rescale(ref Matrix matrix, ref Vector3 scale)

Same result as Matrix.CreateScale(scale) * matrix, but much faster

static Matrix Rescale(Matrix matrix, float scale)

static Matrix Rescale(Matrix matrix, Vector3 scale)

static Matrix Round(ref Matrix matrix)

static void Slerp(ref Matrix matrix1, ref Matrix matrix2, float amount, out Matrix result)

Performs spherical linear interpolation of position and rotation.

static void Slerp(Matrix matrix1, Matrix matrix2, float amount, out Matrix result)

Performs spherical linear interpolation of position and rotation.

static Matrix Slerp(Matrix matrix1, Matrix matrix2, float amount)

Performs spherical linear interpolation of position and rotation.

static void SlerpScale(ref Matrix matrix1, ref Matrix matrix2, float amount, out Matrix result)

Performs spherical linear interpolation of position and rotation and scale.

static void SlerpScale(Matrix matrix1, Matrix matrix2, float amount, out Matrix result)

Performs spherical linear interpolation of position and rotation and scale.

static Matrix SlerpScale(Matrix matrix1, Matrix matrix2, float amount)

Performs spherical linear interpolation of position and rotation and scale.

static void Subtract(ref Matrix matrix1, ref Matrix matrix2, out Matrix result)

Subtracts matrices.

static Matrix Subtract(Matrix matrix1, Matrix matrix2)

Subtracts matrices.

static Matrix SwapYZCoordinates(Matrix m)

static Matrix Transform(Matrix value, Quaternion rotation)

Transforms a Matrix by applying a Quaternion rotation.

static void Transform(ref Matrix value, ref Quaternion rotation, out Matrix result)

Transforms a Matrix by applying a Quaternion rotation.

static Matrix Transpose(Matrix matrix)

Transposes the rows and columns of a matrix.

static void Transpose(ref Matrix matrix, out Matrix result)

Transposes the rows and columns of a matrix.

void AssertIsValid()

float Determinant()

Calculates the determinant of the matrix.

bool Equals(Matrix other)

Determines whether the specified Object is equal to the Matrix.

bool Equals(object obj)

Returns a value that indicates whether the current instance is equal to a specified object.

bool EqualsFast(ref Matrix other, float epsilon = 0.0001)

Compares just position, forward and up

Direction GetClosestDirection(Vector3 referenceVector)

Direction GetClosestDirection(ref Vector3 referenceVector)

Vector3 GetDirectionVector(Direction direction)

int GetHashCode()

Gets the hash code of this object.

Matrix GetOrientation()

Gets the orientation.

Vector4 GetRow(int row)

bool HasNoTranslationOrPerspective()

Returns true if this matrix represents invertible (you can call Invert on it) linear (it does not contain translation or perspective transformation) transformation. Such matrix consist solely of rotations, shearing, mirroring and scaling. It can be orthogonalized to create an orthogonal rotation matrix.

bool IsMirrored()

bool IsNan()

bool IsOrthogonal()

bool IsRotation()

bool IsValid()

void SetDirectionVector(Direction direction, Vector3 newValue)

void SetFrom(ref MatrixD m)

Set this ma

void SetRotationAndScale(ref MatrixD m)

void SetRow(int row, Vector4 value)

string ToString()

Retrieves a string representation of the current object.

void TransposeRotationInPlace()

Transposes the rows and columns of a matrix that is assumed to be rotation only in place.

Clone this wiki locally