Generated by DocFX

Struct Matrix3x3

A structure representing 3x3 matrix.

Namespace: ISynergy.Framework.Mathematics
Assembly: ISynergy.Framework.Mathematics.dll
Syntax
public struct Matrix3x3
Remarks

The structure incapsulates elements of a 3x3 matrix and provides some operations with it.

Fields

View Source

V00

Row 0 column 0 element of the matrix.

Declaration
public float V00
Field Value
Type Description
System.Single
View Source

V01

Row 0 column 1 element of the matrix.

Declaration
public float V01
Field Value
Type Description
System.Single
View Source

V02

Row 0 column 2 element of the matrix.

Declaration
public float V02
Field Value
Type Description
System.Single
View Source

V10

Row 1 column 0 element of the matrix.

Declaration
public float V10
Field Value
Type Description
System.Single
View Source

V11

Row 1 column 1 element of the matrix.

Declaration
public float V11
Field Value
Type Description
System.Single
View Source

V12

Row 1 column 2 element of the matrix.

Declaration
public float V12
Field Value
Type Description
System.Single
View Source

V20

Row 2 column 0 element of the matrix.

Declaration
public float V20
Field Value
Type Description
System.Single
View Source

V21

Row 2 column 1 element of the matrix.

Declaration
public float V21
Field Value
Type Description
System.Single
View Source

V22

Row 2 column 2 element of the matrix.

Declaration
public float V22
Field Value
Type Description
System.Single

Properties

View Source

Determinant

Calculates determinant of the matrix.

Declaration
public readonly float Determinant { get; }
Property Value
Type Description
System.Single
View Source

Identity

Provides an identity matrix with all diagonal elements set to 1.

Declaration
public static readonly Matrix3x3 Identity { get; }
Property Value
Type Description
Matrix3x3

Methods

View Source

Add(Matrix3x3, Matrix3x3)

Adds corresponding components of two matrices.

Declaration
public static Matrix3x3 Add(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

The matrix to add to.

Matrix3x3 matrix2

The matrix to add to the first matrix.

Returns
Type Description
Matrix3x3

Returns a matrix which components are equal to sum of corresponding components of the two specified matrices.

View Source

Add(Matrix3x3, Single)

Adds specified value to all components of the specified matrix.

Declaration
public static Matrix3x3 Add(Matrix3x3 matrix, float value)
Parameters
Type Name Description
Matrix3x3 matrix

Matrix to add value to.

System.Single value

Value to add to all components of the specified matrix.

Returns
Type Description
Matrix3x3

Returns new matrix with all components equal to corresponding components of the specified matrix increased by the specified value.

View Source

Adjugate()

Calculate adjugate of the matrix, adj(A).

Declaration
public Matrix3x3 Adjugate()
Returns
Type Description
Matrix3x3

Returns adjugate of the matrix.

View Source

CreateDiagonal(Vector3)

Creates a diagonal matrix using the specified vector as diagonal elements.

Declaration
public static Matrix3x3 CreateDiagonal(Vector3 vector)
Parameters
Type Name Description
Vector3 vector

Vector to use for diagonal elements of the matrix.

Returns
Type Description
Matrix3x3

Returns a diagonal matrix.

View Source

CreateFromColumns(Vector3, Vector3, Vector3)

Creates a matrix from 3 columns specified as vectors.

Declaration
public static Matrix3x3 CreateFromColumns(Vector3 column0, Vector3 column1, Vector3 column2)
Parameters
Type Name Description
Vector3 column0

First column of the matrix to create.

Vector3 column1

Second column of the matrix to create.

Vector3 column2

Third column of the matrix to create.

Returns
Type Description
Matrix3x3

Returns a matrix from specified columns.

View Source

CreateFromRows(Vector3, Vector3, Vector3)

Creates a matrix from 3 rows specified as vectors.

Declaration
public static Matrix3x3 CreateFromRows(Vector3 row0, Vector3 row1, Vector3 row2)
Parameters
Type Name Description
Vector3 row0

First row of the matrix to create.

Vector3 row1

Second row of the matrix to create.

Vector3 row2

Third row of the matrix to create.

Returns
Type Description
Matrix3x3

Returns a matrix from specified rows.

View Source

CreateFromYawPitchRoll(Single, Single, Single)

Creates rotation matrix to rotate an object around X, Y and Z axes.

Declaration
public static Matrix3x3 CreateFromYawPitchRoll(float yaw, float pitch, float roll)
Parameters
Type Name Description
System.Single yaw

Rotation angle around Y axis in radians.

System.Single pitch

Rotation angle around X axis in radians.

System.Single roll

Rotation angle around Z axis in radians.

Returns
Type Description
Matrix3x3

Returns rotation matrix to rotate an object around all 3 axes.

Remarks

note

The routine assumes roll-pitch-yaw rotation order, when creating rotation matrix, i.e. an object is first rotated around Z axis, then around X axis and finally around Y axis.

View Source

CreateRotationX(Single)

Creates rotation matrix around X axis.

Declaration
public static Matrix3x3 CreateRotationX(float radians)
Parameters
Type Name Description
System.Single radians

Rotation angle around X axis in radians.

Returns
Type Description
Matrix3x3

Returns rotation matrix to rotate an object around X axis.

View Source

CreateRotationY(Single)

Creates rotation matrix around Y axis.

Declaration
public static Matrix3x3 CreateRotationY(float radians)
Parameters
Type Name Description
System.Single radians

Rotation angle around Y axis in radians.

Returns
Type Description
Matrix3x3

Returns rotation matrix to rotate an object around Y axis.

View Source

CreateRotationZ(Single)

Creates rotation matrix around Z axis.

Declaration
public static Matrix3x3 CreateRotationZ(float radians)
Parameters
Type Name Description
System.Single radians

Rotation angle around Z axis in radians.

Returns
Type Description
Matrix3x3

Returns rotation matrix to rotate an object around Z axis.

View Source

Equals(Matrix3x3)

Tests whether the matrix equals to the specified one.

Declaration
public bool Equals(Matrix3x3 matrix)
Parameters
Type Name Description
Matrix3x3 matrix

The matrix to test equality with.

Returns
Type Description
System.Boolean

Returns true if the two matrices are equal or false otherwise.

View Source

Equals(Object)

Tests whether the matrix equals to the specified object.

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

The object to test equality with.

Returns
Type Description
System.Boolean

Returns true if the matrix equals to the specified object or false otherwise.

View Source

ExtractYawPitchRoll(out Single, out Single, out Single)

Extract rotation angles from the rotation matrix.

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

Extracted rotation angle around Y axis in radians.

System.Single pitch

Extracted rotation angle around X axis in radians.

System.Single roll

Extracted rotation angle around Z axis in radians.

Remarks

note

The routine assumes roll-pitch-yaw rotation order when extracting rotation angle. Using extracted angles with the CreateFromYawPitchRoll(Single, Single, Single) should provide same rotation matrix.

note

The method assumes the provided matrix represent valid rotation matrix.

Sample usage:

// assume we have a rotation matrix created like this
float yaw   = 10.0f / 180 * Math.PI;
float pitch = 30.0f / 180 * Math.PI;
float roll  = 45.0f / 180 * Math.PI;

Matrix3x3 rotationMatrix = Matrix3x3.CreateFromYawPitchRoll( yaw, pitch, roll ); // ...

// now somewhere in the code you may want to get rotation // angles back from a matrix assuming same rotation order float extractedYaw; float extractedPitch; float extractedRoll;

rotation.ExtractYawPitchRoll( out extractedYaw, out extractedPitch, out extractedRoll );

View Source

GetColumn(Int32)

Get column of the matrix.

Declaration
public Vector3 GetColumn(int index)
Parameters
Type Name Description
System.Int32 index

Column index to get, [0, 2].

Returns
Type Description
Vector3

Returns specified column of the matrix as a vector.

View Source

GetHashCode()

Returns the hashcode for this instance.

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

A 32-bit signed integer hash code.

View Source

GetRow(Int32)

Get row of the matrix.

Declaration
public Vector3 GetRow(int index)
Parameters
Type Name Description
System.Int32 index

Row index to get, [0, 2].

Returns
Type Description
Vector3

Returns specified row of the matrix as a vector.

View Source

Inverse()

Calculate inverse of the matrix, A-1.

Declaration
public Matrix3x3 Inverse()
Returns
Type Description
Matrix3x3

Returns inverse of the matrix.

View Source

Multiply(Matrix3x3, Matrix3x3)

Multiplies two specified matrices.

Declaration
public static Matrix3x3 Multiply(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

Matrix to multiply.

Matrix3x3 matrix2

Matrix to multiply by.

Returns
Type Description
Matrix3x3

Return new matrix, which the result of multiplication of the two specified matrices.

View Source

Multiply(Matrix3x3, Vector3)

Multiplies specified matrix by the specified vector.

Declaration
public static Vector3 Multiply(Matrix3x3 matrix, Vector3 vector)
Parameters
Type Name Description
Matrix3x3 matrix

Matrix to multiply by vector.

Vector3 vector

Vector to multiply matrix by.

Returns
Type Description
Vector3

Returns new vector which is the result of multiplication of the specified matrix by the specified vector.

View Source

Multiply(Matrix3x3, Single)

Multiplies matrix by the specified factor.

Declaration
public static Matrix3x3 Multiply(Matrix3x3 matrix, float factor)
Parameters
Type Name Description
Matrix3x3 matrix

Matrix to multiply.

System.Single factor

Factor to multiple the specified matrix by.

Returns
Type Description
Matrix3x3

Returns new matrix with all components equal to corresponding components of the specified matrix multiples by the specified factor.

View Source

MultiplySelfByTranspose()

Multiply the matrix by its transposition, A*AT.

Declaration
public Matrix3x3 MultiplySelfByTranspose()
Returns
Type Description
Matrix3x3

Returns a matrix which is the result of multiplying this matrix by its transposition.

View Source

MultiplyTransposeBySelf()

Multiply transposition of this matrix by itself, AT*A.

Declaration
public Matrix3x3 MultiplyTransposeBySelf()
Returns
Type Description
Matrix3x3

Returns a matrix which is the result of multiplying this matrix's transposition by itself.

View Source

PseudoInverse()

Calculate pseudo inverse of the matrix, A+.

Declaration
public Matrix3x3 PseudoInverse()
Returns
Type Description
Matrix3x3

Returns pseudo inverse of the matrix.

Remarks

The pseudo inverse of the matrix is calculate through its SVD(out Matrix3x3, out Vector3, out Matrix3x3) as V*E+*UT.

View Source

Subtract(Matrix3x3, Matrix3x3)

Subtracts corresponding components of two matrices.

Declaration
public static Matrix3x3 Subtract(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

The matrix to subtract from.

Matrix3x3 matrix2

The matrix to subtract from the first matrix.

Returns
Type Description
Matrix3x3

Returns a matrix which components are equal to difference of corresponding components of the two specified matrices.

View Source

SVD(out Matrix3x3, out Vector3, out Matrix3x3)

Calculate Singular Value Decomposition (SVD) of the matrix, such as A=UEVT.

Declaration
public void SVD(out Matrix3x3 u, out Vector3 e, out Matrix3x3 v)
Parameters
Type Name Description
Matrix3x3 u

Output parameter which gets 3x3 U matrix.

Vector3 e

Output parameter which gets diagonal elements of the E matrix.

Matrix3x3 v

Output parameter which gets 3x3 V matrix.

Remarks

Having components U, E and V the source matrix can be reproduced using below code:

Matrix3x3 source = u * Matrix3x3.Diagonal( e ) * v.Transpose( );

View Source

ToArray()

Returns array representation of the matrix.

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

Returns array which contains all elements of the matrix in the row-major order.

View Source

Transpose()

Transpose the matrix, AT.

Declaration
public Matrix3x3 Transpose()
Returns
Type Description
Matrix3x3

Return a matrix which equals to transposition of this matrix.

Operators

View Source

Addition(Matrix3x3, Matrix3x3)

Adds corresponding components of two matrices.

Declaration
public static Matrix3x3 operator +(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

The matrix to add to.

Matrix3x3 matrix2

The matrix to add to the first matrix.

Returns
Type Description
Matrix3x3

Returns a matrix which components are equal to sum of corresponding components of the two specified matrices.

View Source

Addition(Matrix3x3, Single)

Adds specified value to all components of the specified matrix.

Declaration
public static Matrix3x3 operator +(Matrix3x3 matrix, float value)
Parameters
Type Name Description
Matrix3x3 matrix

Matrix to add value to.

System.Single value

Value to add to all components of the specified matrix.

Returns
Type Description
Matrix3x3

Returns new matrix with all components equal to corresponding components of the specified matrix increased by the specified value.

View Source

Equality(Matrix3x3, Matrix3x3)

Tests whether two specified matrices are equal.

Declaration
public static bool operator ==(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

The left-hand matrix.

Matrix3x3 matrix2

The right-hand matrix.

Returns
Type Description
System.Boolean

Returns true if the two matrices are equal or false otherwise.

View Source

Inequality(Matrix3x3, Matrix3x3)

Tests whether two specified matrices are not equal.

Declaration
public static bool operator !=(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

The left-hand matrix.

Matrix3x3 matrix2

The right-hand matrix.

Returns
Type Description
System.Boolean

Returns true if the two matrices are not equal or false otherwise.

View Source

Multiply(Matrix3x3, Matrix3x3)

Multiplies two specified matrices.

Declaration
public static Matrix3x3 operator *(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

Matrix to multiply.

Matrix3x3 matrix2

Matrix to multiply by.

Returns
Type Description
Matrix3x3

Return new matrix, which the result of multiplication of the two specified matrices.

View Source

Multiply(Matrix3x3, Vector3)

Multiplies specified matrix by the specified vector.

Declaration
public static Vector3 operator *(Matrix3x3 matrix, Vector3 vector)
Parameters
Type Name Description
Matrix3x3 matrix

Matrix to multiply by vector.

Vector3 vector

Vector to multiply matrix by.

Returns
Type Description
Vector3

Returns new vector which is the result of multiplication of the specified matrix by the specified vector.

View Source

Multiply(Matrix3x3, Single)

Multiplies matrix by the specified factor.

Declaration
public static Matrix3x3 operator *(Matrix3x3 matrix, float factor)
Parameters
Type Name Description
Matrix3x3 matrix

Matrix to multiply.

System.Single factor

Factor to multiple the specified matrix by.

Returns
Type Description
Matrix3x3

Returns new matrix with all components equal to corresponding components of the specified matrix multiples by the specified factor.

View Source

Subtraction(Matrix3x3, Matrix3x3)

Subtracts corresponding components of two matrices.

Declaration
public static Matrix3x3 operator -(Matrix3x3 matrix1, Matrix3x3 matrix2)
Parameters
Type Name Description
Matrix3x3 matrix1

The matrix to subtract from.

Matrix3x3 matrix2

The matrix to subtract from the first matrix.

Returns
Type Description
Matrix3x3

Returns a matrix which components are equal to difference of corresponding components of the two specified matrices.

Extension Methods

EnumExtensions.GetSymbol<T>(T)
ArrayExtensions.Concatenate<T>(T, T[])
CollectionExtensions.FromHierarchy<TSource>(TSource, Func<TSource, TSource>, Func<TSource, Boolean>)
ObjectExtensions.Clone<T>(T)
ObjectExtensions.AddressOf<T>(T)
ObjectExtensions.ToByteArray<T>(T)
ReflectionExtensions.GetPropertyInfo<T, TValue>(T, Expression<Func<T, TValue>>)