const randomNone = (min, max) =>
min + Math.ceil(Math.random() * (max - min - 1));
const randomMin = (min, max) => min + Math.floor(Math.random() * (max - min));
const randomMax = (min, max) => min + Math.ceil(Math.random() * (max - min));
const randomAll = (min, max) =>
min + Math.floor(Math.random() * (max - min + 1));
const round = (n, decimals = 0) =>
Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`);
const padding = (num, length) => {
return (Array(length).join("0") + num).slice(-length);
};
const test = (mat) => {
var a = mat[0];
var b = mat[1];
var c = mat[2];
var d = mat[3];
var e = mat[4];
var f = mat[5];
var delta = a * d - b * c;
let result = {
translation: [e, f],
rotation: 0,
scale: [0, 0],
skew: [0, 0],
};
if (a != 0 || b != 0) {
var r = Math.sqrt(a * a + b * b);
result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);
result.scale = [r, delta / r];
result.skew = [Math.atan((a * c + b * d) / (r * r)), 0];
} else if (c != 0 || d != 0) {
var s = Math.sqrt(c * c + d * d);
result.rotation =
Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));
result.scale = [delta / s, s];
result.skew = [0, Math.atan((a * c + b * d) / (s * s))];
} else {
}
return result;
};