Stride

OPEN / CLOSE
  • Features
  • Blog
  • Documentation
  • Community
(icon) Download

  • Discord
  • Facebook
  • Twitter
  • YouTube

LANGUAGE

OPEN / CLOSE
  • English
  • 日本語
    Show / Hide Table of Contents

    Matrix Struct

    Namespace: Stride.Core.Mathematics
    Assembly: Stride.Core.Mathematics.dll

    Represents a 4x4 mathematical matrix.

    [DataContract("float4x4")]
    [DataStyle(DataStyle.Compact)]
    public struct Matrix : IEquatable<Matrix>, IFormattable
    Name Description
    Constructors
    Matrix(Single)

    Initializes a new instance of the Matrix struct.

    Matrix(Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single)

    Initializes a new instance of the Matrix struct.

    Matrix(Single[])

    Initializes a new instance of the Matrix struct.

    Fields
    Identity

    The identity Matrix.

    M11

    Value at row 1 column 1 of the matrix.

    M12

    Value at row 1 column 2 of the matrix.

    M13

    Value at row 1 column 3 of the matrix.

    M14

    Value at row 1 column 4 of the matrix.

    M21

    Value at row 2 column 1 of the matrix.

    M22

    Value at row 2 column 2 of the matrix.

    M23

    Value at row 2 column 3 of the matrix.

    M24

    Value at row 2 column 4 of the matrix.

    M31

    Value at row 3 column 1 of the matrix.

    M32

    Value at row 3 column 2 of the matrix.

    M33

    Value at row 3 column 3 of the matrix.

    M34

    Value at row 3 column 4 of the matrix.

    M41

    Value at row 4 column 1 of the matrix.

    M42

    Value at row 4 column 2 of the matrix.

    M43

    Value at row 4 column 3 of the matrix.

    M44

    Value at row 4 column 4 of the matrix.

    SizeInBytes

    The size of the Matrix type, in bytes.

    Zero

    A Matrix with all of its components set to zero.

    Properties
    Backward

    Gets or sets the backward Vector3 of the matrix; that is M31, M32, and M33.

    Column1

    Gets or sets the first column in the matrix; that is M11, M21, M31, and M41.

    Column2

    Gets or sets the second column in the matrix; that is M12, M22, M32, and M42.

    Column3

    Gets or sets the third column in the matrix; that is M13, M23, M33, and M43.

    Column4

    Gets or sets the fourth column in the matrix; that is M14, M24, M34, and M44.

    Down

    Gets or sets the down Vector3 of the matrix; that is -M21, -M22, and -M23.

    Forward

    Gets or sets the forward Vector3 of the matrix; that is -M31, -M32, and -M33.

    IsIdentity

    Gets a value indicating whether this instance is an identity matrix.

    Item[Int32]

    Gets or sets the component at the specified index.

    Item[Int32, Int32]

    Gets or sets the component at the specified index.

    Left

    Gets or sets the left Vector3 of the matrix; that is -M11, -M12, and -M13.

    Right

    Gets or sets the right Vector3 of the matrix; that is M11, M12, and M13.

    Row1

    Gets or sets the first row in the matrix; that is M11, M12, M13, and M14.

    Row2

    Gets or sets the second row in the matrix; that is M21, M22, M23, and M24.

    Row3

    Gets or sets the third row in the matrix; that is M31, M32, M33, and M34.

    Row4

    Gets or sets the fourth row in the matrix; that is M41, M42, M43, and M44.

    ScaleVector

    Gets or sets the scale of the matrix; that is M11, M22, and M33.

    TranslationVector

    Gets or sets the translation of the matrix; that is M41, M42, and M43.

    Up

    Gets or sets the up Vector3 of the matrix; that is M21, M22, and M23.

    Methods
    Add(Matrix, Matrix)

    Determines the sum of two matrices.

    Add(ref Matrix, ref Matrix, out Matrix)

    Determines the sum of two matrices.

    AffineTransformation(Single, Quaternion, Vector3)

    Creates a 3D affine transformation matrix.

    AffineTransformation(Single, ref Quaternion, ref Vector3, out Matrix)

    Creates a 3D affine transformation matrix.

    AffineTransformation(Single, Vector3, Quaternion, Vector3)

    Creates a 3D affine transformation matrix.

    AffineTransformation(Single, ref Vector3, ref Quaternion, ref Vector3, out Matrix)

    Creates a 3D affine transformation matrix.

    AffineTransformation2D(Single, Vector2, Single, Vector2)

    Creates a 2D affine transformation matrix.

    AffineTransformation2D(Single, ref Vector2, Single, ref Vector2, out Matrix)

    Creates a 2D affine transformation matrix.

    AffineTransformation2D(Single, Single, Vector2)

    Creates a 2D affine transformation matrix.

    AffineTransformation2D(Single, Single, ref Vector2, out Matrix)

    Creates a 2D affine transformation matrix.

    Billboard(Vector3, Vector3, Vector3, Vector3)

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

    Billboard(ref Vector3, ref Vector3, ref Vector3, ref Vector3, out Matrix)

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

    CopyMatrixFrom(Single*, Int32, Int32)

    Copies a nxm matrix to this instance.

    Decompose(out Vector3, out Matrix, out Vector3)

    Decomposes a matrix into a scale, rotation, and translation.

    Decompose(out Vector3, out Quaternion, out Vector3)

    Decomposes a matrix into a scale, rotation, and translation.

    Decompose(out Vector3, out Vector3)

    Decomposes a matrix into a scale, rotation, and translation.

    Decompose(out Single, out Single, out Single)

    Decomposes a rotation matrix with the specified yaw, pitch, roll

    DecomposeLQ(out Matrix, out Matrix)

    Decomposes a matrix into a lower triangular matrix L and an orthonormalized matrix Q.

    DecomposeQR(out Matrix, out Matrix)

    Decomposes a matrix into an orthonormalized matrix Q and a right traingular matrix R.

    DecomposeXYZ(out Vector3)

    Decomposes a rotation matrix with the specified X, Y and Z euler angles. Matrix.RotationX(rotation.X) * Matrix.RotationY(rotation.Y) * Matrix.RotationZ(rotation.Z) should represent the same rotation.

    Determinant()

    Calculates the determinant of the matrix.

    Divide(Matrix, Matrix)

    Determines the quotient of two matrices.

    Divide(Matrix, Single)

    Scales a matrix by the given value.

    Divide(ref Matrix, ref Matrix, out Matrix)

    Determines the quotient of two matrices.

    Divide(ref Matrix, Single, out Matrix)

    Scales a matrix by the given value.

    Equals(Matrix)

    Determines whether the specified Matrix is equal to this instance.

    Equals(Object)

    Determines whether the specified System.Object is equal to this instance.

    ExchangeColumns(Int32, Int32)

    Exchange columns.

    ExchangeRows(Int32, Int32)

    Exchanges two rows in the matrix.

    Exponent(Matrix, Int32)

    Performs the exponential operation on a matrix.

    Exponent(ref Matrix, Int32, out Matrix)

    Performs the exponential operation on a matrix.

    GetHashCode()

    Returns a hash code for this instance.

    Invert()

    Inverts the matrix.

    Invert(Matrix)

    Calculates the inverse of the specified matrix.

    Invert(ref Matrix, out Matrix)

    Calculates the inverse of the specified matrix.

    Lerp(Matrix, Matrix, Single)

    Performs a linear interpolation between two matrices.

    Lerp(ref Matrix, ref Matrix, Single, out Matrix)

    Performs a linear interpolation between two matrices.

    LookAtLH(Vector3, Vector3, Vector3)

    Creates a left-handed, look-at matrix.

    LookAtLH(ref Vector3, ref Vector3, ref Vector3, out Matrix)

    Creates a left-handed, look-at matrix.

    LookAtRH(Vector3, Vector3, Vector3)

    Creates a right-handed, look-at matrix.

    LookAtRH(ref Vector3, ref Vector3, ref Vector3, out Matrix)

    Creates a right-handed, look-at matrix.

    LowerTriangularForm(Matrix)

    Brings the matrix into lower triangular form using elementry row operations.

    LowerTriangularForm(ref Matrix, out Matrix)

    Brings the matrix into lower triangular form using elementry row operations.

    Multiply(Matrix, Matrix)

    Determines the product of two matrices.

    Multiply(Matrix, Single)

    Scales a matrix by the given value.

    Multiply(ref Matrix, ref Matrix, out Matrix)

    Determines the product of two matrices. Variables passed as left or right must not be used as the out parameter result, because result is calculated in-place.

    Multiply(ref Matrix, Single, out Matrix)

    Scales a matrix by the given value.

    MultiplyRef(ref Matrix, ref Matrix, ref Matrix)

    Determines the product of two matrices. Variables passed as left or right must not be used as the out parameter result, because result is calculated in-place.

    MultiplyTo(ref Matrix, ref Matrix, out Matrix)

    Determines the product of two matrices. Variables passed as left or right must not be used as the out parameter result, because result is calculated in-place.

    Negate(Matrix)

    Negates a matrix.

    Negate(ref Matrix, out Matrix)

    Negates a matrix.

    Orthogonalize()

    Orthogonalizes the specified matrix.

    Orthogonalize(Matrix)

    Orthogonalizes the specified matrix.

    Orthogonalize(ref Matrix, out Matrix)

    Orthogonalizes the specified matrix.

    OrthoLH(Single, Single, Single, Single)

    Creates a left-handed, orthographic projection matrix.

    OrthoLH(Single, Single, Single, Single, out Matrix)

    Creates a left-handed, orthographic projection matrix.

    Orthonormalize()

    Orthonormalizes the specified matrix.

    Orthonormalize(Matrix)

    Orthonormalizes the specified matrix.

    Orthonormalize(ref Matrix, out Matrix)

    Orthonormalizes the specified matrix.

    OrthoOffCenterLH(Single, Single, Single, Single, Single, Single)

    Creates a left-handed, customized orthographic projection matrix.

    OrthoOffCenterLH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a left-handed, customized orthographic projection matrix.

    OrthoOffCenterRH(Single, Single, Single, Single, Single, Single)

    Creates a right-handed, customized orthographic projection matrix.

    OrthoOffCenterRH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a right-handed, customized orthographic projection matrix.

    OrthoRH(Single, Single, Single, Single)

    Creates a right-handed, orthographic projection matrix.

    OrthoRH(Single, Single, Single, Single, out Matrix)

    Creates a right-handed, orthographic projection matrix.

    PerspectiveFovLH(Single, Single, Single, Single)

    Creates a left-handed, perspective projection matrix based on a field of view.

    PerspectiveFovLH(Single, Single, Single, Single, out Matrix)

    Creates a left-handed, perspective projection matrix based on a field of view.

    PerspectiveFovRH(Single, Single, Single, Single)

    Creates a right-handed, perspective projection matrix based on a field of view.

    PerspectiveFovRH(Single, Single, Single, Single, out Matrix)

    Creates a right-handed, perspective projection matrix based on a field of view.

    PerspectiveLH(Single, Single, Single, Single)

    Creates a left-handed, perspective projection matrix.

    PerspectiveLH(Single, Single, Single, Single, out Matrix)

    Creates a left-handed, perspective projection matrix.

    PerspectiveOffCenterLH(Single, Single, Single, Single, Single, Single)

    Creates a left-handed, customized perspective projection matrix.

    PerspectiveOffCenterLH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a left-handed, customized perspective projection matrix.

    PerspectiveOffCenterRH(Single, Single, Single, Single, Single, Single)

    Creates a right-handed, customized perspective projection matrix.

    PerspectiveOffCenterRH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a right-handed, customized perspective projection matrix.

    PerspectiveRH(Single, Single, Single, Single)

    Creates a right-handed, perspective projection matrix.

    PerspectiveRH(Single, Single, Single, Single, out Matrix)

    Creates a right-handed, perspective projection matrix.

    ReducedRowEchelonForm(ref Matrix, ref Vector4, out Matrix, out Vector4)

    Brings the matrix into reduced row echelon form using elementry row operations.

    Reflection(Plane)

    Builds a matrix that can be used to reflect vectors about a plane.

    Reflection(ref Plane, out Matrix)

    Builds a matrix that can be used to reflect vectors about a plane.

    RotationAxis(Vector3, Single)

    Creates a matrix that rotates around an arbitary axis.

    RotationAxis(ref Vector3, Single, out Matrix)

    Creates a matrix that rotates around an arbitary axis.

    RotationQuaternion(Quaternion)

    Creates a rotation matrix from a quaternion.

    RotationQuaternion(ref Quaternion, out Matrix)

    Creates a rotation matrix from a quaternion.

    RotationX(Single)

    Creates a matrix that rotates around the x-axis.

    RotationX(Single, out Matrix)

    Creates a matrix that rotates around the x-axis.

    RotationY(Single)

    Creates a matrix that rotates around the y-axis.

    RotationY(Single, out Matrix)

    Creates a matrix that rotates around the y-axis.

    RotationYawPitchRoll(Single, Single, Single)

    Creates a rotation matrix with a specified yaw, pitch, and roll.

    RotationYawPitchRoll(Single, Single, Single, out Matrix)

    Creates a rotation matrix with a specified yaw, pitch, and roll.

    RotationZ(Single)

    Creates a matrix that rotates around the z-axis.

    RotationZ(Single, out Matrix)

    Creates a matrix that rotates around the z-axis.

    RowEchelonForm(Matrix)

    Brings the matrix into row echelon form using elementry row operations;

    RowEchelonForm(ref Matrix, out Matrix)

    Brings the matrix into row echelon form using elementry row operations;

    Scaling(Vector3)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    Scaling(ref Vector3, out Matrix)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    Scaling(Single)

    Creates a matrix that uniformally scales along all three axis.

    Scaling(Single, out Matrix)

    Creates a matrix that uniformally scales along all three axis.

    Scaling(Single, Single, Single)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    Scaling(Single, Single, Single, out Matrix)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    Shadow(Vector4, Plane)

    Creates a matrix that flattens geometry into a shadow.

    Shadow(ref Vector4, ref Plane, out Matrix)

    Creates a matrix that flattens geometry into a shadow.

    SmoothStep(Matrix, Matrix, Single)

    Performs a cubic interpolation between two matrices.

    SmoothStep(ref Matrix, ref Matrix, Single, out Matrix)

    Performs a cubic interpolation between two matrices.

    Subtract(Matrix, Matrix)

    Determines the difference between two matrices.

    Subtract(ref Matrix, ref Matrix, out Matrix)

    Determines the difference between two matrices.

    ToArray()

    Creates an array containing the elements of the matrix.

    ToString()

    Returns a System.String that represents this instance.

    ToString(IFormatProvider)

    Returns a System.String that represents this instance.

    ToString(String)

    Returns a System.String that represents this instance.

    ToString(String, IFormatProvider)

    Returns a System.String that represents this instance.

    Transformation(Vector3, Quaternion, Vector3, Vector3, Quaternion, Vector3)

    Creates a transformation matrix.

    Transformation(ref Vector3, ref Quaternion, ref Vector3, out Matrix)

    Creates a matrix that contains both the X, Y and Z rotation, as well as scaling and translation. Note: This function is NOT thead safe.

    Transformation(ref Vector3, ref Quaternion, ref Vector3, ref Vector3, ref Quaternion, ref Vector3, out Matrix)

    Creates a transformation matrix.

    Transformation2D(Vector2, Single, Vector2, Vector2, Single, Vector2)

    Creates a 2D transformation matrix.

    Transformation2D(ref Vector2, Single, ref Vector2, ref Vector2, Single, ref Vector2, out Matrix)

    Creates a 2D transformation matrix.

    Translation(Vector3)

    Creates a translation matrix using the specified offsets.

    Translation(ref Vector3, out Matrix)

    Creates a translation matrix using the specified offsets.

    Translation(Single, Single, Single)

    Creates a translation matrix using the specified offsets.

    Translation(Single, Single, Single, out Matrix)

    Creates a translation matrix using the specified offsets.

    Transpose()

    Transposes the matrix.

    Transpose(Matrix)

    Calculates the transpose of the specified matrix.

    Transpose(ref Matrix, out Matrix)

    Calculates the transpose of the specified matrix.

    TransposeMatrixFrom(Single*, Int32, Int32)

    Transposes a nmx matrix to this instance.

    UpperTriangularForm(Matrix)

    Brings the matrix into upper triangular form using elementry row operations.

    UpperTriangularForm(ref Matrix, out Matrix)

    Brings the matrix into upper triangular form using elementry row operations.

    Operators
    Addition(Matrix, Matrix)

    Adds two matrices.

    Division(Matrix, Matrix)

    Divides two matrices.

    Division(Matrix, Single)

    Scales a matrix by a given value.

    Equality(Matrix, Matrix)

    Tests for equality between two objects.

    Inequality(Matrix, Matrix)

    Tests for inequality between two objects.

    Multiply(Matrix, Matrix)

    Multiplies two matrices.

    Multiply(Matrix, Single)

    Scales a matrix by a given value.

    Multiply(Single, Matrix)

    Scales a matrix by a given value.

    Subtraction(Matrix, Matrix)

    Subtracts two matrices.

    UnaryNegation(Matrix)

    Negates a matrix.

    UnaryPlus(Matrix)

    Assert a matrix (return it unchanged).

    | Improve this Doc View Source

    Constructors


    Matrix(Single)

    Initializes a new instance of the Matrix struct.

    public Matrix(float value)
    Parameters
    Type Name Description
    System.Single value

    The value that will be assigned to all components.


    Matrix(Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single, Single)

    Initializes a new instance of the Matrix struct.

    public 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)
    Parameters
    Type Name Description
    System.Single M11

    The value to assign at row 1 column 1 of the matrix.

    System.Single M12

    The value to assign at row 1 column 2 of the matrix.

    System.Single M13

    The value to assign at row 1 column 3 of the matrix.

    System.Single M14

    The value to assign at row 1 column 4 of the matrix.

    System.Single M21

    The value to assign at row 2 column 1 of the matrix.

    System.Single M22

    The value to assign at row 2 column 2 of the matrix.

    System.Single M23

    The value to assign at row 2 column 3 of the matrix.

    System.Single M24

    The value to assign at row 2 column 4 of the matrix.

    System.Single M31

    The value to assign at row 3 column 1 of the matrix.

    System.Single M32

    The value to assign at row 3 column 2 of the matrix.

    System.Single M33

    The value to assign at row 3 column 3 of the matrix.

    System.Single M34

    The value to assign at row 3 column 4 of the matrix.

    System.Single M41

    The value to assign at row 4 column 1 of the matrix.

    System.Single M42

    The value to assign at row 4 column 2 of the matrix.

    System.Single M43

    The value to assign at row 4 column 3 of the matrix.

    System.Single M44

    The value to assign at row 4 column 4 of the matrix.


    Matrix(Single[])

    Initializes a new instance of the Matrix struct.

    public Matrix(float[] values)
    Parameters
    Type Name Description
    System.Single[] values

    The values to assign to the components of the matrix. This must be an array with sixteen elements.

    Exceptions
    Type Condition
    System.ArgumentNullException

    Thrown when values is null.

    System.ArgumentOutOfRangeException

    Thrown when values contains more or less than sixteen elements.

    | Improve this Doc View Source

    Fields


    Identity

    The identity Matrix.

    public static readonly Matrix Identity
    Field Value
    Type Description
    Matrix

    M11

    Value at row 1 column 1 of the matrix.

    public float M11
    Field Value
    Type Description
    System.Single

    M12

    Value at row 1 column 2 of the matrix.

    public float M12
    Field Value
    Type Description
    System.Single

    M13

    Value at row 1 column 3 of the matrix.

    public float M13
    Field Value
    Type Description
    System.Single

    M14

    Value at row 1 column 4 of the matrix.

    public float M14
    Field Value
    Type Description
    System.Single

    M21

    Value at row 2 column 1 of the matrix.

    public float M21
    Field Value
    Type Description
    System.Single

    M22

    Value at row 2 column 2 of the matrix.

    public float M22
    Field Value
    Type Description
    System.Single

    M23

    Value at row 2 column 3 of the matrix.

    public float M23
    Field Value
    Type Description
    System.Single

    M24

    Value at row 2 column 4 of the matrix.

    public float M24
    Field Value
    Type Description
    System.Single

    M31

    Value at row 3 column 1 of the matrix.

    public float M31
    Field Value
    Type Description
    System.Single

    M32

    Value at row 3 column 2 of the matrix.

    public float M32
    Field Value
    Type Description
    System.Single

    M33

    Value at row 3 column 3 of the matrix.

    public float M33
    Field Value
    Type Description
    System.Single

    M34

    Value at row 3 column 4 of the matrix.

    public float M34
    Field Value
    Type Description
    System.Single

    M41

    Value at row 4 column 1 of the matrix.

    public float M41
    Field Value
    Type Description
    System.Single

    M42

    Value at row 4 column 2 of the matrix.

    public float M42
    Field Value
    Type Description
    System.Single

    M43

    Value at row 4 column 3 of the matrix.

    public float M43
    Field Value
    Type Description
    System.Single

    M44

    Value at row 4 column 4 of the matrix.

    public float M44
    Field Value
    Type Description
    System.Single

    SizeInBytes

    The size of the Matrix type, in bytes.

    public static readonly int SizeInBytes
    Field Value
    Type Description
    System.Int32

    Zero

    A Matrix with all of its components set to zero.

    public static readonly Matrix Zero
    Field Value
    Type Description
    Matrix
    | Improve this Doc View Source

    Properties


    Backward

    Gets or sets the backward Vector3 of the matrix; that is M31, M32, and M33.

    public Vector3 Backward { get; set; }
    Property Value
    Type Description
    Vector3

    Column1

    Gets or sets the first column in the matrix; that is M11, M21, M31, and M41.

    public Vector4 Column1 { get; set; }
    Property Value
    Type Description
    Vector4

    Column2

    Gets or sets the second column in the matrix; that is M12, M22, M32, and M42.

    public Vector4 Column2 { get; set; }
    Property Value
    Type Description
    Vector4

    Column3

    Gets or sets the third column in the matrix; that is M13, M23, M33, and M43.

    public Vector4 Column3 { get; set; }
    Property Value
    Type Description
    Vector4

    Column4

    Gets or sets the fourth column in the matrix; that is M14, M24, M34, and M44.

    public Vector4 Column4 { get; set; }
    Property Value
    Type Description
    Vector4

    Down

    Gets or sets the down Vector3 of the matrix; that is -M21, -M22, and -M23.

    public Vector3 Down { get; set; }
    Property Value
    Type Description
    Vector3

    Forward

    Gets or sets the forward Vector3 of the matrix; that is -M31, -M32, and -M33.

    public Vector3 Forward { get; set; }
    Property Value
    Type Description
    Vector3

    IsIdentity

    Gets a value indicating whether this instance is an identity matrix.

    public readonly bool IsIdentity { get; }
    Property Value
    Type Description
    System.Boolean

    true if this instance is an identity matrix; otherwise, false.


    Item[Int32]

    Gets or sets the component at the specified index.

    public float this[int index] { get; set; }
    Parameters
    Type Name Description
    System.Int32 index

    The zero-based index of the component to access.

    Property Value
    Type Description
    System.Single

    The value of the matrix component, depending on the index.

    Exceptions
    Type Condition
    System.ArgumentOutOfRangeException

    Thrown when the index is out of the range [0, 15].


    Item[Int32, Int32]

    Gets or sets the component at the specified index.

    public float this[int row, int column] { get; set; }
    Parameters
    Type Name Description
    System.Int32 row

    The row of the matrix to access.

    System.Int32 column

    The column of the matrix to access.

    Property Value
    Type Description
    System.Single

    The value of the matrix component, depending on the index.

    Exceptions
    Type Condition
    System.ArgumentOutOfRangeException

    Thrown when the row or columnis out of the range [0, 3].


    Left

    Gets or sets the left Vector3 of the matrix; that is -M11, -M12, and -M13.

    public Vector3 Left { get; set; }
    Property Value
    Type Description
    Vector3

    Right

    Gets or sets the right Vector3 of the matrix; that is M11, M12, and M13.

    public Vector3 Right { get; set; }
    Property Value
    Type Description
    Vector3

    Row1

    Gets or sets the first row in the matrix; that is M11, M12, M13, and M14.

    public Vector4 Row1 { get; set; }
    Property Value
    Type Description
    Vector4

    Row2

    Gets or sets the second row in the matrix; that is M21, M22, M23, and M24.

    public Vector4 Row2 { get; set; }
    Property Value
    Type Description
    Vector4

    Row3

    Gets or sets the third row in the matrix; that is M31, M32, M33, and M34.

    public Vector4 Row3 { get; set; }
    Property Value
    Type Description
    Vector4

    Row4

    Gets or sets the fourth row in the matrix; that is M41, M42, M43, and M44.

    public Vector4 Row4 { get; set; }
    Property Value
    Type Description
    Vector4

    ScaleVector

    Gets or sets the scale of the matrix; that is M11, M22, and M33.

    public Vector3 ScaleVector { get; set; }
    Property Value
    Type Description
    Vector3
    Remarks

    This property does not do any computation and will return a correct scale vector only if the matrix is a scale matrix.


    TranslationVector

    Gets or sets the translation of the matrix; that is M41, M42, and M43.

    public Vector3 TranslationVector { get; set; }
    Property Value
    Type Description
    Vector3

    Up

    Gets or sets the up Vector3 of the matrix; that is M21, M22, and M23.

    public Vector3 Up { get; set; }
    Property Value
    Type Description
    Vector3
    | Improve this Doc View Source

    Methods


    Add(Matrix, Matrix)

    Determines the sum of two matrices.

    public static Matrix Add(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to add.

    Matrix right

    The second matrix to add.

    Returns
    Type Description
    Matrix

    The sum of the two matrices.


    Add(ref Matrix, ref Matrix, out Matrix)

    Determines the sum of two matrices.

    public static void Add(ref Matrix left, ref Matrix right, out Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to add.

    Matrix right

    The second matrix to add.

    Matrix result

    When the method completes, contains the sum of the two matrices.


    AffineTransformation(Single, Quaternion, Vector3)

    Creates a 3D affine transformation matrix.

    public static Matrix AffineTransformation(float scaling, Quaternion rotation, Vector3 translation)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    Quaternion rotation

    The rotation of the transformation.

    Vector3 translation

    The translation factor of the transformation.

    Returns
    Type Description
    Matrix

    The created affine transformation matrix.


    AffineTransformation(Single, ref Quaternion, ref Vector3, out Matrix)

    Creates a 3D affine transformation matrix.

    public static void AffineTransformation(float scaling, ref Quaternion rotation, ref Vector3 translation, out Matrix result)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    Quaternion rotation

    The rotation of the transformation.

    Vector3 translation

    The translation factor of the transformation.

    Matrix result

    When the method completes, contains the created affine transformation matrix.


    AffineTransformation(Single, Vector3, Quaternion, Vector3)

    Creates a 3D affine transformation matrix.

    public static Matrix AffineTransformation(float scaling, Vector3 rotationCenter, Quaternion rotation, Vector3 translation)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    Vector3 rotationCenter

    The center of the rotation.

    Quaternion rotation

    The rotation of the transformation.

    Vector3 translation

    The translation factor of the transformation.

    Returns
    Type Description
    Matrix

    The created affine transformation matrix.


    AffineTransformation(Single, ref Vector3, ref Quaternion, ref Vector3, out Matrix)

    Creates a 3D affine transformation matrix.

    public static void AffineTransformation(float scaling, ref Vector3 rotationCenter, ref Quaternion rotation, ref Vector3 translation, out Matrix result)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    Vector3 rotationCenter

    The center of the rotation.

    Quaternion rotation

    The rotation of the transformation.

    Vector3 translation

    The translation factor of the transformation.

    Matrix result

    When the method completes, contains the created affine transformation matrix.


    AffineTransformation2D(Single, Vector2, Single, Vector2)

    Creates a 2D affine transformation matrix.

    public static Matrix AffineTransformation2D(float scaling, Vector2 rotationCenter, float rotation, Vector2 translation)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    Vector2 rotationCenter

    The center of the rotation.

    System.Single rotation

    The rotation of the transformation.

    Vector2 translation

    The translation factor of the transformation.

    Returns
    Type Description
    Matrix

    The created affine transformation matrix.


    AffineTransformation2D(Single, ref Vector2, Single, ref Vector2, out Matrix)

    Creates a 2D affine transformation matrix.

    public static void AffineTransformation2D(float scaling, ref Vector2 rotationCenter, float rotation, ref Vector2 translation, out Matrix result)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    Vector2 rotationCenter

    The center of the rotation.

    System.Single rotation

    The rotation of the transformation.

    Vector2 translation

    The translation factor of the transformation.

    Matrix result

    When the method completes, contains the created affine transformation matrix.


    AffineTransformation2D(Single, Single, Vector2)

    Creates a 2D affine transformation matrix.

    public static Matrix AffineTransformation2D(float scaling, float rotation, Vector2 translation)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    System.Single rotation

    The rotation of the transformation.

    Vector2 translation

    The translation factor of the transformation.

    Returns
    Type Description
    Matrix

    The created affine transformation matrix.


    AffineTransformation2D(Single, Single, ref Vector2, out Matrix)

    Creates a 2D affine transformation matrix.

    public static void AffineTransformation2D(float scaling, float rotation, ref Vector2 translation, out Matrix result)
    Parameters
    Type Name Description
    System.Single scaling

    Scaling factor.

    System.Single rotation

    The rotation of the transformation.

    Vector2 translation

    The translation factor of the transformation.

    Matrix result

    When the method completes, contains the created affine transformation matrix.


    Billboard(Vector3, Vector3, Vector3, Vector3)

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

    public static Matrix Billboard(Vector3 objectPosition, Vector3 cameraPosition, Vector3 cameraUpVector, Vector3 cameraForwardVector)
    Parameters
    Type Name Description
    Vector3 objectPosition

    The position of the object around which the billboard will rotate.

    Vector3 cameraPosition

    The position of the camera.

    Vector3 cameraUpVector

    The up vector of the camera.

    Vector3 cameraForwardVector

    The forward vector of the camera.

    Returns
    Type Description
    Matrix

    The created billboard matrix.


    Billboard(ref Vector3, ref Vector3, ref Vector3, ref Vector3, out Matrix)

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

    public static void Billboard(ref Vector3 objectPosition, ref Vector3 cameraPosition, ref Vector3 cameraUpVector, ref Vector3 cameraForwardVector, out Matrix result)
    Parameters
    Type Name Description
    Vector3 objectPosition

    The position of the object around which the billboard will rotate.

    Vector3 cameraPosition

    The position of the camera.

    Vector3 cameraUpVector

    The up vector of the camera.

    Vector3 cameraForwardVector

    The forward vector of the camera.

    Matrix result

    When the method completes, contains the created billboard matrix.


    CopyMatrixFrom(Single*, Int32, Int32)

    Copies a nxm matrix to this instance.

    public void CopyMatrixFrom(float *src, int columns, int rows)
    Parameters
    Type Name Description
    System.Single* src

    The source matrix.

    System.Int32 columns

    The number of columns.

    System.Int32 rows

    The number of rows.


    Decompose(out Vector3, out Matrix, out Vector3)

    Decomposes a matrix into a scale, rotation, and translation.

    public bool Decompose(out Vector3 scale, out Matrix rotation, out Vector3 translation)
    Parameters
    Type Name Description
    Vector3 scale

    When the method completes, contains the scaling component of the decomposed matrix.

    Matrix rotation

    When the method completes, contains the rotation component of the decomposed matrix.

    Vector3 translation

    When the method completes, contains the translation component of the decomposed matrix.

    Returns
    Type Description
    System.Boolean
    Remarks

    This method is designed to decompose an SRT transformation matrix only.


    Decompose(out Vector3, out Quaternion, out Vector3)

    Decomposes a matrix into a scale, rotation, and translation.

    public bool Decompose(out Vector3 scale, out Quaternion rotation, out Vector3 translation)
    Parameters
    Type Name Description
    Vector3 scale

    When the method completes, contains the scaling component of the decomposed matrix.

    Quaternion rotation

    When the method completes, contains the rotation component of the decomposed matrix.

    Vector3 translation

    When the method completes, contains the translation component of the decomposed matrix.

    Returns
    Type Description
    System.Boolean
    Remarks

    This method is designed to decompose an SRT transformation matrix only.


    Decompose(out Vector3, out Vector3)

    Decomposes a matrix into a scale, rotation, and translation.

    public bool Decompose(out Vector3 scale, out Vector3 translation)
    Parameters
    Type Name Description
    Vector3 scale

    When the method completes, contains the scaling component of the decomposed matrix.

    Vector3 translation

    When the method completes, contains the translation component of the decomposed matrix.

    Returns
    Type Description
    System.Boolean

    true if a rotation exist for this matrix, false otherwise.

    Remarks

    This method is designed to decompose an SRT transformation matrix only.


    Decompose(out Single, out Single, out Single)

    Decomposes a rotation matrix with the specified yaw, pitch, roll

    public void Decompose(out float yaw, out float pitch, out float roll)
    Parameters
    Type Name Description
    System.Single yaw

    The yaw.

    System.Single pitch

    The pitch.

    System.Single roll

    The roll.


    DecomposeLQ(out Matrix, out Matrix)

    Decomposes a matrix into a lower triangular matrix L and an orthonormalized matrix Q.

    public void DecomposeLQ(out Matrix L, out Matrix Q)
    Parameters
    Type Name Description
    Matrix L

    When the method completes, contains the lower triangular matrix of the decomposition.

    Matrix Q

    When the method completes, contains the orthonormalized matrix of the decomposition.


    DecomposeQR(out Matrix, out Matrix)

    Decomposes a matrix into an orthonormalized matrix Q and a right traingular matrix R.

    public void DecomposeQR(out Matrix Q, out Matrix R)
    Parameters
    Type Name Description
    Matrix Q

    When the method completes, contains the orthonormalized matrix of the decomposition.

    Matrix R

    When the method completes, contains the right triangular matrix of the decomposition.


    DecomposeXYZ(out Vector3)

    Decomposes a rotation matrix with the specified X, Y and Z euler angles. Matrix.RotationX(rotation.X) * Matrix.RotationY(rotation.Y) * Matrix.RotationZ(rotation.Z) should represent the same rotation.

    public void DecomposeXYZ(out Vector3 rotation)
    Parameters
    Type Name Description
    Vector3 rotation

    The vector containing the 3 rotations angles to be applied in order.


    Determinant()

    Calculates the determinant of the matrix.

    public float Determinant()
    Returns
    Type Description
    System.Single

    The determinant of the matrix.


    Divide(Matrix, Matrix)

    Determines the quotient of two matrices.

    public static Matrix Divide(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to divide.

    Matrix right

    The second matrix to divide.

    Returns
    Type Description
    Matrix

    The quotient of the two matrices.


    Divide(Matrix, Single)

    Scales a matrix by the given value.

    public static Matrix Divide(Matrix left, float right)
    Parameters
    Type Name Description
    Matrix left

    The matrix to scale.

    System.Single right

    The amount by which to scale.

    Returns
    Type Description
    Matrix

    The scaled matrix.


    Divide(ref Matrix, ref Matrix, out Matrix)

    Determines the quotient of two matrices.

    public static void Divide(ref Matrix left, ref Matrix right, out Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to divide.

    Matrix right

    The second matrix to divide.

    Matrix result

    When the method completes, contains the quotient of the two matrices.


    Divide(ref Matrix, Single, out Matrix)

    Scales a matrix by the given value.

    public static void Divide(ref Matrix left, float right, out Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The matrix to scale.

    System.Single right

    The amount by which to scale.

    Matrix result

    When the method completes, contains the scaled matrix.


    Equals(Matrix)

    Determines whether the specified Matrix is equal to this instance.

    public bool Equals(Matrix other)
    Parameters
    Type Name Description
    Matrix other

    The Matrix to compare with this instance.

    Returns
    Type Description
    System.Boolean

    true if the specified Matrix is equal to this instance; otherwise, false.


    Equals(Object)

    Determines whether the specified System.Object is equal to this instance.

    public override bool Equals(object value)
    Parameters
    Type Name Description
    System.Object value

    The System.Object to compare with this instance.

    Returns
    Type Description
    System.Boolean

    true if the specified System.Object is equal to this instance; otherwise, false.

    Overrides
    System.ValueType.Equals(System.Object)

    ExchangeColumns(Int32, Int32)

    Exchange columns.

    public void ExchangeColumns(int firstColumn, int secondColumn)
    Parameters
    Type Name Description
    System.Int32 firstColumn

    The first column to exchange.

    System.Int32 secondColumn

    The second column to exchange.


    ExchangeRows(Int32, Int32)

    Exchanges two rows in the matrix.

    public void ExchangeRows(int firstRow, int secondRow)
    Parameters
    Type Name Description
    System.Int32 firstRow

    The first row to exchange. This is an index of the row starting at zero.

    System.Int32 secondRow

    The second row to exchange. This is an index of the row starting at zero.


    Exponent(Matrix, Int32)

    Performs the exponential operation on a matrix.

    public static Matrix Exponent(Matrix value, int exponent)
    Parameters
    Type Name Description
    Matrix value

    The matrix to perform the operation on.

    System.Int32 exponent

    The exponent to raise the matrix to.

    Returns
    Type Description
    Matrix

    The exponential matrix.

    Exceptions
    Type Condition
    System.ArgumentOutOfRangeException

    Thrown when the exponent is negative.


    Exponent(ref Matrix, Int32, out Matrix)

    Performs the exponential operation on a matrix.

    public static void Exponent(ref Matrix value, int exponent, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix to perform the operation on.

    System.Int32 exponent

    The exponent to raise the matrix to.

    Matrix result

    When the method completes, contains the exponential matrix.

    Exceptions
    Type Condition
    System.ArgumentOutOfRangeException

    Thrown when the exponent is negative.


    GetHashCode()

    Returns a hash code for this instance.

    public override int GetHashCode()
    Returns
    Type Description
    System.Int32

    A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.

    Overrides
    System.ValueType.GetHashCode()

    Invert()

    Inverts the matrix.

    public void Invert()

    Invert(Matrix)

    Calculates the inverse of the specified matrix.

    public static Matrix Invert(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix whose inverse is to be calculated.

    Returns
    Type Description
    Matrix

    The inverse of the specified matrix.


    Invert(ref Matrix, out Matrix)

    Calculates the inverse of the specified matrix.

    public static void Invert(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix whose inverse is to be calculated.

    Matrix result

    When the method completes, contains the inverse of the specified matrix.


    Lerp(Matrix, Matrix, Single)

    Performs a linear interpolation between two matrices.

    public static Matrix Lerp(Matrix start, Matrix end, float amount)
    Parameters
    Type Name Description
    Matrix start

    Start matrix.

    Matrix end

    End matrix.

    System.Single amount

    Value between 0 and 1 indicating the weight of end.

    Returns
    Type Description
    Matrix

    The linear interpolation of the two matrices.

    Remarks

    This method performs the linear interpolation based on the following formula.

    start + (end - start) * amount

    Passing amount a value of 0 will cause start to be returned; a value of 1 will cause end to be returned.


    Lerp(ref Matrix, ref Matrix, Single, out Matrix)

    Performs a linear interpolation between two matrices.

    public static void Lerp(ref Matrix start, ref Matrix end, float amount, out Matrix result)
    Parameters
    Type Name Description
    Matrix start

    Start matrix.

    Matrix end

    End matrix.

    System.Single amount

    Value between 0 and 1 indicating the weight of end.

    Matrix result

    When the method completes, contains the linear interpolation of the two matrices.

    Remarks

    This method performs the linear interpolation based on the following formula.

    start + (end - start) * amount

    Passing amount a value of 0 will cause start to be returned; a value of 1 will cause end to be returned.


    LookAtLH(Vector3, Vector3, Vector3)

    Creates a left-handed, look-at matrix.

    public static Matrix LookAtLH(Vector3 eye, Vector3 target, Vector3 up)
    Parameters
    Type Name Description
    Vector3 eye

    The position of the viewer's eye.

    Vector3 target

    The camera look-at target.

    Vector3 up

    The camera's up vector.

    Returns
    Type Description
    Matrix

    The created look-at matrix.


    LookAtLH(ref Vector3, ref Vector3, ref Vector3, out Matrix)

    Creates a left-handed, look-at matrix.

    public static void LookAtLH(ref Vector3 eye, ref Vector3 target, ref Vector3 up, out Matrix result)
    Parameters
    Type Name Description
    Vector3 eye

    The position of the viewer's eye.

    Vector3 target

    The camera look-at target.

    Vector3 up

    The camera's up vector.

    Matrix result

    When the method completes, contains the created look-at matrix.


    LookAtRH(Vector3, Vector3, Vector3)

    Creates a right-handed, look-at matrix.

    public static Matrix LookAtRH(Vector3 eye, Vector3 target, Vector3 up)
    Parameters
    Type Name Description
    Vector3 eye

    The position of the viewer's eye.

    Vector3 target

    The camera look-at target.

    Vector3 up

    The camera's up vector.

    Returns
    Type Description
    Matrix

    The created look-at matrix.


    LookAtRH(ref Vector3, ref Vector3, ref Vector3, out Matrix)

    Creates a right-handed, look-at matrix.

    public static void LookAtRH(ref Vector3 eye, ref Vector3 target, ref Vector3 up, out Matrix result)
    Parameters
    Type Name Description
    Vector3 eye

    The position of the viewer's eye.

    Vector3 target

    The camera look-at target.

    Vector3 up

    The camera's up vector.

    Matrix result

    When the method completes, contains the created look-at matrix.


    LowerTriangularForm(Matrix)

    Brings the matrix into lower triangular form using elementry row operations.

    public static Matrix LowerTriangularForm(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to put into lower triangular form.

    Returns
    Type Description
    Matrix

    The lower triangular matrix.

    Remarks

    If the matrix is not invertable (i.e. its determinant is zero) than the result of this method may produce Single.Nan and Single.Inf values. When the matrix represents a system of linear equations, than this often means that either no solution exists or an infinite number of solutions exist.


    LowerTriangularForm(ref Matrix, out Matrix)

    Brings the matrix into lower triangular form using elementry row operations.

    public static void LowerTriangularForm(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix to put into lower triangular form.

    Matrix result

    When the method completes, contains the lower triangular matrix.

    Remarks

    If the matrix is not invertable (i.e. its determinant is zero) than the result of this method may produce Single.Nan and Single.Inf values. When the matrix represents a system of linear equations, than this often means that either no solution exists or an infinite number of solutions exist.


    Multiply(Matrix, Matrix)

    Determines the product of two matrices.

    public static Matrix Multiply(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to multiply.

    Matrix right

    The second matrix to multiply.

    Returns
    Type Description
    Matrix

    The product of the two matrices.


    Multiply(Matrix, Single)

    Scales a matrix by the given value.

    public static Matrix Multiply(Matrix left, float right)
    Parameters
    Type Name Description
    Matrix left

    The matrix to scale.

    System.Single right

    The amount by which to scale.

    Returns
    Type Description
    Matrix

    The scaled matrix.


    Multiply(ref Matrix, ref Matrix, out Matrix)

    Determines the product of two matrices. Variables passed as left or right must not be used as the out parameter result, because result is calculated in-place.

    public static void Multiply(ref Matrix left, ref Matrix right, out Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to multiply.

    Matrix right

    The second matrix to multiply.

    Matrix result

    The product of the two matrices.


    Multiply(ref Matrix, Single, out Matrix)

    Scales a matrix by the given value.

    public static void Multiply(ref Matrix left, float right, out Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The matrix to scale.

    System.Single right

    The amount by which to scale.

    Matrix result

    When the method completes, contains the scaled matrix.


    MultiplyRef(ref Matrix, ref Matrix, ref Matrix)

    Determines the product of two matrices. Variables passed as left or right must not be used as the out parameter result, because result is calculated in-place.

    public static void MultiplyRef(ref Matrix left, ref Matrix right, ref Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to multiply.

    Matrix right

    The second matrix to multiply.

    Matrix result

    The product of the two matrices.


    MultiplyTo(ref Matrix, ref Matrix, out Matrix)

    Determines the product of two matrices. Variables passed as left or right must not be used as the out parameter result, because result is calculated in-place.

    public static void MultiplyTo(ref Matrix left, ref Matrix right, out Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to multiply.

    Matrix right

    The second matrix to multiply.

    Matrix result

    The product of the two matrices.


    Negate(Matrix)

    Negates a matrix.

    public static Matrix Negate(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to be negated.

    Returns
    Type Description
    Matrix

    The negated matrix.


    Negate(ref Matrix, out Matrix)

    Negates a matrix.

    public static void Negate(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix to be negated.

    Matrix result

    When the method completes, contains the negated matrix.


    Orthogonalize()

    Orthogonalizes the specified matrix.

    public void Orthogonalize()
    Remarks

    Orthogonalization is the process of making all rows orthogonal to each other. This means that any given row in the matrix will be orthogonal to any other given row in the matrix.

    Because this method uses the modified Gram-Schmidt process, the resulting matrix tends to be numerically unstable. The numeric stability decreases according to the rows so that the first row is the most stable and the last row is the least stable.

    This operation is performed on the rows of the matrix rather than the columns. If you wish for this operation to be performed on the columns, first transpose the input and than transpose the output.


    Orthogonalize(Matrix)

    Orthogonalizes the specified matrix.

    public static Matrix Orthogonalize(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to orthogonalize.

    Returns
    Type Description
    Matrix

    The orthogonalized matrix.

    Remarks

    Orthogonalization is the process of making all rows orthogonal to each other. This means that any given row in the matrix will be orthogonal to any other given row in the matrix.

    Because this method uses the modified Gram-Schmidt process, the resulting matrix tends to be numerically unstable. The numeric stability decreases according to the rows so that the first row is the most stable and the last row is the least stable.

    This operation is performed on the rows of the matrix rather than the columns. If you wish for this operation to be performed on the columns, first transpose the input and than transpose the output.


    Orthogonalize(ref Matrix, out Matrix)

    Orthogonalizes the specified matrix.

    public static void Orthogonalize(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix to orthogonalize.

    Matrix result

    When the method completes, contains the orthogonalized matrix.

    Remarks

    Orthogonalization is the process of making all rows orthogonal to each other. This means that any given row in the matrix will be orthogonal to any other given row in the matrix.

    Because this method uses the modified Gram-Schmidt process, the resulting matrix tends to be numerically unstable. The numeric stability decreases according to the rows so that the first row is the most stable and the last row is the least stable.

    This operation is performed on the rows of the matrix rather than the columns. If you wish for this operation to be performed on the columns, first transpose the input and than transpose the output.


    OrthoLH(Single, Single, Single, Single)

    Creates a left-handed, orthographic projection matrix.

    public static Matrix OrthoLH(float width, float height, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    OrthoLH(Single, Single, Single, Single, out Matrix)

    Creates a left-handed, orthographic projection matrix.

    public static void OrthoLH(float width, float height, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    Orthonormalize()

    Orthonormalizes the specified matrix.

    public void Orthonormalize()
    Remarks

    Orthonormalization is the process of making all rows and columns orthogonal to each other and making all rows and columns of unit length. This means that any given row will be orthogonal to any other given row and any given column will be orthogonal to any other given column. Any given row will not be orthogonal to any given column. Every row and every column will be of unit length.

    Because this method uses the modified Gram-Schmidt process, the resulting matrix tends to be numerically unstable. The numeric stability decreases according to the rows so that the first row is the most stable and the last row is the least stable.

    This operation is performed on the rows of the matrix rather than the columns. If you wish for this operation to be performed on the columns, first transpose the input and than transpose the output.


    Orthonormalize(Matrix)

    Orthonormalizes the specified matrix.

    public static Matrix Orthonormalize(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to orthonormalize.

    Returns
    Type Description
    Matrix

    The orthonormalized matrix.

    Remarks

    Orthonormalization is the process of making all rows and columns orthogonal to each other and making all rows and columns of unit length. This means that any given row will be orthogonal to any other given row and any given column will be orthogonal to any other given column. Any given row will not be orthogonal to any given column. Every row and every column will be of unit length.

    Because this method uses the modified Gram-Schmidt process, the resulting matrix tends to be numerically unstable. The numeric stability decreases according to the rows so that the first row is the most stable and the last row is the least stable.

    This operation is performed on the rows of the matrix rather than the columns. If you wish for this operation to be performed on the columns, first transpose the input and than transpose the output.


    Orthonormalize(ref Matrix, out Matrix)

    Orthonormalizes the specified matrix.

    public static void Orthonormalize(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix to orthonormalize.

    Matrix result

    When the method completes, contains the orthonormalized matrix.

    Remarks

    Orthonormalization is the process of making all rows and columns orthogonal to each other and making all rows and columns of unit length. This means that any given row will be orthogonal to any other given row and any given column will be orthogonal to any other given column. Any given row will not be orthogonal to any given column. Every row and every column will be of unit length.

    Because this method uses the modified Gram-Schmidt process, the resulting matrix tends to be numerically unstable. The numeric stability decreases according to the rows so that the first row is the most stable and the last row is the least stable.

    This operation is performed on the rows of the matrix rather than the columns. If you wish for this operation to be performed on the columns, first transpose the input and than transpose the output.


    OrthoOffCenterLH(Single, Single, Single, Single, Single, Single)

    Creates a left-handed, customized orthographic projection matrix.

    public static Matrix OrthoOffCenterLH(float left, float right, float bottom, float top, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    OrthoOffCenterLH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a left-handed, customized orthographic projection matrix.

    public static void OrthoOffCenterLH(float left, float right, float bottom, float top, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    OrthoOffCenterRH(Single, Single, Single, Single, Single, Single)

    Creates a right-handed, customized orthographic projection matrix.

    public static Matrix OrthoOffCenterRH(float left, float right, float bottom, float top, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    OrthoOffCenterRH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a right-handed, customized orthographic projection matrix.

    public static void OrthoOffCenterRH(float left, float right, float bottom, float top, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    OrthoRH(Single, Single, Single, Single)

    Creates a right-handed, orthographic projection matrix.

    public static Matrix OrthoRH(float width, float height, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    OrthoRH(Single, Single, Single, Single, out Matrix)

    Creates a right-handed, orthographic projection matrix.

    public static void OrthoRH(float width, float height, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    PerspectiveFovLH(Single, Single, Single, Single)

    Creates a left-handed, perspective projection matrix based on a field of view.

    public static Matrix PerspectiveFovLH(float fov, float aspect, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single fov

    Field of view in the y direction, in radians.

    System.Single aspect

    Aspect ratio, defined as view space width divided by height.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    PerspectiveFovLH(Single, Single, Single, Single, out Matrix)

    Creates a left-handed, perspective projection matrix based on a field of view.

    public static void PerspectiveFovLH(float fov, float aspect, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single fov

    Field of view in the y direction, in radians.

    System.Single aspect

    Aspect ratio, defined as view space width divided by height.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    PerspectiveFovRH(Single, Single, Single, Single)

    Creates a right-handed, perspective projection matrix based on a field of view.

    public static Matrix PerspectiveFovRH(float fov, float aspect, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single fov

    Field of view in the y direction, in radians.

    System.Single aspect

    Aspect ratio, defined as view space width divided by height.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    PerspectiveFovRH(Single, Single, Single, Single, out Matrix)

    Creates a right-handed, perspective projection matrix based on a field of view.

    public static void PerspectiveFovRH(float fov, float aspect, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single fov

    Field of view in the y direction, in radians.

    System.Single aspect

    Aspect ratio, defined as view space width divided by height.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    PerspectiveLH(Single, Single, Single, Single)

    Creates a left-handed, perspective projection matrix.

    public static Matrix PerspectiveLH(float width, float height, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    PerspectiveLH(Single, Single, Single, Single, out Matrix)

    Creates a left-handed, perspective projection matrix.

    public static void PerspectiveLH(float width, float height, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    PerspectiveOffCenterLH(Single, Single, Single, Single, Single, Single)

    Creates a left-handed, customized perspective projection matrix.

    public static Matrix PerspectiveOffCenterLH(float left, float right, float bottom, float top, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    PerspectiveOffCenterLH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a left-handed, customized perspective projection matrix.

    public static void PerspectiveOffCenterLH(float left, float right, float bottom, float top, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    PerspectiveOffCenterRH(Single, Single, Single, Single, Single, Single)

    Creates a right-handed, customized perspective projection matrix.

    public static Matrix PerspectiveOffCenterRH(float left, float right, float bottom, float top, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    PerspectiveOffCenterRH(Single, Single, Single, Single, Single, Single, out Matrix)

    Creates a right-handed, customized perspective projection matrix.

    public static void PerspectiveOffCenterRH(float left, float right, float bottom, float top, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single left

    Minimum x-value of the viewing volume.

    System.Single right

    Maximum x-value of the viewing volume.

    System.Single bottom

    Minimum y-value of the viewing volume.

    System.Single top

    Maximum y-value of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    PerspectiveRH(Single, Single, Single, Single)

    Creates a right-handed, perspective projection matrix.

    public static Matrix PerspectiveRH(float width, float height, float znear, float zfar)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Returns
    Type Description
    Matrix

    The created projection matrix.


    PerspectiveRH(Single, Single, Single, Single, out Matrix)

    Creates a right-handed, perspective projection matrix.

    public static void PerspectiveRH(float width, float height, float znear, float zfar, out Matrix result)
    Parameters
    Type Name Description
    System.Single width

    Width of the viewing volume.

    System.Single height

    Height of the viewing volume.

    System.Single znear

    Minimum z-value of the viewing volume.

    System.Single zfar

    Maximum z-value of the viewing volume.

    Matrix result

    When the method completes, contains the created projection matrix.


    ReducedRowEchelonForm(ref Matrix, ref Vector4, out Matrix, out Vector4)

    Brings the matrix into reduced row echelon form using elementry row operations.

    public static void ReducedRowEchelonForm(ref Matrix value, ref Vector4 augment, out Matrix result, out Vector4 augmentResult)
    Parameters
    Type Name Description
    Matrix value

    The matrix to put into reduced row echelon form.

    Vector4 augment

    The fifth column of the matrix.

    Matrix result

    When the method completes, contains the resultant matrix after the operation.

    Vector4 augmentResult

    When the method completes, contains the resultant fifth column of the matrix.

    Remarks

    The fifth column is often called the agumented part of the matrix. This is because the fifth column is really just an extension of the matrix so that there is a place to put all of the non-zero components after the operation is complete.

    Often times the resultant matrix will the identity matrix or a matrix similar to the identity matrix. Sometimes, however, that is not possible and numbers other than zero and one may appear.

    This method can be used to solve systems of linear equations. Upon completion of this method, the augmentResult will contain the solution for the system. It is up to the user to analyze both the input and the result to determine if a solution really exists.


    Reflection(Plane)

    Builds a matrix that can be used to reflect vectors about a plane.

    public static Matrix Reflection(Plane plane)
    Parameters
    Type Name Description
    Plane plane

    The plane for which the reflection occurs. This parameter is assumed to be normalized.

    Returns
    Type Description
    Matrix

    The reflection matrix.


    Reflection(ref Plane, out Matrix)

    Builds a matrix that can be used to reflect vectors about a plane.

    public static void Reflection(ref Plane plane, out Matrix result)
    Parameters
    Type Name Description
    Plane plane

    The plane for which the reflection occurs. This parameter is assumed to be normalized.

    Matrix result

    When the method completes, contains the reflection matrix.


    RotationAxis(Vector3, Single)

    Creates a matrix that rotates around an arbitary axis.

    public static Matrix RotationAxis(Vector3 axis, float angle)
    Parameters
    Type Name Description
    Vector3 axis

    The axis around which to rotate. This parameter is assumed to be normalized.

    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Returns
    Type Description
    Matrix

    The created rotation matrix.


    RotationAxis(ref Vector3, Single, out Matrix)

    Creates a matrix that rotates around an arbitary axis.

    public static void RotationAxis(ref Vector3 axis, float angle, out Matrix result)
    Parameters
    Type Name Description
    Vector3 axis

    The axis around which to rotate. This parameter is assumed to be normalized.

    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Matrix result

    When the method completes, contains the created rotation matrix.


    RotationQuaternion(Quaternion)

    Creates a rotation matrix from a quaternion.

    public static Matrix RotationQuaternion(Quaternion rotation)
    Parameters
    Type Name Description
    Quaternion rotation

    The quaternion to use to build the matrix.

    Returns
    Type Description
    Matrix

    The created rotation matrix.


    RotationQuaternion(ref Quaternion, out Matrix)

    Creates a rotation matrix from a quaternion.

    public static void RotationQuaternion(ref Quaternion rotation, out Matrix result)
    Parameters
    Type Name Description
    Quaternion rotation

    The quaternion to use to build the matrix.

    Matrix result

    The created rotation matrix.


    RotationX(Single)

    Creates a matrix that rotates around the x-axis.

    public static Matrix RotationX(float angle)
    Parameters
    Type Name Description
    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Returns
    Type Description
    Matrix

    The created rotation matrix.


    RotationX(Single, out Matrix)

    Creates a matrix that rotates around the x-axis.

    public static void RotationX(float angle, out Matrix result)
    Parameters
    Type Name Description
    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Matrix result

    When the method completes, contains the created rotation matrix.


    RotationY(Single)

    Creates a matrix that rotates around the y-axis.

    public static Matrix RotationY(float angle)
    Parameters
    Type Name Description
    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Returns
    Type Description
    Matrix

    The created rotation matrix.


    RotationY(Single, out Matrix)

    Creates a matrix that rotates around the y-axis.

    public static void RotationY(float angle, out Matrix result)
    Parameters
    Type Name Description
    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Matrix result

    When the method completes, contains the created rotation matrix.


    RotationYawPitchRoll(Single, Single, Single)

    Creates a rotation matrix with a specified yaw, pitch, and roll.

    public static Matrix RotationYawPitchRoll(float yaw, float pitch, float roll)
    Parameters
    Type Name Description
    System.Single yaw

    Yaw around the y-axis, in radians.

    System.Single pitch

    Pitch around the x-axis, in radians.

    System.Single roll

    Roll around the z-axis, in radians.

    Returns
    Type Description
    Matrix

    The created rotation matrix.


    RotationYawPitchRoll(Single, Single, Single, out Matrix)

    Creates a rotation matrix with a specified yaw, pitch, and roll.

    public static void RotationYawPitchRoll(float yaw, float pitch, float roll, out Matrix result)
    Parameters
    Type Name Description
    System.Single yaw

    Yaw around the y-axis, in radians.

    System.Single pitch

    Pitch around the x-axis, in radians.

    System.Single roll

    Roll around the z-axis, in radians.

    Matrix result

    When the method completes, contains the created rotation matrix.


    RotationZ(Single)

    Creates a matrix that rotates around the z-axis.

    public static Matrix RotationZ(float angle)
    Parameters
    Type Name Description
    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Returns
    Type Description
    Matrix

    The created rotation matrix.


    RotationZ(Single, out Matrix)

    Creates a matrix that rotates around the z-axis.

    public static void RotationZ(float angle, out Matrix result)
    Parameters
    Type Name Description
    System.Single angle

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Matrix result

    When the method completes, contains the created rotation matrix.


    RowEchelonForm(Matrix)

    Brings the matrix into row echelon form using elementry row operations;

    public static Matrix RowEchelonForm(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to put into row echelon form.

    Returns
    Type Description
    Matrix

    When the method completes, contains the row echelon form of the matrix.


    RowEchelonForm(ref Matrix, out Matrix)

    Brings the matrix into row echelon form using elementry row operations;

    public static void RowEchelonForm(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix to put into row echelon form.

    Matrix result

    When the method completes, contains the row echelon form of the matrix.


    Scaling(Vector3)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    public static Matrix Scaling(Vector3 scale)
    Parameters
    Type Name Description
    Vector3 scale

    Scaling factor for all three axes.

    Returns
    Type Description
    Matrix

    The created scaling matrix.


    Scaling(ref Vector3, out Matrix)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    public static void Scaling(ref Vector3 scale, out Matrix result)
    Parameters
    Type Name Description
    Vector3 scale

    Scaling factor for all three axes.

    Matrix result

    When the method completes, contains the created scaling matrix.


    Scaling(Single)

    Creates a matrix that uniformally scales along all three axis.

    public static Matrix Scaling(float scale)
    Parameters
    Type Name Description
    System.Single scale

    The uniform scale that is applied along all axis.

    Returns
    Type Description
    Matrix

    The created scaling matrix.


    Scaling(Single, out Matrix)

    Creates a matrix that uniformally scales along all three axis.

    public static void Scaling(float scale, out Matrix result)
    Parameters
    Type Name Description
    System.Single scale

    The uniform scale that is applied along all axis.

    Matrix result

    When the method completes, contains the created scaling matrix.


    Scaling(Single, Single, Single)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    public static Matrix Scaling(float x, float y, float z)
    Parameters
    Type Name Description
    System.Single x

    Scaling factor that is applied along the x-axis.

    System.Single y

    Scaling factor that is applied along the y-axis.

    System.Single z

    Scaling factor that is applied along the z-axis.

    Returns
    Type Description
    Matrix

    The created scaling matrix.


    Scaling(Single, Single, Single, out Matrix)

    Creates a matrix that scales along the x-axis, y-axis, and y-axis.

    public static void Scaling(float x, float y, float z, out Matrix result)
    Parameters
    Type Name Description
    System.Single x

    Scaling factor that is applied along the x-axis.

    System.Single y

    Scaling factor that is applied along the y-axis.

    System.Single z

    Scaling factor that is applied along the z-axis.

    Matrix result

    When the method completes, contains the created scaling matrix.


    Shadow(Vector4, Plane)

    Creates a matrix that flattens geometry into a shadow.

    public static Matrix Shadow(Vector4 light, Plane plane)
    Parameters
    Type Name Description
    Vector4 light

    The light direction. If the W component is 0, the light is directional light; if the W component is 1, the light is a point light.

    Plane plane

    The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized.

    Returns
    Type Description
    Matrix

    The shadow matrix.


    Shadow(ref Vector4, ref Plane, out Matrix)

    Creates a matrix that flattens geometry into a shadow.

    public static void Shadow(ref Vector4 light, ref Plane plane, out Matrix result)
    Parameters
    Type Name Description
    Vector4 light

    The light direction. If the W component is 0, the light is directional light; if the W component is 1, the light is a point light.

    Plane plane

    The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized.

    Matrix result

    When the method completes, contains the shadow matrix.


    SmoothStep(Matrix, Matrix, Single)

    Performs a cubic interpolation between two matrices.

    public static Matrix SmoothStep(Matrix start, Matrix end, float amount)
    Parameters
    Type Name Description
    Matrix start

    Start matrix.

    Matrix end

    End matrix.

    System.Single amount

    Value between 0 and 1 indicating the weight of end.

    Returns
    Type Description
    Matrix

    The cubic interpolation of the two matrices.


    SmoothStep(ref Matrix, ref Matrix, Single, out Matrix)

    Performs a cubic interpolation between two matrices.

    public static void SmoothStep(ref Matrix start, ref Matrix end, float amount, out Matrix result)
    Parameters
    Type Name Description
    Matrix start

    Start matrix.

    Matrix end

    End matrix.

    System.Single amount

    Value between 0 and 1 indicating the weight of end.

    Matrix result

    When the method completes, contains the cubic interpolation of the two matrices.


    Subtract(Matrix, Matrix)

    Determines the difference between two matrices.

    public static Matrix Subtract(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to subtract.

    Matrix right

    The second matrix to subtract.

    Returns
    Type Description
    Matrix

    The difference between the two matrices.


    Subtract(ref Matrix, ref Matrix, out Matrix)

    Determines the difference between two matrices.

    public static void Subtract(ref Matrix left, ref Matrix right, out Matrix result)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to subtract.

    Matrix right

    The second matrix to subtract.

    Matrix result

    When the method completes, contains the difference between the two matrices.


    ToArray()

    Creates an array containing the elements of the matrix.

    public float[] ToArray()
    Returns
    Type Description
    System.Single[]

    A sixteen-element array containing the components of the matrix.


    ToString()

    Returns a System.String that represents this instance.

    public override string ToString()
    Returns
    Type Description
    System.String

    A System.String that represents this instance.

    Overrides
    System.ValueType.ToString()

    ToString(IFormatProvider)

    Returns a System.String that represents this instance.

    public string ToString(IFormatProvider formatProvider)
    Parameters
    Type Name Description
    System.IFormatProvider formatProvider

    The format provider.

    Returns
    Type Description
    System.String

    A System.String that represents this instance.


    ToString(String)

    Returns a System.String that represents this instance.

    public string ToString(string format)
    Parameters
    Type Name Description
    System.String format

    The format.

    Returns
    Type Description
    System.String

    A System.String that represents this instance.


    ToString(String, IFormatProvider)

    Returns a System.String that represents this instance.

    public string ToString(string format, IFormatProvider formatProvider)
    Parameters
    Type Name Description
    System.String format

    The format.

    System.IFormatProvider formatProvider

    The format provider.

    Returns
    Type Description
    System.String

    A System.String that represents this instance.


    Transformation(Vector3, Quaternion, Vector3, Vector3, Quaternion, Vector3)

    Creates a transformation matrix.

    public static Matrix Transformation(Vector3 scalingCenter, Quaternion scalingRotation, Vector3 scaling, Vector3 rotationCenter, Quaternion rotation, Vector3 translation)
    Parameters
    Type Name Description
    Vector3 scalingCenter

    Center point of the scaling operation.

    Quaternion scalingRotation

    Scaling rotation amount.

    Vector3 scaling

    Scaling factor.

    Vector3 rotationCenter

    The center of the rotation.

    Quaternion rotation

    The rotation of the transformation.

    Vector3 translation

    The translation factor of the transformation.

    Returns
    Type Description
    Matrix

    The created transformation matrix.


    Transformation(ref Vector3, ref Quaternion, ref Vector3, out Matrix)

    Creates a matrix that contains both the X, Y and Z rotation, as well as scaling and translation. Note: This function is NOT thead safe.

    public static void Transformation(ref Vector3 scaling, ref Quaternion rotation, ref Vector3 translation, out Matrix result)
    Parameters
    Type Name Description
    Vector3 scaling

    The scaling.

    Quaternion rotation

    Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin.

    Vector3 translation

    The translation.

    Matrix result

    When the method completes, contains the created rotation matrix.


    Transformation(ref Vector3, ref Quaternion, ref Vector3, ref Vector3, ref Quaternion, ref Vector3, out Matrix)

    Creates a transformation matrix.

    public static void Transformation(ref Vector3 scalingCenter, ref Quaternion scalingRotation, ref Vector3 scaling, ref Vector3 rotationCenter, ref Quaternion rotation, ref Vector3 translation, out Matrix result)
    Parameters
    Type Name Description
    Vector3 scalingCenter

    Center point of the scaling operation.

    Quaternion scalingRotation

    Scaling rotation amount.

    Vector3 scaling

    Scaling factor.

    Vector3 rotationCenter

    The center of the rotation.

    Quaternion rotation

    The rotation of the transformation.

    Vector3 translation

    The translation factor of the transformation.

    Matrix result

    When the method completes, contains the created transformation matrix.


    Transformation2D(Vector2, Single, Vector2, Vector2, Single, Vector2)

    Creates a 2D transformation matrix.

    public static Matrix Transformation2D(Vector2 scalingCenter, float scalingRotation, Vector2 scaling, Vector2 rotationCenter, float rotation, Vector2 translation)
    Parameters
    Type Name Description
    Vector2 scalingCenter

    Center point of the scaling operation.

    System.Single scalingRotation

    Scaling rotation amount.

    Vector2 scaling

    Scaling factor.

    Vector2 rotationCenter

    The center of the rotation.

    System.Single rotation

    The rotation of the transformation.

    Vector2 translation

    The translation factor of the transformation.

    Returns
    Type Description
    Matrix

    The created transformation matrix.


    Transformation2D(ref Vector2, Single, ref Vector2, ref Vector2, Single, ref Vector2, out Matrix)

    Creates a 2D transformation matrix.

    public static void Transformation2D(ref Vector2 scalingCenter, float scalingRotation, ref Vector2 scaling, ref Vector2 rotationCenter, float rotation, ref Vector2 translation, out Matrix result)
    Parameters
    Type Name Description
    Vector2 scalingCenter

    Center point of the scaling operation.

    System.Single scalingRotation

    Scaling rotation amount.

    Vector2 scaling

    Scaling factor.

    Vector2 rotationCenter

    The center of the rotation.

    System.Single rotation

    The rotation of the transformation.

    Vector2 translation

    The translation factor of the transformation.

    Matrix result

    When the method completes, contains the created transformation matrix.


    Translation(Vector3)

    Creates a translation matrix using the specified offsets.

    public static Matrix Translation(Vector3 value)
    Parameters
    Type Name Description
    Vector3 value

    The offset for all three coordinate planes.

    Returns
    Type Description
    Matrix

    The created translation matrix.


    Translation(ref Vector3, out Matrix)

    Creates a translation matrix using the specified offsets.

    public static void Translation(ref Vector3 value, out Matrix result)
    Parameters
    Type Name Description
    Vector3 value

    The offset for all three coordinate planes.

    Matrix result

    When the method completes, contains the created translation matrix.


    Translation(Single, Single, Single)

    Creates a translation matrix using the specified offsets.

    public static Matrix Translation(float x, float y, float z)
    Parameters
    Type Name Description
    System.Single x

    X-coordinate offset.

    System.Single y

    Y-coordinate offset.

    System.Single z

    Z-coordinate offset.

    Returns
    Type Description
    Matrix

    The created translation matrix.


    Translation(Single, Single, Single, out Matrix)

    Creates a translation matrix using the specified offsets.

    public static void Translation(float x, float y, float z, out Matrix result)
    Parameters
    Type Name Description
    System.Single x

    X-coordinate offset.

    System.Single y

    Y-coordinate offset.

    System.Single z

    Z-coordinate offset.

    Matrix result

    When the method completes, contains the created translation matrix.


    Transpose()

    Transposes the matrix.

    public void Transpose()

    Transpose(Matrix)

    Calculates the transpose of the specified matrix.

    public static Matrix Transpose(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix whose transpose is to be calculated.

    Returns
    Type Description
    Matrix

    The transpose of the specified matrix.


    Transpose(ref Matrix, out Matrix)

    Calculates the transpose of the specified matrix.

    public static void Transpose(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix whose transpose is to be calculated.

    Matrix result

    When the method completes, contains the transpose of the specified matrix.


    TransposeMatrixFrom(Single*, Int32, Int32)

    Transposes a nmx matrix to this instance.

    public void TransposeMatrixFrom(float *src, int columns, int rows)
    Parameters
    Type Name Description
    System.Single* src

    The SRC.

    System.Int32 columns

    The columns.

    System.Int32 rows

    The rows.


    UpperTriangularForm(Matrix)

    Brings the matrix into upper triangular form using elementry row operations.

    public static Matrix UpperTriangularForm(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to put into upper triangular form.

    Returns
    Type Description
    Matrix

    The upper triangular matrix.

    Remarks

    If the matrix is not invertable (i.e. its determinant is zero) than the result of this method may produce Single.Nan and Single.Inf values. When the matrix represents a system of linear equations, than this often means that either no solution exists or an infinite number of solutions exist.


    UpperTriangularForm(ref Matrix, out Matrix)

    Brings the matrix into upper triangular form using elementry row operations.

    public static void UpperTriangularForm(ref Matrix value, out Matrix result)
    Parameters
    Type Name Description
    Matrix value

    The matrix to put into upper triangular form.

    Matrix result

    When the method completes, contains the upper triangular matrix.

    Remarks

    If the matrix is not invertable (i.e. its determinant is zero) than the result of this method may produce Single.Nan and Single.Inf values. When the matrix represents a system of linear equations, than this often means that either no solution exists or an infinite number of solutions exist.

    | Improve this Doc View Source

    Operators


    Addition(Matrix, Matrix)

    Adds two matrices.

    public static Matrix operator +(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to add.

    Matrix right

    The second matrix to add.

    Returns
    Type Description
    Matrix

    The sum of the two matrices.


    Division(Matrix, Matrix)

    Divides two matrices.

    public static Matrix operator /(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to divide.

    Matrix right

    The second matrix to divide.

    Returns
    Type Description
    Matrix

    The quotient of the two matrices.


    Division(Matrix, Single)

    Scales a matrix by a given value.

    public static Matrix operator /(Matrix left, float right)
    Parameters
    Type Name Description
    Matrix left

    The matrix to scale.

    System.Single right

    The amount by which to scale.

    Returns
    Type Description
    Matrix

    The scaled matrix.


    Equality(Matrix, Matrix)

    Tests for equality between two objects.

    public static bool operator ==(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first value to compare.

    Matrix right

    The second value to compare.

    Returns
    Type Description
    System.Boolean

    true if left has the same value as right; otherwise, false.


    Inequality(Matrix, Matrix)

    Tests for inequality between two objects.

    public static bool operator !=(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first value to compare.

    Matrix right

    The second value to compare.

    Returns
    Type Description
    System.Boolean

    true if left has a different value than right; otherwise, false.


    Multiply(Matrix, Matrix)

    Multiplies two matrices.

    public static Matrix operator *(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to multiply.

    Matrix right

    The second matrix to multiply.

    Returns
    Type Description
    Matrix

    The product of the two matrices.


    Multiply(Matrix, Single)

    Scales a matrix by a given value.

    public static Matrix operator *(Matrix left, float right)
    Parameters
    Type Name Description
    Matrix left

    The matrix to scale.

    System.Single right

    The amount by which to scale.

    Returns
    Type Description
    Matrix

    The scaled matrix.


    Multiply(Single, Matrix)

    Scales a matrix by a given value.

    public static Matrix operator *(float left, Matrix right)
    Parameters
    Type Name Description
    System.Single left

    The amount by which to scale.

    Matrix right

    The matrix to scale.

    Returns
    Type Description
    Matrix

    The scaled matrix.


    Subtraction(Matrix, Matrix)

    Subtracts two matrices.

    public static Matrix operator -(Matrix left, Matrix right)
    Parameters
    Type Name Description
    Matrix left

    The first matrix to subtract.

    Matrix right

    The second matrix to subtract.

    Returns
    Type Description
    Matrix

    The difference between the two matrices.


    UnaryNegation(Matrix)

    Negates a matrix.

    public static Matrix operator -(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to negate.

    Returns
    Type Description
    Matrix

    The negated matrix.


    UnaryPlus(Matrix)

    Assert a matrix (return it unchanged).

    public static Matrix operator +(Matrix value)
    Parameters
    Type Name Description
    Matrix value

    The matrix to assert (unchange).

    Returns
    Type Description
    Matrix

    The asserted (unchanged) matrix.


    Extension Methods

    ComponentBaseExtensions.DisposeBy<T>(T, ICollectorHolder)
    ComponentBaseExtensions.RemoveDisposeBy<T>(T, ICollectorHolder)
    • Improve this Doc
    • View Source
    In This Article

    Back to top

    Copyright © 2019-2021 .NET Foundation and Contributors
    Supported by the .NET Foundation