Table of Contents

Struct JSymmetricMatrix

Namespace
Jitter2.LinearMath
Assembly
Jitter2.dll

Represents a symmetric 3x3 matrix using six components of type float.

public struct JSymmetricMatrix : IEquatable<JSymmetricMatrix>
Implements
Inherited Members

Remarks

Only the upper triangle is stored. The lower-triangle properties access the same components.

Constructors

JSymmetricMatrix(float, float, float, float, float, float)

Represents a symmetric 3x3 matrix using six components of type float.

public JSymmetricMatrix(float m11, float m12, float m13, float m22, float m23, float m33)

Parameters

m11 float
m12 float
m13 float
m22 float
m23 float
m33 float

Remarks

Only the upper triangle is stored. The lower-triangle properties access the same components.

Fields

Identity

The identity matrix.

public static readonly JSymmetricMatrix Identity

Field Value

JSymmetricMatrix

M11

public float M11

Field Value

float

M12

public float M12

Field Value

float

M13

public float M13

Field Value

float

M22

public float M22

Field Value

float

M23

public float M23

Field Value

float

M33

public float M33

Field Value

float

Zero

The zero matrix.

public static readonly JSymmetricMatrix Zero

Field Value

JSymmetricMatrix

Properties

M21

The component shared with M12.

public float M21 { readonly get; set; }

Property Value

float

M31

The component shared with M13.

public float M31 { readonly get; set; }

Property Value

float

M32

The component shared with M23.

public float M32 { readonly get; set; }

Property Value

float

Methods

Add(in JSymmetricMatrix, in JSymmetricMatrix)

Adds two matrices component-wise.

public static JSymmetricMatrix Add(in JSymmetricMatrix matrix1, in JSymmetricMatrix matrix2)

Parameters

matrix1 JSymmetricMatrix
matrix2 JSymmetricMatrix

Returns

JSymmetricMatrix

Add(in JSymmetricMatrix, in JSymmetricMatrix, out JSymmetricMatrix)

Adds two matrices component-wise.

public static void Add(in JSymmetricMatrix matrix1, in JSymmetricMatrix matrix2, out JSymmetricMatrix result)

Parameters

matrix1 JSymmetricMatrix
matrix2 JSymmetricMatrix
result JSymmetricMatrix

CreateScale(in JVector)

Creates a diagonal scaling matrix.

public static JSymmetricMatrix CreateScale(in JVector scale)

Parameters

scale JVector

Returns

JSymmetricMatrix

CreateScale(float, float, float)

Creates a diagonal scaling matrix.

public static JSymmetricMatrix CreateScale(float x, float y, float z)

Parameters

x float
y float
z float

Returns

JSymmetricMatrix

Determinant()

Calculates the determinant of the matrix.

public readonly float Determinant()

Returns

float

Equals(JSymmetricMatrix)

Indicates whether the current object is equal to another object of the same type.

public readonly bool Equals(JSymmetricMatrix other)

Parameters

other JSymmetricMatrix

An object to compare with this object.

Returns

bool

true if the current object is equal to the other parameter; otherwise, false.

Equals(object?)

Indicates whether this instance and a specified object are equal.

public override readonly bool Equals(object? obj)

Parameters

obj object

The object to compare with the current instance.

Returns

bool

true if obj and this instance are the same type and represent the same value; otherwise, false.

GetHashCode()

Returns the hash code for this instance.

public override readonly int GetHashCode()

Returns

int

A 32-bit signed integer that is the hash code for this instance.

Inverse(in JSymmetricMatrix, out JSymmetricMatrix)

Calculates the inverse of a symmetric matrix.

public static bool Inverse(in JSymmetricMatrix matrix, out JSymmetricMatrix result)

Parameters

matrix JSymmetricMatrix

The matrix to invert.

result JSymmetricMatrix

Output: The inverse, or zero if inversion fails.

Returns

bool

true if a finite inverse can be computed; otherwise, false, matching Inverse(in JMatrix, out JMatrix).

Multiply(in JSymmetricMatrix, float)

Multiplies a matrix by a scalar factor.

public static JSymmetricMatrix Multiply(in JSymmetricMatrix matrix, float scaleFactor)

Parameters

matrix JSymmetricMatrix
scaleFactor float

Returns

JSymmetricMatrix

Multiply(in JSymmetricMatrix, float, out JSymmetricMatrix)

Multiplies a matrix by a scalar factor.

public static void Multiply(in JSymmetricMatrix matrix, float scaleFactor, out JSymmetricMatrix result)

Parameters

matrix JSymmetricMatrix
scaleFactor float
result JSymmetricMatrix

Outer(in JVector)

Calculates the symmetric outer product vector * vectorᵀ.

public static JSymmetricMatrix Outer(in JVector vector)

Parameters

vector JVector

Returns

JSymmetricMatrix

Subtract(in JSymmetricMatrix, in JSymmetricMatrix)

Subtracts the second matrix from the first component-wise.

public static JSymmetricMatrix Subtract(in JSymmetricMatrix matrix1, in JSymmetricMatrix matrix2)

Parameters

matrix1 JSymmetricMatrix
matrix2 JSymmetricMatrix

Returns

JSymmetricMatrix

Subtract(in JSymmetricMatrix, in JSymmetricMatrix, out JSymmetricMatrix)

Subtracts the second matrix from the first component-wise.

public static void Subtract(in JSymmetricMatrix matrix1, in JSymmetricMatrix matrix2, out JSymmetricMatrix result)

Parameters

matrix1 JSymmetricMatrix
matrix2 JSymmetricMatrix
result JSymmetricMatrix

ToMatrix()

Expands the matrix into a full 3x3 matrix.

public readonly JMatrix ToMatrix()

Returns

JMatrix

ToString()

Returns the fully qualified type name of this instance.

public override readonly string ToString()

Returns

string

The fully qualified type name.

Trace()

Calculates the trace (sum of diagonal components).

public readonly float Trace()

Returns

float

Transform(in JSymmetricMatrix, in JMatrix)

Calculates transform * matrix * transformᵀ.

public static JSymmetricMatrix Transform(in JSymmetricMatrix matrix, in JMatrix transform)

Parameters

matrix JSymmetricMatrix
transform JMatrix

Returns

JSymmetricMatrix

Remarks

Computes only the six independent components. A rotation transforms an inertia tensor into the rotated frame; general transforms are supported as well.

Transform(in JSymmetricMatrix, in JMatrix, out JSymmetricMatrix)

Calculates transform * matrix * transformᵀ.

public static void Transform(in JSymmetricMatrix matrix, in JMatrix transform, out JSymmetricMatrix result)

Parameters

matrix JSymmetricMatrix
transform JMatrix
result JSymmetricMatrix

Operators

operator +(in JSymmetricMatrix, in JSymmetricMatrix)

Adds two matrices.

public static JSymmetricMatrix operator +(in JSymmetricMatrix matrix1, in JSymmetricMatrix matrix2)

Parameters

matrix1 JSymmetricMatrix
matrix2 JSymmetricMatrix

Returns

JSymmetricMatrix

operator ==(JSymmetricMatrix, JSymmetricMatrix)

public static bool operator ==(JSymmetricMatrix left, JSymmetricMatrix right)

Parameters

left JSymmetricMatrix
right JSymmetricMatrix

Returns

bool

explicit operator JMatrix(in JSymmetricMatrix)

Expands the symmetric matrix into a full matrix.

public static explicit operator JMatrix(in JSymmetricMatrix matrix)

Parameters

matrix JSymmetricMatrix

Returns

JMatrix

operator !=(JSymmetricMatrix, JSymmetricMatrix)

public static bool operator !=(JSymmetricMatrix left, JSymmetricMatrix right)

Parameters

left JSymmetricMatrix
right JSymmetricMatrix

Returns

bool

operator *(in JSymmetricMatrix, float)

Scales a matrix by a factor.

public static JSymmetricMatrix operator *(in JSymmetricMatrix matrix, float factor)

Parameters

matrix JSymmetricMatrix
factor float

Returns

JSymmetricMatrix

operator *(float, in JSymmetricMatrix)

Scales a matrix by a factor.

public static JSymmetricMatrix operator *(float factor, in JSymmetricMatrix matrix)

Parameters

factor float
matrix JSymmetricMatrix

Returns

JSymmetricMatrix

operator -(in JSymmetricMatrix, in JSymmetricMatrix)

Subtracts the second matrix from the first.

public static JSymmetricMatrix operator -(in JSymmetricMatrix matrix1, in JSymmetricMatrix matrix2)

Parameters

matrix1 JSymmetricMatrix
matrix2 JSymmetricMatrix

Returns

JSymmetricMatrix