2025-07-21 23:37:04 +02:00

64 lines
1.4 KiB
JavaScript

const m3 = {
xRotation: (phi) => {
const c = Math.cos(phi), s = Math.sin(phi);
return [
1, 0, 0,
0, c, -s,
0, s, c
];
},
yRotation: (phi) => {
const c = Math.cos(phi), s = Math.sin(phi);
return [
c, 0, s,
0, 1, 0,
-s, 0, c
];
},
zRotation: (phi) => {
const c = Math.cos(phi), s = Math.sin(phi);
return [
c, -s, 0,
s, c, 0,
0, 0, 1
];
},
add: (m1, m2) => [
m1[0] + m2[0],
m1[1] + m2[1],
m1[2] + m2[2],
m1[3] + m2[3],
m1[4] + m2[4],
m1[5] + m2[5],
m1[6] + m2[6],
m1[7] + m2[7],
m1[8] + m2[8],
],
mul: (m1, m2) => [
m1[0]*m2[0] + m1[1]*m2[3] + m1[2]*m2[6],
m1[0]*m2[1] + m1[1]*m2[4] + m1[2]*m2[7],
m1[0]*m2[2] + m1[1]*m2[5] + m1[2]*m2[8],
m1[3]*m2[0] + m1[4]*m2[3] + m1[5]*m2[6],
m1[3]*m2[1] + m1[4]*m2[4] + m1[5]*m2[7],
m1[3]*m2[2] + m1[4]*m2[5] + m1[5]*m2[8],
m1[6]*m2[0] + m1[7]*m2[3] + m1[8]*m2[6],
m1[6]*m2[1] + m1[7]*m2[4] + m1[8]*m2[7],
m1[6]*m2[2] + m1[7]*m2[5] + m1[8]*m2[8],
],
mulV: (m, v) => [
m[0]*v[0] + m[1]*v[1] + m[2]*v[2],
m[3]*v[0] + m[4]*v[1] + m[5]*v[2],
m[6]*v[0] + m[7]*v[1] + m[8]*v[2]
],
eq: (m1, m2) =>
m1[0] === m2[0] &&
m1[1] === m2[1] &&
m1[2] === m2[2] &&
m1[3] === m2[3] &&
m1[4] === m2[4] &&
m1[5] === m2[5] &&
m1[6] === m2[6] &&
m1[7] === m2[7] &&
m1[8] === m2[8],
};