mmult method

Mat3 mmult(
  1. Mat3 matrix, [
  2. Mat3? target
])

Matrix multiplication @param matrix Matrix to multiply with from left side.

Implementation

Mat3 mmult(Mat3 matrix, [Mat3? target]) {
  target ??= Mat3();
  final A = elements;
  final B = matrix.elements;
  final T = target.elements;

  final a11 = A[0],
    a12 = A[1],
    a13 = A[2],
    a21 = A[3],
    a22 = A[4],
    a23 = A[5],
    a31 = A[6],
    a32 = A[7],
    a33 = A[8];

  final b11 = B[0],
    b12 = B[1],
    b13 = B[2],
    b21 = B[3],
    b22 = B[4],
    b23 = B[5],
    b31 = B[6],
    b32 = B[7],
    b33 = B[8];

  T[0] = a11 * b11 + a12 * b21 + a13 * b31;
  T[1] = a11 * b12 + a12 * b22 + a13 * b32;
  T[2] = a11 * b13 + a12 * b23 + a13 * b33;

  T[3] = a21 * b11 + a22 * b21 + a23 * b31;
  T[4] = a21 * b12 + a22 * b22 + a23 * b32;
  T[5] = a21 * b13 + a22 * b23 + a23 * b33;

  T[6] = a31 * b11 + a32 * b21 + a33 * b31;
  T[7] = a31 * b12 + a32 * b22 + a33 * b32;
  T[8] = a31 * b13 + a32 * b23 + a33 * b33;

  return target;
}