transpose function

List<double> transpose(
  1. List<double> out,
  2. List<double> a
)

Transpose the values of a mat4

@param {mat4} out the receiving matrix @param {ReadonlyMat4} a the source matrix @returns {mat4} out

Implementation

List<double> transpose(List<double> out, List<double> a) {
  // If we are transposing ourselves we can skip a few steps but have to cache some values
  if (out == a) {
    final a01 = a[1], a02 = a[2], a03 = a[3];
    final a12 = a[6], a13 = a[7];
    final a23 = a[11];

    out[1] = a[4];
    out[2] = a[8];
    out[3] = a[12];
    out[4] = a01;
    out[6] = a[9];
    out[7] = a[13];
    out[8] = a02;
    out[9] = a12;
    out[11] = a[14];
    out[12] = a03;
    out[13] = a13;
    out[14] = a23;
  } else {
    out[0] = a[0];
    out[1] = a[4];
    out[2] = a[8];
    out[3] = a[12];
    out[4] = a[1];
    out[5] = a[5];
    out[6] = a[9];
    out[7] = a[13];
    out[8] = a[2];
    out[9] = a[6];
    out[10] = a[10];
    out[11] = a[14];
    out[12] = a[3];
    out[13] = a[7];
    out[14] = a[11];
    out[15] = a[15];
  }

  return out;
}