Commit Graph

14 Commits

Author SHA1 Message Date
Maxim Dolgolyov 219e488d7f fix(geom8): KaTeX в feedback — рендерить $...$ после установки innerHTML
В сообщениях feedback (после Проверить) формулы с $...$ показывались
как сырой LaTeX-источник, например 'Повтори: $S_1/S_2 = k^2.$'.
Причина: feedback() устанавливал innerHTML но не вызывал renderMath()
на этом элементе, поэтому KaTeX не обрабатывал формулы.

Добавлен try{renderMath(elm);}catch(e){} после установки innerHTML
во всех 3 файлах (ch1, ch2, ch3).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 16:05:21 +03:00
Maxim Dolgolyov a7ca9a7463 fix(geom8 ch1): §7 §10 — корректные маркеры прямого угла во всех фигурах
§7 Прямоугольник:
- Card 7.1 (теория): 4 path-маркера которые тянулись ПО кромке
  прямоугольника заменены на правильные polyline L-формы (9px),
  направленные строго внутрь.
- Card 7.2 (свойство диагоналей): не было ни одного маркера прямого
  угла — добавлены 4 на всех вершинах.
- Интерактив 1 «Живой прямоугольник»: маркеры стояли только в 2 углах
  через <rect> которые частично выходили за прямоугольник. Заменены
  на 4 правильных polyline вычисляемых из Math.min/max границ —
  работают при любом направлении перетаскивания вершины B.

§10 Квадрат:
- Card 10.1 (определение): 4 path-маркера трассировавшие по кромке
  заменены на правильные L-формы.
- Card 10.2 (свойства): то же.
- Card 10.3 (формулы): добавлены маркеры на все 3 квадрата (6-7px,
  в цвет каждого квадрата).
- Интерактив 1 (слайдер): один <rect>-маркер в углу A заменён на
  4 правильных polyline-маркера на всех вершинах ABCD, пересчёт
  по каждому изменению слайдера.

Геометрия маркера: для угла V с направлениями u,w внутрь —
polyline V+9u → V+9u+9w → V+9w. Маркер всегда внутри фигуры,
оба сегмента перпендикулярны кромкам.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 16:04:07 +03:00
Maxim Dolgolyov 5ecae8a078 fix(geom8): кнопка Проверить — feedback теперь показывается
Баг: у элементов .feedback стоит inline style='display:none' и CSS-класс
.feedback с display:none. Класс .feedback.ok должен переключать на
display:block, но inline-стиль имеет ВЫСШУЮ специфичность и перекрывает
классовый display:block.

В итоге onclick-обработчики работали корректно (вызывали feedback()),
но сообщение оставалось скрытым из-за inline display:none.

Симптом: 'нажимаешь Проверить — ничего не происходит' в боссах, DnD,
тренажёрах, квизах — везде где есть .feedback элемент.

Фикс: функция feedback() теперь явно сбрасывает elm.style.display='block'
после установки класса. Добавлен null-check на elm.

Затронуто 3 файла (ch1, ch2, ch3). Все feedback-элементы во всех
параграфах теперь показываются после клика по Проверить.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 15:58:50 +03:00
Maxim Dolgolyov ad5435dace fix(geom8): убрать LaTeX-квадратики □ (\square/\blacksquare) — заменить на 'ч.т.д.'
В концах доказательств использовался LaTeX-маркер \square (или
\blacksquare) для QED. KaTeX рендерит его как пустой квадрат U+25A1
который во многих браузерах отображается как 'тофу' (битый глиф).

Заменены во всех 3 главах геометрии:
- \$\square\$  → <b>ч.т.д.</b> (HTML текст)
- \$\blacksquare\$ → <b>ч.т.д.</b>
- \quad\square в $$ → закрытие $$ + 'ч.т.д.'
- \square ABCD (как символ параллелограмма) → просто ABCD

Затронуто: 29 в ch1 + 26 в ch2 + 1 в ch3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 15:39:53 +03:00
Maxim Dolgolyov 8dee3e9829 fix(geom8): SVG audit — Ch1 §10 квадрат и Ch2 §2 прямоугольник
Системный аудит 62 статических SVG в теоретических карточках выявил
2 мелких косяка:

Ch1 §10 (квадрат, карточка 10.2): не хватало прямоугольных меток в
двух верхних углах — у квадрата были обозначены только нижние.
Добавлены маркеры в (68,24) и (168,24).

Ch2 §2 (прямоугольник, карточка 2.2 — периметр): на верхней стороне
у стрелки была ссылка marker-end='url(#a2)', но сам marker #a2 в SVG
не определён → битая ссылка. Убрана для консистентности с остальными
тремя сторонами.

KaTeX-форматирование: проверено во всех 24 buildP-функциях обеих глав —
везде используются корректные $...$ / $$...$$ / \[...\] делиметры.
Конвертаций не потребовалось.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 10:06:50 +03:00
Maxim Dolgolyov 427874ee54 feat(textbook): add inline SVG visualizations to all 48 theory cards in geometry_8_ch1
Added labeled SVG diagrams (280x148–170px) to every makeCard() call across
all 16 paragraphs (§1–§16). Each section gets 3 theory cards × 1 SVG each,
showing pentagons, hexagons, triangulations, parallelograms, rectangles,
rhombuses, trapezoids, Thales construction, medians/centroid and more.
Total: +1069 LOC, 48 SVGs inserted.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 09:51:40 +03:00
Maxim Dolgolyov e22405516b fix(geom8): §3 внешние углы — корректная геометрия визуализации
Было: продолжение рисовалось от next-vertex назад через v, дуга центрировалась
у next-vertex с углом из произвольного направления — углы отображались
неправильно (не у тех вершин, не в тех направлениях).

Стало: для каждой вершины v вычисляются prev/next, направления u=(v-prev)/|·|
(входящая сторона), w=(next-v)/|·| (исходящая). Продолжение u рисуется от v
дальше. Дуга — сектор у v от u-направления до w-направления, sweep
определяется через знак векторного произведения (u×w). Подпись угла —
по биссектрисе дуги на радиусе Rlabel.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 08:56:35 +03:00
Maxim Dolgolyov 640ca245ee fix(geom8): drag-интерактивы — pointermove/up на window + §7 индикатор равенства диагоналей
Drag (12 SVG-интерактивов): pointermove/pointerup/pointercancel слушались на
самом vertex-элементе. При выходе курсора за пределы маленького круга drag
обрывался — отсюда эффект 'нажал, чуть-чуть потянулось, и всё'. Перенесены
на window — теперь работают как нативный drag.

§7 (Прямоугольник): info-карточка показывала 'AC = BD' с одним значением.
Теперь две отдельные карточки AC и BD + индикатор равенства (зелёная плашка
'Диагонали равны' / красная 'Не равны' с Δ).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 08:53:57 +03:00
Maxim Dolgolyov 2e37360dac fix(geom8): §4 — определение cy в drawProof доказательства
В функции drawProof пошагового доказательства §4 использовалась переменная
cy без определения (была только cx). Это приводило к ReferenceError при
вызове buildP4, и из-за throw в ensureBuilt секция §4 не открывалась
при клике на карточку в селекторе параграфов.

Проверено: все 17 параграфов главы (p1-p16, final1) теперь строятся без ошибок.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 08:49:16 +03:00
Maxim Dolgolyov 22bd60cf0f feat(geom8): Wave 4 Главы 1 — финал главы (шпаргалка, карта связей, 7 боссов)
Часть 1: 9 mini-cards с формулами всех 16 параграфов (KaTeX).
Часть 2: интерактивная SVG-карта иерархии четырёхугольников
(клик по узлу — подсветка свойств).
Часть 3: 7 интегрированных боссов (по 10 XP):
  - Босс 1: многоугольник из суммы углов 1620°
  - Босс 2: параллелограмм через треугольник ABD
  - Босс 3: средние линии прямоугольника → ромб
  - Босс 4: ромб 60° → диагонали (Пифагор)
  - Босс 5: теорема Фалеса, 3 подзадачи
  - Босс 6: треугольник 12-16-20 — средняя линия + медиана + центроид
  - Босс 7: равнобедренная трапеция 20/8/10
Часть 4: при победе над всеми — achievement 'Мастер многоугольников Главы 1',
+50 XP бонус, confetti, кнопка перехода к Главе 2.

File: 5194 → 5558 LOC. Глава 1 полностью наполнена.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 08:38:19 +03:00
Maxim Dolgolyov ecda85e8ef feat(geom8): Wave 3 Главы 1 — §11-§16 (Фалес, медианы, средние линии, трапеция)
§11 Теорема Фалеса: SVG-угол с параллелями, конструктор деления отрезка
на n частей, тренажёр, DnD, босс.
§12 Медианы: SVG-треугольник drag + центроид G, доказательство 2:1
через среднюю линию, калькулятор, тренажёр, босс.
§13 Средняя линия треугольника: SVG со срединным треугольником,
доказательство, mini-quiz, DnD, тренажёр, босс.
§14 Трапеция: SVG drag (сохраняет параллельность оснований), конструктор
типов, доказательство m=(a+b)/2, калькулятор, тренажёр, босс.
§15 Равнобедренная трапеция: SVG с симметрией, 2 доказательства
(углы, диагонали), DnD свойств, тренажёр, босс.
§16 Признаки равнобедренной: 2 SVG-индикатора, доказательство признака,
mini-quiz, тренажёр, босс.

GLOSSARY: +центроид, +основания трапеции.
File: 3373 → 5194 LOC.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 20:18:47 +03:00
Maxim Dolgolyov 76eff24732 feat(geom8): Wave 2 Главы 1 — §5-§10 (параллелограмм, прямоугольник, ромб, квадрат)
§5 Свойства параллелограмма: SVG drag B/D, 2 пошаговых доказательства,
DnD-сортер, тренажёр, босс.
§6 Признаки: 3 SVG-демо, квиз выбора, DnD, доказательство признака 1, босс.
§7 Прямоугольник: SVG, доказательство AC=BD, калькулятор d=√(a²+b²),
тренажёр, DnD, босс.
§8 Признак прямоугольника: SVG с двойным индикатором, доказательство,
mini-quiz, тренажёр, босс.
§9 Ромб: SVG drag, доказательство AC⊥BD, калькулятор S=d₁d₂/2, DnD, босс.
§10 Квадрат: SVG со слайдером, иерархия фигур, калькулятор, DnD, тренажёр, босс.

File: 1910 → 3373 LOC.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 19:32:59 +03:00
Maxim Dolgolyov 99d7bf3d03 feat(geom8): Wave 1 Главы 1 — §1-§4 с интерактивами
§1 Многоугольники: SVG-конструктор с drag-вершинами, калькулятор диагоналей,
DnD-сортер фигур, тренажёр периметра, босс (4 задачи).
§2 Сумма углов: анимация триангуляции, калькулятор, обратная задача, DnD
правильные ↔ углы, босс.
§3 Внешние углы: SVG свёртка в точку (360°), калькулятор, тренажёр, mini-quiz, босс.
§4 Параллелограмм: SVG-конструктор (drag B/D), DnD, пошаговое доказательство,
тренажёр углы/периметр, босс.

File: 766 → 1910 LOC.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 19:07:22 +03:00
Maxim Dolgolyov 03d567e953 feat(catalog): Геометрия 8 (Казаков) — Phase 0 hub + 4 skeleton
- migration 017: geometry-8 hub + 4 children (Многоугольники, Площади,
  Подобие, Окружности) с parent_slug. sort_order=4, physics-8 → 5.
- geometry_8_hub.html (~380 LOC): blue/cyan hub в стиле algebra-8-hub,
  4 цветные карточки глав (amber/emerald/purple/cyan), агрегированный
  прогресс, ачивка «Мастер геометрии 8» при 56/56.
- 4 skeleton-файла chapter (geometry_8_ch1..ch4.html): полная
  инфраструктура (CSS, STATE, XP-карта, glossary, search Ctrl+K,
  sidebar, DnD, server-sync), 16/15/9/16 параграфов как stub'ы.
  Реальный контент — в последующих волнах.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 18:47:40 +03:00