/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat2(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m10 = m.m10; this.m11 = m.m11; }
/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat3x2(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m10 = m.m10; this.m11 = m.m11; this.m20 = m.m20; this.m21 = m.m21; }
/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat2x3(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m02 = m.m02; this.m10 = m.m10; this.m11 = m.m11; this.m12 = m.m12; }
/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat4x2(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m10 = m.m10; this.m11 = m.m11; this.m20 = m.m20; this.m21 = m.m21; this.m30 = 0m; this.m31 = 0m; }
/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat2x4(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m02 = m.m02; this.m03 = 0m; this.m10 = m.m10; this.m11 = m.m11; this.m12 = m.m12; this.m13 = 0m; }
/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat3(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m02 = m.m02; this.m10 = m.m10; this.m11 = m.m11; this.m12 = m.m12; this.m20 = m.m20; this.m21 = m.m21; this.m22 = m.m22; }
/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat3x4(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m02 = m.m02; this.m03 = 0m; this.m10 = m.m10; this.m11 = m.m11; this.m12 = m.m12; this.m13 = 0m; this.m20 = m.m20; this.m21 = m.m21; this.m22 = m.m22; this.m23 = 0m; }
/// <summary> /// Constructs this matrix from a decmat3. Non-overwritten fields are from an Identity matrix. /// </summary> public decmat4x3(decmat3 m) { this.m00 = m.m00; this.m01 = m.m01; this.m02 = m.m02; this.m10 = m.m10; this.m11 = m.m11; this.m12 = m.m12; this.m20 = m.m20; this.m21 = m.m21; this.m22 = m.m22; this.m30 = 0m; this.m31 = 0m; this.m32 = 0m; }
/// <summary> /// Creates a quaternion from the rotational part of a decmat4. /// </summary> public static decquat FromMat3(decmat3 m) { var fourXSquaredMinus1 = m.m00 - m.m11 - m.m22; var fourYSquaredMinus1 = m.m11 - m.m00 - m.m22; var fourZSquaredMinus1 = m.m22 - m.m00 - m.m11; var fourWSquaredMinus1 = m.m00 + m.m11 + m.m22; var biggestIndex = 0; var fourBiggestSquaredMinus1 = fourWSquaredMinus1; if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) { fourBiggestSquaredMinus1 = fourXSquaredMinus1; biggestIndex = 1; } if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) { fourBiggestSquaredMinus1 = fourYSquaredMinus1; biggestIndex = 2; } if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) { fourBiggestSquaredMinus1 = fourZSquaredMinus1; biggestIndex = 3; } var biggestVal = Math.Sqrt((double)fourBiggestSquaredMinus1 + 1.0) * 0.5; var mult = 0.25 / biggestVal; switch (biggestIndex) { case 0: return(new decquat((decimal)((double)(m.m12 - m.m21) * mult), (decimal)((double)(m.m20 - m.m02) * mult), (decimal)((double)(m.m01 - m.m10) * mult), (decimal)(biggestVal))); case 1: return(new decquat((decimal)(biggestVal), (decimal)((double)(m.m01 + m.m10) * mult), (decimal)((double)(m.m20 + m.m02) * mult), (decimal)((double)(m.m12 - m.m21) * mult))); case 2: return(new decquat((decimal)((double)(m.m01 + m.m10) * mult), (decimal)(biggestVal), (decimal)((double)(m.m12 + m.m21) * mult), (decimal)((double)(m.m20 - m.m02) * mult))); default: return(new decquat((decimal)((double)(m.m20 + m.m02) * mult), (decimal)((double)(m.m12 + m.m21) * mult), (decimal)(biggestVal), (decimal)((double)(m.m01 - m.m10) * mult))); } }
/// <summary> /// Returns an enumerator that iterates through all fields. /// </summary> public static IEnumerator <decimal> GetEnumerator(decmat3 m) => m.GetEnumerator();
/// <summary> /// Creates a quaternion from the rotational part of this matrix. /// </summary> public static decquat ToQuaternion(decmat3 m) => m.ToQuaternion;
/// <summary> /// Creates a 1D array with all values (internal order) /// </summary> public static decimal[] Values1D(decmat3 m) => m.Values1D;
/// <summary> /// Creates a 2D array with all values (address: Values[x, y]) /// </summary> public static decimal[,] Values(decmat3 m) => m.Values;
/// <summary> /// Executes a component-wise * (multiply). /// </summary> public static decmat3 CompMul(decmat3 A, decmat3 B) => new decmat3(A.m00 * B.m00, A.m01 * B.m01, A.m02 * B.m02, A.m10 * B.m10, A.m11 * B.m11, A.m12 * B.m12, A.m20 * B.m20, A.m21 * B.m21, A.m22 * B.m22);
/// <summary> /// Returns true iff this equals rhs component-wise. /// </summary> public bool Equals(decmat3 rhs) => ((((m00.Equals(rhs.m00) && m01.Equals(rhs.m01)) && m02.Equals(rhs.m02)) && (m10.Equals(rhs.m10) && m11.Equals(rhs.m11))) && ((m12.Equals(rhs.m12) && m20.Equals(rhs.m20)) && (m21.Equals(rhs.m21) && m22.Equals(rhs.m22))));
/// <summary> /// Creates a quaternion from the rotational part of a decmat3. /// </summary> public decquat(decmat3 m) : this(FromMat3(m)) { }
/// <summary> /// Executes a component-wise / (divide). /// </summary> public static decmat3 CompDiv(decmat3 A, decmat3 B) => new decmat3(A.m00 / B.m00, A.m01 / B.m01, A.m02 / B.m02, A.m10 / B.m10, A.m11 / B.m11, A.m12 / B.m12, A.m20 / B.m20, A.m21 / B.m21, A.m22 / B.m22);
/// <summary> /// Executes a component-wise - (subtract). /// </summary> public static decmat3 CompSub(decmat3 A, decmat3 B) => new decmat3(A.m00 - B.m00, A.m01 - B.m01, A.m02 - B.m02, A.m10 - B.m10, A.m11 - B.m11, A.m12 - B.m12, A.m20 - B.m20, A.m21 - B.m21, A.m22 - B.m22);
/// <summary> /// Executes a component-wise + (add). /// </summary> public static decmat3 CompAdd(decmat3 A, decmat3 B) => new decmat3(A.m00 + B.m00, A.m01 + B.m01, A.m02 + B.m02, A.m10 + B.m10, A.m11 + B.m11, A.m12 + B.m12, A.m20 + B.m20, A.m21 + B.m21, A.m22 + B.m22);