Refactor: Implement SmartCube renderer, improve UI styling, and fix gaps

This commit is contained in:
2026-02-22 04:35:59 +00:00
parent 57abfd6b80
commit b5ddc21662
4168 changed files with 763782 additions and 1008 deletions

57
node_modules/matrix-js/lib/rational.js generated vendored Normal file
View File

@@ -0,0 +1,57 @@
'use strict';
/**
* Constructs an object storing rational numbers and methods performing operations
*
* @param num numerator of the rational number
* @param den denomenator of the rational number
* @returns Object storing the rational number and method doing arthmetic operations
*/
function rational(num, den) {
den = den || 1;
if (Math.sign(den) === -1) {
num = -num;
den = -den;
}
return {
num: num,
den: den,
add: (op) => rational(num * op.den + den * op.num, den * op.den),
sub: (op) => rational(num * op.den - den * op.num, den * op.den),
mul: (op) => multiply(op, num, den),
div: (op) => {
let _num = op.den;
let _den = op.num;
return multiply(rational(_num, _den), num, den);
}
}
}
module.exports = rational;
/**
* Multiplies two rational number based on multiplication rules that cancels common terms
*
* @param op the second operand
* @param num numerator of first operand
* @param den denominator of second operand
* @returns another rational number
*/
function multiply(op, num, den) {
let _num = Math.sign(num) * Math.sign(op.num);
let _den = Math.sign(den) * Math.sign(op.den);
if (Math.abs(num) === Math.abs(op.den) && Math.abs(den) === Math.abs(op.num)) {
_num = _num;
_den = _den;
} else if (Math.abs(den) === Math.abs(op.num)) {
_num = _num * Math.abs(num);
_den = _den * Math.abs(op.den);
} else if (Math.abs(num) === Math.abs(op.den)) {
_num = _num * Math.abs(op.num);
_den = _den * Math.abs(den);
} else {
_num = num * op.num;
_den = den * op.den;
}
return rational(_num, _den);
}