/// <summary> /// Calculate the transpose of the given matrix /// </summary> /// <param name="mat">The matrix to transpose</param> /// <param name="result">The result of the calculation</param> public static void Transpose(ref Matrix3x4d mat, out Matrix4x3d result) { result.Row0 = mat.Column0; result.Row1 = mat.Column1; result.Row2 = mat.Column2; result.Row3 = mat.Column3; }
/// <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 Matrix3d Mult(Matrix3x4d left, Matrix4x3d right) { Matrix3d result; Mult(ref left, ref right, out result); return(result); }
/// <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 Matrix3x4d left, ref Matrix4x3d right, out Matrix3d result) { double 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, lM31 = left.Row2.X, lM32 = left.Row2.Y, lM33 = left.Row2.Z, lM34 = left.Row2.W, rM11 = right.Row0.X, rM12 = right.Row0.Y, rM13 = right.Row0.Z, rM21 = right.Row1.X, rM22 = right.Row1.Y, rM23 = right.Row1.Z, rM31 = right.Row2.X, rM32 = right.Row2.Y, rM33 = right.Row2.Z, rM41 = right.Row3.X, rM42 = right.Row3.Y, rM43 = right.Row3.Z; result.Row0.X = (lM11 * rM11) + (lM12 * rM21) + (lM13 * rM31) + (lM14 * rM41); result.Row0.Y = (lM11 * rM12) + (lM12 * rM22) + (lM13 * rM32) + (lM14 * rM42); result.Row0.Z = (lM11 * rM13) + (lM12 * rM23) + (lM13 * rM33) + (lM14 * rM43); result.Row1.X = (lM21 * rM11) + (lM22 * rM21) + (lM23 * rM31) + (lM24 * rM41); result.Row1.Y = (lM21 * rM12) + (lM22 * rM22) + (lM23 * rM32) + (lM24 * rM42); result.Row1.Z = (lM21 * rM13) + (lM22 * rM23) + (lM23 * rM33) + (lM24 * rM43); result.Row2.X = (lM31 * rM11) + (lM32 * rM21) + (lM33 * rM31) + (lM34 * rM41); result.Row2.Y = (lM31 * rM12) + (lM32 * rM22) + (lM33 * rM32) + (lM34 * rM42); result.Row2.Z = (lM31 * rM13) + (lM32 * rM23) + (lM33 * rM33) + (lM34 * rM43); }
/// <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 Matrix4x2d left, ref Matrix2x3d right, out Matrix4x3d result) { double lM11 = left.Row0.X, lM12 = left.Row0.Y, lM21 = left.Row1.X, lM22 = left.Row1.Y, lM31 = left.Row2.X, lM32 = left.Row2.Y, lM41 = left.Row3.X, lM42 = left.Row3.Y, rM11 = right.Row0.X, rM12 = right.Row0.Y, rM13 = right.Row0.Z, rM21 = right.Row1.X, rM22 = right.Row1.Y, rM23 = right.Row1.Z; result.Row0.X = (lM11 * rM11) + (lM12 * rM21); result.Row0.Y = (lM11 * rM12) + (lM12 * rM22); result.Row0.Z = (lM11 * rM13) + (lM12 * rM23); result.Row1.X = (lM21 * rM11) + (lM22 * rM21); result.Row1.Y = (lM21 * rM12) + (lM22 * rM22); result.Row1.Z = (lM21 * rM13) + (lM22 * rM23); result.Row2.X = (lM31 * rM11) + (lM32 * rM21); result.Row2.Y = (lM31 * rM12) + (lM32 * rM22); result.Row2.Z = (lM31 * rM13) + (lM32 * rM23); result.Row3.X = (lM41 * rM11) + (lM42 * rM21); result.Row3.Y = (lM41 * rM12) + (lM42 * rM22); result.Row3.Z = (lM41 * rM13) + (lM42 * rM23); }