StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
4 years ago
|
module.exports = rotateY;
|
||
|
|
||
|
/**
|
||
|
* Rotates a matrix by the given angle around the Y axis
|
||
|
*
|
||
|
* @param {mat4} out the receiving matrix
|
||
|
* @param {mat4} a the matrix to rotate
|
||
|
* @param {Number} rad the angle to rotate the matrix by
|
||
|
* @returns {mat4} out
|
||
|
*/
|
||
|
function rotateY(out, a, rad) {
|
||
|
var s = Math.sin(rad),
|
||
|
c = Math.cos(rad),
|
||
|
a00 = a[0],
|
||
|
a01 = a[1],
|
||
|
a02 = a[2],
|
||
|
a03 = a[3],
|
||
|
a20 = a[8],
|
||
|
a21 = a[9],
|
||
|
a22 = a[10],
|
||
|
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;
|
||
|
};
|