feat(math6): симметрия (Гл.6 §4 центральная, §5 осевая) — reflectFold

Math6Anim.reflectFold: на координатной плоскости треугольник плавно
переходит на свой образ — центральная (поворот 180° вокруг O, режим
'central') или осевая (отражение через Oy, режим 'axial'); образ показан
красным пунктиром, ось/центр выделены. Один компонент закрыл §4 и §5.
Headless-safe. Тесты math6: 20/20.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-02 21:56:57 +03:00
parent 555f701b57
commit 97966ba2df
3 changed files with 51 additions and 0 deletions
+4
View File
@@ -174,6 +174,10 @@ test('анимации: canvas-демо монтируются (headless-safe)',
r6.doc.defaultView.goTo('p2'); await wait(100);
assert.ok(r6.doc.querySelector('#p2-roll canvas'), 'canvas «колесо» §6.2');
assert.ok(r6.doc.querySelector('#p2-sweep canvas'), 'canvas «заметание площади» §6.2');
r6.doc.defaultView.goTo('p4'); await wait(100);
assert.ok(r6.doc.querySelector('#p4-symfig canvas'), 'canvas «центральная симметрия» §6.4');
r6.doc.defaultView.goTo('p5'); await wait(100);
assert.ok(r6.doc.querySelector('#p5-symfig canvas'), 'canvas «осевая симметрия» §6.5');
assert.deepEqual(r6.errors, [], 'ch6 без ошибок: ' + r6.errors.join(' | '));
// Глава 1 §6: площадная модель умножения
const r1 = await loadDom('math_6_ch1.html');