/// <summary> /// Multiplies two instances. /// </summary> /// <param name="left">The left operand of the multiplication.</param> /// <param name="right">The right operand of the multiplication.</param> /// <returns>A new instance that is the result of the multiplication.</returns> public static Matrix2 Mult(Matrix2x4 left, Matrix4x2 right) { Matrix2 result; Mult(ref left, ref right, out result); return(result); }
/// <summary> /// Calculate the transpose of the given matrix. /// </summary> /// <param name="mat">The matrix to transpose.</param> /// <param name="result">The transpose of the given matrix.</param> public static void Transpose(ref Matrix2x4 mat, out Matrix4x2 result) { result.Row0.X = mat.Row0.X; result.Row0.Y = mat.Row1.X; result.Row1.X = mat.Row0.Y; result.Row1.Y = mat.Row1.Y; result.Row2.X = mat.Row0.Z; result.Row2.Y = mat.Row1.Z; result.Row3.X = mat.Row0.W; result.Row3.Y = mat.Row1.W; }
/// <summary> /// Multiplies two instances. /// </summary> /// <param name="left">The left operand of the multiplication.</param> /// <param name="right">The right operand of the multiplication.</param> /// <param name="result">A new instance that is the result of the multiplication.</param> public static void Mult(ref Matrix2x4 left, ref Matrix4x2 right, out Matrix2 result) { float lM11 = left.Row0.X, lM12 = left.Row0.Y, lM13 = left.Row0.Z, lM14 = left.Row0.W, lM21 = left.Row1.X, lM22 = left.Row1.Y, lM23 = left.Row1.Z, lM24 = left.Row1.W, rM11 = right.Row0.X, rM12 = right.Row0.Y, rM21 = right.Row1.X, rM22 = right.Row1.Y, rM31 = right.Row2.X, rM32 = right.Row2.Y, rM41 = right.Row3.X, rM42 = right.Row3.Y; result.Row0.X = (((lM11 * rM11) + (lM12 * rM21)) + (lM13 * rM31)) + (lM14 * rM41); result.Row0.Y = (((lM11 * rM12) + (lM12 * rM22)) + (lM13 * rM32)) + (lM14 * rM42); result.Row1.X = (((lM21 * rM11) + (lM22 * rM21)) + (lM23 * rM31)) + (lM24 * rM41); result.Row1.Y = (((lM21 * rM12) + (lM22 * rM22)) + (lM23 * rM32)) + (lM24 * rM42); }