Exemple #1
0
        /// <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 Matrix3x2d left, ref Matrix2x4d right, out Matrix3x4d 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,
                   rM11 = right.Row0.X, rM12 = right.Row0.Y, rM13 = right.Row0.Z, rM14 = right.Row0.W,
                   rM21 = right.Row1.X, rM22 = right.Row1.Y, rM23 = right.Row1.Z, rM24 = right.Row1.W;

            result.Row0.X = (lM11 * rM11) + (lM12 * rM21);
            result.Row0.Y = (lM11 * rM12) + (lM12 * rM22);
            result.Row0.Z = (lM11 * rM13) + (lM12 * rM23);
            result.Row0.W = (lM11 * rM14) + (lM12 * rM24);
            result.Row1.X = (lM21 * rM11) + (lM22 * rM21);
            result.Row1.Y = (lM21 * rM12) + (lM22 * rM22);
            result.Row1.Z = (lM21 * rM13) + (lM22 * rM23);
            result.Row1.W = (lM21 * rM14) + (lM22 * rM24);
            result.Row2.X = (lM31 * rM11) + (lM32 * rM21);
            result.Row2.Y = (lM31 * rM12) + (lM32 * rM22);
            result.Row2.Z = (lM31 * rM13) + (lM32 * rM23);
            result.Row2.W = (lM31 * rM14) + (lM32 * rM24);
        }
Exemple #2
0
 /// <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 Matrix4x3d mat, out Matrix3x4d result)
 {
     result.Row0 = mat.Column0;
     result.Row1 = mat.Column1;
     result.Row2 = mat.Column2;
 }
Exemple #3
0
 /// <summary>
 /// This isn't quite a multiply, but the result may be useful in some situations.
 /// 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 Matrix4d Mult(Matrix4x3d left, Matrix3x4d right)
 {
     Mult(ref left, ref right, out Matrix4d result);
     return(result);
 }