Exemple #1
0
        public static void Write(this BinaryWriter writer, Matrix4x3 value)
        {
            writer.Write(value.M11);
            writer.Write(value.M12);
            writer.Write(value.M13);

            writer.Write(value.M21);
            writer.Write(value.M22);
            writer.Write(value.M23);

            writer.Write(value.M31);
            writer.Write(value.M32);
            writer.Write(value.M33);

            writer.Write(value.M41);
            writer.Write(value.M42);
            writer.Write(value.M43);
        }
Exemple #2
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 Matrix3x4 left, ref Matrix4x3 right, out Matrix3 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,
                  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;
        }