rotateY function
Rotates a matrix by the given angle around the Y axis
@param {mat4} out the receiving matrix @param {ReadonlyMat4} a the matrix to rotate @param {Number} rad the angle to rotate the matrix by @returns {mat4} out
Implementation
List<double> rotateY(List<double> out, List<double> a, double rad) {
final s = math.sin(rad);
final c = math.cos(rad);
final a00 = a[0];
final a01 = a[1];
final a02 = a[2];
final a03 = a[3];
final a20 = a[8];
final a21 = a[9];
final a22 = a[10];
final a23 = a[11];
if (a != out) {
// If the source and destination differ, copy the unchanged rows
out[4] = a[4];
out[5] = a[5];
out[6] = a[6];
out[7] = a[7];
out[12] = a[12];
out[13] = a[13];
out[14] = a[14];
out[15] = a[15];
}
// Perform axis-specific matrix multiplication
out[0] = a00 * c - a20 * s;
out[1] = a01 * c - a21 * s;
out[2] = a02 * c - a22 * s;
out[3] = a03 * c - a23 * s;
out[8] = a00 * s + a20 * c;
out[9] = a01 * s + a21 * c;
out[10] = a02 * s + a22 * c;
out[11] = a03 * s + a23 * c;
return out;
}