feat(math6): умножение-прыжки (Гл.4 §7) + координатный тир (Гл.5 §1)

Math6Anim.numberLineJumps — a·b как a прыжков-дуг по b на числовой прямой
(зелёные вправо, красные влево, приземление на произведение); ползунки a,b.
Math6Anim.coordGame — «поставь точку (x;y)»: клик по узлу сетки, проверка,
счёт, при промахе показывает верную точку. План: 3D-тела исключены.
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:53:47 +03:00
parent f4ece6f5b1
commit 555f701b57
5 changed files with 95 additions and 3 deletions
+4
View File
@@ -186,6 +186,8 @@ test('анимации: canvas-демо монтируются (headless-safe)',
assert.ok(r4.doc.querySelector('#p4-walk canvas'), 'canvas «прыжки по прямой» §4.4');
r4.doc.defaultView.goTo('p1'); await wait(100);
assert.ok(r4.doc.querySelector('#p1-therm-fig canvas'), 'canvas «термометр» §4.1');
r4.doc.defaultView.goTo('p7'); await wait(100);
assert.ok(r4.doc.querySelector('#p7-jumpfig canvas'), 'canvas «умножение-прыжки» §4.7');
assert.deepEqual(r4.errors, [], 'ch4 без ошибок: ' + r4.errors.join(' | '));
// Глава 5 §2: машинка + график
const r5 = await loadDom('math_6_ch5.html');
@@ -194,6 +196,8 @@ test('анимации: canvas-демо монтируются (headless-safe)',
r5.doc.defaultView.goTo('p3'); await wait(100);
assert.ok(r5.doc.querySelector('#p3-livefig canvas'), 'canvas «живой график y=kx/k÷x» §5.3');
assert.ok(r5.doc.querySelectorAll('#p3-live [data-m]').length === 2, 'переключатель прямая/обратная §5.3');
r5.doc.defaultView.goTo('p1'); await wait(100);
assert.ok(r5.doc.querySelector('#p1-game canvas'), 'canvas «координатный тир» §5.1');
assert.deepEqual(r5.errors, [], 'ch5 без ошибок: ' + r5.errors.join(' | '));
});