transform4 method

void transform4 (Float32List out, int outOffset, Float32List matrix, int matrixOffset, Float32List vector, int vectorOffset)

Transform the 4D vector starting at vectorOffset by the 4x4 matrix starting at matrixOffset. Store result in out starting at outOffset.

Implementation

static void transform4(Float32List out, int outOffset, Float32List matrix,
    int matrixOffset, Float32List vector, int vectorOffset) {
  final double x = vector[vectorOffset++];
  final double y = vector[vectorOffset++];
  final double z = vector[vectorOffset++];
  final double w = vector[vectorOffset++];
  final double m0 = matrix[matrixOffset];
  final double m4 = matrix[4 + matrixOffset];
  final double m8 = matrix[8 + matrixOffset];
  final double m12 = matrix[12 + matrixOffset];
  out[outOffset++] = (m0 * x + m4 * y + m8 * z + m12 * w);
  final double m1 = matrix[1 + matrixOffset];
  final double m5 = matrix[5 + matrixOffset];
  final double m9 = matrix[9 + matrixOffset];
  final double m13 = matrix[13 + matrixOffset];
  out[outOffset++] = (m1 * x + m5 * y + m9 * z + m13 * w);
  final double m2 = matrix[2 + matrixOffset];
  final double m6 = matrix[6 + matrixOffset];
  final double m10 = matrix[10 + matrixOffset];
  final double m14 = matrix[14 + matrixOffset];
  out[outOffset++] = (m2 * x + m6 * y + m10 * z + m14 * w);
  final double m3 = matrix[3 + matrixOffset];
  final double m7 = matrix[7 + matrixOffset];
  final double m11 = matrix[11 + matrixOffset];
  final double m15 = matrix[15 + matrixOffset];
  out[outOffset++] = (m3 * x + m7 * y + m11 * z + m15 * w);
}