Commit Graph

385 Commits

Author SHA1 Message Date
Maxim Dolgolyov 19ce8728e5 feat(avatars): 27 готовых пресет-аватаров + UI выбора для всех ролей
- backend/uploads/avatars/preset_01..27.png — иллюстрированные персонажи
- POST /api/avatar/preset — мгновенная установка без модерации
- GET  /api/avatar/presets — список доступных пресетов
- profile.html: галерея пресетов в модалке аватара, доступна студенту/учителю/админу
- кастомная загрузка с модерацией остаётся только для студентов
2026-05-29 14:30:24 +03:00
Maxim Dolgolyov 717ad3d0f5 feat(geom11 ch2 final): Финал Раздела 2 (5 боссов + ачивка) 2026-05-29 14:29:09 +03:00
Maxim Dolgolyov 15de0d914f feat(geom11 ch2 wave2): §4 «Конус» + 3D + развёртка 2026-05-29 14:26:11 +03:00
Maxim Dolgolyov dd0a54d8ca feat(geom11 ch2 wave1): §3 «Пирамида» + 3D + калькулятор 2026-05-29 14:21:23 +03:00
Maxim Dolgolyov c2b5d73913 feat(geom11 ch1 final): Финал Раздела 1 (5 боссов + ачивка) 2026-05-29 14:16:53 +03:00
Maxim Dolgolyov 6acdb72b39 feat(geom11 ch1 wave2): §2 «Цилиндр» + 3D-конструктор + сечения 2026-05-29 14:12:55 +03:00
Maxim Dolgolyov b6bb1d9f48 feat(geom11 ch1 wave1): §1 «Призма» + 3D-конструктор + калькуляторы 2026-05-29 14:07:51 +03:00
Maxim Dolgolyov b771c3d497 feat(geom11 phase0): skeleton + миграция + мини-3D движок g3d.js
- 026_geometry_11_hub.sql: hub geometry-11 (cyan, 11 параграфов) + 4 раздела
  (Призма и цилиндр, Пирамида и конус, Сфера и шар, Повторение).
- frontend/js/g3d.js: мини-3D движок для стереометрии.
  Векторная математика, матрицы 3x3, перспективная + изометрическая проекции,
  меши призмы/пирамиды/цилиндра/конуса, wireframe сферы, back-face culling
  через нормали, Z-sort, drag-to-rotate (mouse + touch), preset views.
- frontend/textbooks/geometry_11_hub.html: hub с палитрой cyan/sky,
  4 карточками разделов, аккордеон финала курса (placeholder Phase 5).
- frontend/textbooks/geometry_11_ch{1..4}.html: skeleton 4 разделов
  (через gen_geom11_chapters.js). Все включают: помощники KaTeX, SVG 2D
  (axes2D/plotFunc/pointWithDrop/asymptote/rightAngleMark/angleArcAuto/unitVec),
  ICONS, makeCard, setupSorter, gcd, wireReadBtn, secNav, search, sidebar,
  GEOM11 POLISH CSS + JS, подключение /js/g3d.js. STUB builder для всех 11
  параграфов + 4 финалов с demo-G3D viewer (призма/цилиндр/пирамида/конус/
  сфера-wireframe).
2026-05-29 12:45:20 +03:00
Maxim Dolgolyov 0cca1754e8 feat(alg11 phase4 final): итоговая шпаргалка + 7 боссов + ачивка «Магистр алгебры 11» 2026-05-29 12:31:12 +03:00
Maxim Dolgolyov e2f0bb61af feat(alg11 ch3 wave4 + final): §10 «Логарифмические неравенства» + Финал Главы 3 2026-05-29 12:26:14 +03:00
Maxim Dolgolyov c8385205b4 feat(alg11 ch3 wave3): §9 «Логарифмические уравнения» (4 метода + ОДЗ) 2026-05-29 12:19:43 +03:00
Maxim Dolgolyov 2a987f01d0 feat(alg11 ch3 wave2): §8 «Логарифмическая функция» + обратная к показательной 2026-05-29 12:15:24 +03:00
Maxim Dolgolyov aee927a3b1 feat(alg11 ch3 wave1): §7 «Свойства логарифмов» 2026-05-29 12:10:52 +03:00
Maxim Dolgolyov c931eeacd6 feat(alg11 ch2 wave3 + final): §6 «Показательные неравенства» + Финал Главы 2
§6 — 3 makeCard (теория правила знаков, алгоритм, замена переменной)
+ 4 интерактива: пошаговый решатель с числовой прямой SVG,
калькулятор a^(kx+b) sg c с учётом монотонности и знака k,
квикфайр «сохраняется/меняется» (8), тренажёр границ интервала (6).

Финал 2 — 3 mini-карточки шпаргалки (§4/§5/§6) + 5 боссов
(Циклоп Показательной, Минотавр Уравнений, Гарпия Неравенств,
Дракон Замены, Мастер Показательной) с прогресс-баром,
ачивкой ch2_done «Магистр показательной функции» + 50 XP бонус.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 12:05:15 +03:00
Maxim Dolgolyov c0efd1029e fix(exam9 v47/v48 t7): добавлены рисунки парабол + конкретные ответы в решениях 2026-05-29 12:04:13 +03:00
Maxim Dolgolyov 4606d79e44 feat(alg10 W7): Глава 3 «Производная» — полная реализация (§18-§22 + Финал)
- §18 Определение производной (slider секущая→касательная)
- §19 Правила вычисления (4 правила + (x^n)' плата KaTeX)
- §20 Геометрический смысл + монотонность (касательная SVG + цветные зоны)
- §21 Применение производной к исследованию функций (критические точки, алгоритм)
- §22 Наибольшее и наименьшее значения (отрезок + оптимизация)
- Финал: 5 боссов + спецдостижение alg10_master (+200 XP) при наличии trig_master + root_master
2026-05-29 12:02:34 +03:00
Maxim Dolgolyov 6bdfa48578 feat(alg11 ch2 wave2): §5 «Показательные уравнения» (4 метода решения) 2026-05-29 11:59:09 +03:00
Maxim Dolgolyov 3483223f42 feat(alg11 ch2 wave1): §4 «Показательная функция» + двухпанельный визуализатор 2026-05-29 11:55:03 +03:00
Maxim Dolgolyov d0e249613c feat(alg11 ch1 wave3 + final): §3 «Логарифм» + Финал Главы 1 (5 боссов) 2026-05-29 11:50:26 +03:00
Maxim Dolgolyov 2f4109cb7c feat(classroom): рисование поверх открытого учебника
Кнопка «Рисовать» в тулбаре учебника — переиспользует существующий
annotate-режим доски (так же, как для симуляций). Переключатель учителя
транслируется студентам через тот же SSE-канал /sim/annotate. При
закрытии учебника annotate-режим автоматически выключается.
2026-05-29 11:46:22 +03:00
Maxim Dolgolyov 566197df48 feat(alg11 ch1 wave2): §2 «Степенная функция y = x^α» + главный визуализатор 2026-05-29 11:45:24 +03:00
Maxim Dolgolyov 94490ba239 feat(alg10 W6): Глава 2 — Корень n-й степени (полная реализация)
Реализована вся глава 2 (был stub, теперь полноценный SPA):
violet тема (#7c3aed → #c4b5fd), 5 § + Финал.

§13 Корень n-й степени из числа a:
- SVG графиков y = x^n для n=2,3,4,5 на отрезке [-2.5; 2.5]
  с линией y=4 показывающей различие чётных/нечётных n
- Таблица существования (чётное/нечётное n vs знак a)
- Уравнение x^n = a и число корней
- Интерактив 1: 'существует ли?' (6 да/нет)
- Интерактив 2: 'найди значение корня' (8 вычислений)
- Интерактив 3: 'сколько корней x^n = a' (6 заданий)
- Босс §13: 5 этапов

§14 Свойства корней n-й степени:
- HTML+KaTeX плакат '5 основных свойств' (произв., частное,
  степень, сокращение, корень из корня)
- Подсветка важности: ⁿ√(a^n) = |a| для чётных, = a для нечётных
- Интерактив 1: вычисли через свойства (8 заданий)
- Интерактив 2: ⁿ√(a^n) с модулем (6 заданий)
- Босс §14: 5 этапов

§15 Применение свойств для преобразований:
- 4 алгоритма: вынесение, внесение, рационализация, сравнение
- Спойлер с сопряжёнными выражениями (a+b)(a-b)
- Интерактив 1: вынеси множитель (6 заданий)
- Интерактив 2: внеси множитель (5 заданий)
- Интерактив 3: рационализация (5 заданий)
- Босс §15: 5 этапов

§16 Функция y = ⁿ√x:
- 2 SVG графика (300x260 каждый): чётные n (²√x, ⁴√x, ⁶√x)
  только для x≥0 + нечётные n (³√x, ⁵√x, ⁷√x) на всей оси
- Полная сравнительная таблица свойств D, E, монотонность,
  чётность, нули для двух случаев
- Закономерности (точка (1,1), (-1,-1) для нечётных)
- Интерактив 1: сравни корни (6 заданий < / = / >)
- Интерактив 2: свойства функции (5 заданий)
- Босс §16: 5 этапов

§17 Иррациональные уравнения:
- Метод возведения в степень + объяснение посторонних корней
- Пример с подвохом: 2 корня после возведения, 1 истинный
- Эквивалентная система √f = g ⇔ {f = g², g ≥ 0}
- Метод замены переменной (4-степени корни в квадратные)
- Интерактив 1: простейшие (6 заданий с корнями или числом)
- Интерактив 2: 'сколько истинных корней?' (5 с проверкой)
- Босс §17: 6 этапов

Финал главы 2 — 4 интегрированных босса:
- Hero card с градиентом violet, 3 плашки-метки
- Общий прогресс-бар 'X / 4 побеждено'
- Босс 1 §13-§14: определение + свойства
- Босс 2 §15: преобразования
- Босс 3 §16: функция и график
- Босс 4 §17 + синтез: уравнения + смешанные
- Celebration 'МАГИСТР КОРНЕЙ' (скрытая) + ачивка
- Своё состояние в localStorage

XP до 200 за финал + ачивка root_master (+100 XP).

Файл вырос с 6 KB (stub) до 107 KB (1490 строк).
Глава 2 готова на 100%.
2026-05-29 11:44:54 +03:00
Maxim Dolgolyov 068d6c2afe feat(classroom): открытие любого учебника в онлайн-уроке
Учитель может выбрать любой активный учебник из каталога /api/textbooks
и открыть его в общем iframe для всех участников. По аналогии с симуляциями:

- Backend: контроллер classroom/textbook.js + 4 роута
  (POST/DELETE /:id/textbook, /:id/textbook/nav, /:id/textbook/mode)
  с SSE-событиями classroom_textbook_open|close|nav|mode
- Embed-режим /textbook/:slug?embed=1: сервер injectит CSS+JS-bridge
  перед </head>, скрывая хедер/сайдбар и пересылая клики/скролл наверх
  через postMessage (без правки 40+ HTML-учебников)
- Frontend (classroom.html): кнопка «Учебник» в header, пикер с
  фильтрами по предмету, iframe-панель с режимами демо/свободно,
  relay nav-событий учителя → всем студентам в demo-режиме
2026-05-29 11:41:57 +03:00
Maxim Dolgolyov 21c5ae2d91 feat(alg11 ch1 wave1): §1 «Степень с рациональным показателем» 2026-05-29 11:40:37 +03:00
Maxim Dolgolyov 54b8d06c61 feat(exam-prep F8): слабые темы на дашборде + strategy=weak в тренажёре 2026-05-29 11:38:55 +03:00
Maxim Dolgolyov fe7d44aa83 feat(exam-prep F7): карта тем + тематический тренажёр (API /topics + /topics/:slug/tasks + UI) 2026-05-29 11:35:28 +03:00
Maxim Dolgolyov 90cda5129c feat(alg11 phase0): skeleton + миграция учебника Алгебра 11 + SVG-хелперы
- Миграция 025_algebra_11_hub.sql: hub algebra-11 (emerald, sort 9, 10 параграфов)
  + 3 главы: ch1 amber (§1-3), ch2 violet (§4-6), ch3 cyan (§7-10).
- algebra_11_hub.html: палитра teal/emerald (отличие от индиго alg9),
  3 карточки глав, watermark a^x / e^x / log, финал курса placeholder Phase 4.
- algebra_11_ch1/ch2/ch3.html: полный скелет на основе algebra_9_ch1
  (search, sidebar, XP, theme, психельтор, поиск Ctrl+K).
- SVG-хелперы встроены во все 3 ch-файла:
  axes2D, plotFunc, pointWithDrop, asymptote, snapToValue
  + геометрические: rightAngleMark, angleArcAuto, unitVec, deg2rad, gcd.
- ALG11 POLISH CSS: wgFadeIn каскад, hover-фильтры, bump анимация score-display.
- ALG11 POLISH JS: MutationObserver для авто-bump score, psel-done маркер.
- STUB-builder'ы для всех §§ и final с заглушкой Phase 1+.
- KaTeX с двойным экранированием в template literals.
2026-05-29 11:35:27 +03:00
Maxim Dolgolyov 4747229b09 fix(alg10 ch1 §11): SVG двойного угла — подписи без LaTeX-скобок + 30°/60°
Проблемы старого рисунка:
- Метки 'P_α' и 'P_{2α}' рисовались как SVG <text>, а KaTeX
  не обрабатывает SVG — фигурные скобки '{2α}' показывались как
  литерал, выглядело как «P_{2α}»
- Угол 2α = 70° был слишком близко к оси y, метка P_{2α}
  наезжала на цифру '1' оси y
- Подзаголовок 'α = 35°, 2α = 70°' тоже перекрывался

Что переделано:
- Углы изменены на textbook-стандарт: α = 30°, 2α = 60°.
  Это даёт хорошо видимое разделение и удобные значения для
  вспоминания формул
- Размер канваса увеличен до 380x360, радиус R=130 — больше
  пространства для подписей
- Точки и подписи рисуются вручную (без c.point auto-label),
  потому что нужно тонкое позиционирование чтобы не пересечь
  '1' на оси y
- Подписи изменены на 'P(α)' и 'P(2α)' — скобки решают проблему
  визуально (math-нотация) и не используют braces которые SVG
  рисует литералом
- Подписи углов 'α' и '2α' расположены на биссектрисах секторов
  (через формулу 48*cos(ang/2), 48*sin(ang/2)) — посередине
  внутри своего сектора
- Усилены: размер шрифта 13, font-family Unbounded для контраста
  с Inter в остальном тексте
- Жирность fill-цвета увеличена (rgba .22 → .30 для α сектора)
2026-05-29 11:33:23 +03:00
Maxim Dolgolyov 5e37707b11 feat(exam-prep F6): таксономия из 16 подтем + эвристический классификатор (100% покрытие 800 задач math9) 2026-05-29 11:31:34 +03:00
Maxim Dolgolyov 77bfdb4331 feat(alg10 W5): Финал главы 1 — 6 интегрированных боссов + ачивка
Глава 1 'Тригонометрия' полностью завершена.

buildFinal1():
- Hero card с градиентом teal→violet, водяной знак ★ и 3 плашки-метки
  (★ 6 боссов / + до 300 XP / ★ Финальная ачивка)
- Общий прогресс-бар 'X / 6 побеждено' с градиентной заливкой
- 6 boss-card по теме отдельных параграфов
- Celebration-card 'МАГИСТР ТРИГОНОМЕТРИИ' (скрыта пока не все
  6 боссов повержены) с ачивкой, кнопкой возврата на хаб
- Своё состояние в localStorage (algebra10_ch1_final1_state)

6 боссов (5 этапов каждый, 30 вопросов всего):
- Босс 1 (teal, §1-§4): окружность, sin/cos/tg/ctg, тождества
- Босс 2 (cyan, §5-§7): графики, обратные функции
- Босс 3 (red, §8): уравнения (метод интервалов, замена, разложение)
- Босс 4 (dark teal, §9): формулы приведения (правило двух шагов)
- Босс 5 (deep teal, §10-§11): сложение, разность, двойной аргумент
- Босс 6 (violet, §12+): синтез — сумма→произведение, проверка
  на отождествление углов отличающихся на 2πn

XP:
- 5 XP за каждый правильный этап (30 правильных = 150 XP)
- 25 XP за победу над каждым боссом (6 × 25 = 150 XP)
- Бонус +150 XP за финальную ачивку 'trig_master'
- Итого до 450 XP за финал

Добавлены:
- ACH_LABELS.trig_master: 'Магистр тригонометрии! +150 XP'
- SIDEBARS.final1 + TIPS.final1
- BUILDERS.final1 теперь buildFinal1() (вместо stub)

Файл вырос с 221 KB до 240 KB (2998 → 3252 строки).
Глава 1 готова на 100% — 12 § + Финал.
2026-05-29 11:30:24 +03:00
Maxim Dolgolyov 18fadcba9f fix(alg10 ch1): формульные плакаты §10-§12 — KaTeX вместо моноширинного SVG
Заменены 3 SVG-плакаты (формул сложения, двойного аргумента,
сумма→произведение) на HTML-карточки с настоящим KaTeX-рендерингом.

Добавлен CSS-компонент .formula-plate с подкомпонентами:
- .formula-plate-head + цветовые варианты (teal/cyan/violet/green/amber)
  → плашка-заголовок с градиентом
- .formula-plate-title + .formula-plate-sub
  → крупный заголовок + курсивный подзаголовок
- .formula-plate-body + .formula-row + альтернативные цвета
  → строки формул с подсветкой
- .formula-section (янтарная вставка для tg)
- .formula-mnem (фиолетовая плашка с мнемоникой)

§10: 8 формул в HTML-плакате с teal-плашкой + янтарный блок 'Тангенсы'
§11: 3 формулы двойного аргумента отдельным плакатом ПЕРЕД SVG
     с окружностью (которая теперь короче — без встроенного
     формульного блока)
§12: 4 формулы в violet-плакате + фиолетовая плашка 'Мнемоника' со
     списком правил

Все формулы теперь рендерятся настоящим KaTeX с дробями \dfrac,
правильными операторами \tg \sin \cos, греческими буквами
\alpha \beta, и индексами/степенями.
2026-05-29 11:25:03 +03:00
Maxim Dolgolyov 0903ef640a feat(alg10 W4): §9-§12 главы 1 (формулы преобразования)
Реализованы 4 формуло-ёмких параграфа главы 1:

§9 Формулы приведения:
- SVG единичной окружности с 4 цветными четвертями и знаками
  всех 4 функций в каждой (380x360, заголовочная плашка)
- Правило двух шагов с разбором примера cos(3π/2 − α) = −sin α
- Полная таблица 28 формул (4 функции × 7 видов аргумента)
- Интерактив 1: 8 заданий «приведи к острому»
- Интерактив 2: 8 заданий «вычисли значение»
- Босс §9: 5 этапов

§10 Сумма и разность углов:
- SVG-плакат с 8 формулами 580x280 (sin/cos зелёным+фиолетовым,
  tg в отдельной янтарной плашке)
- Мнемоника: знаки совпадают в sin, чередуются в cos
- Спойлер с классическим доказательством для cos(α−β) через
  теорему косинусов
- Применение к «нестандартным» углам (75°, 15°, 105°)
- Интерактив 1: 6 вычислений нестандартных углов
- Интерактив 2: 5 упрощений выражений
- Босс §10: 5 этапов

§11 Двойной аргумент:
- SVG окружности с углами α=35° и 2α=70° (одна над другой
  с разными цветными секторами)
- Формулы sin 2α, cos 2α (три формы!), tg 2α
- Когда какую форму cos 2α использовать
- Формулы понижения степени sin²α, cos²α
- Интерактив 1: 6 заданий на вычисление через данную sin/cos α
- Интерактив 2: 5 упрощений с двойным углом
- Босс §11: 5 этапов

§12 Преобразование суммы в произведение:
- SVG-плакат с 4 формулами + мнемоника
- Применение к решению уравнения sin 3x + sin x = 0
- Применение для упрощения дробей
- Интерактив 1: 5 преобразований
- Интерактив 2: 4 задачи «сколько корней у sin x ± sin nx = 0»
- Босс §12: 4 этапа (этот § покороче)

Обновлены ACH_LABELS (+p9-p12_done), bumpProgress, BUILDERS,
SIDEBARS (4 шпаргалки), TIPS (4 подсказки).

Глава 1 теперь готова на 12 из 13 параграфов — остался
только финал главы (6 боссов).

Файл вырос со 160 KB до 221 KB (2189 → 2998 строк).
2026-05-29 11:19:56 +03:00
Maxim Dolgolyov c590c32b41 feat(exam-prep F10): план по дате экзамена — виджет на дашборде + модалка + GET/PUT/DELETE /plan 2026-05-29 11:17:28 +03:00
Maxim Dolgolyov a4be2ecba0 feat(geom9): полировка — анимации появления, bump-эффекты, hover, плавные переходы 2026-05-29 11:13:39 +03:00
Maxim Dolgolyov 294b3622b5 feat(exam-prep F4): живой дашборд — streak + последние попытки + точность 7д + хитмап активности + пробники 2026-05-29 11:12:23 +03:00
Maxim Dolgolyov 2fda4ee7f6 fix(alg10 ch1 §8): премиум-рисунки для геометрии sin/cos/tg = a
Переделаны 3 SVG в §8 — теперь это полноценные плакатные
визуализации с заголовками, формулами и цветовым кодированием:

sin x = a (400×430):
- Заголовочная плашка teal: 'УРАВНЕНИЕ: sin x = a' + пример a=1/2
- Окружность с осями, горизонтальная линия y=a в красной рамке
- 2 сектора углов π/6 и 5π/6 разных цветов (бирюзовый + фиолетовый)
- Вертикальные пунктиры от обеих точек к оси x (показывают sin α = a)
- Подписи P_{π/6} и P_{5π/6} крупно, цветом совпадающим с сектором
- Формульный блок снизу в рамке: x = (-1)^n · arcsin a + πn

cos x = a (400×430):
- Заголовочная плашка cyan
- Вертикальная линия x=a с красной плашкой-меткой
- Сектор +π/3 (верхний, cyan) и -π/3 (нижний, фиолетовый)
- Горизонтальные пунктиры от точек к оси y
- Формульный блок: x = ±arccos a + 2πn

tg x = a (440×430, шире из-за оси тангенсов):
- Заголовочная плашка green
- Ось тангенсов справа (вертикальная пунктирная)
- Точка A_a = (1; a) в красной рамке-метке
- Прямая через O и A_a пунктиром в обе стороны
- Пример a = √3/3 → корни π/6 и 7π/6
- Сектор угла π/6 + 2 точки
- Формульный блок: x = arctg a + πn

Все три SVG используют consistency:
- Заголовок с подзаголовком сверху
- Чёткое цветовое кодирование (a/sin/cos = красный)
- Сектора заполненные пастельными цветами
- Формула в нижней рамке с заголовком 'ОБЩАЯ ФОРМУЛА'
2026-05-29 11:11:33 +03:00
Maxim Dolgolyov e63c05cc34 feat(alg10 W3): §8 главы 1 (тригонометрические уравнения)
Самый большой параграф главы 1:

§8 Тригонометрические уравнения:

Карточки теории (8 шт):
- 8.1 Зачем геометрия — мотивация
- 8.2 sin x = a (геометрия + объединённая формула (-1)^n)
- 8.3 cos x = a (геометрия + ±arccos)
- 8.4 tg x = a (через ось тангенсов)
- 8.5 Особые случаи (a = 0, ±1) — полная таблица
- 8.6 Метод замены переменной
- 8.7 Метод разложения на множители
- 8.8 Однородные уравнения 1-й и 2-й степени

SVG (через ALG10.tri.canvas):
- sin x = a: окружность + горизонтальная линия y=a + 2 точки
- cos x = a: окружность + вертикальная линия x=a + 2 точки
- tg x = a: окружность + ось тангенсов + точка A_a + прямая через O

Интерактивы:
- ИВ1: 10 простейших уравнений (sin/cos/tg = a)
- ИВ2: 6 заданий 'сколько корней в промежутке'
- ИВ3: 5 заданий на замену переменной (квадратные относительно sin/cos)

Босс §8 — 6 этапов:
- 1: проверка |a|>1 → нет корней
- 2: подсчёт корней в [0;2π]
- 3: простейшее cos x = -1
- 4: квадратное относительно cos
- 5: проверка подстановкой
- 6: tg x = 1 → серия π/4 + πn

Обновлены ACH_LABELS (+p8_done), bumpProgress, SIDEBAR §8
(10 строк с формулами и особыми случаями), TIP §8.

Файл вырос со 141 KB до 160 KB (1888 → 2189 строк).
2026-05-29 11:07:03 +03:00
Maxim Dolgolyov cfcb233b6c feat(exam-prep F9): пробный экзамен — setup/active/result + таймер + балл по сетке + серверный чекер 2026-05-29 11:06:57 +03:00
Maxim Dolgolyov b07da5ee6d fix(geom9 ch4): радиусы в реальных единицах вместо пикселей
Все 4 IV1 в Главе 4 показывали R в пикселях (130/120/70/100),
из-за чего S_круга получалось $\pi · 10000 ≈ 31415$ — для
школьника это не геометрия, а абстракция.

§13 IV1: R = 130 px → переинтерпретировано как R = 10 ед.
(K = 13). r тоже в единицах.

§14 IV1: slider R = 50..150 px → R = 2..8 ед. (K = 18 px/ед.).
SVG рисуется через Rpx = R · K, формулы a, r, P, S в единицах.

§15 IV1: slider R = 40..100 px → R = 2..5 ед. (K = 20).
Таблица a₃=R√3, a₄=R√2, a₆=R даёт нормальные числа.

§16 IV1: slider R = 40..150 px → R = 2..6 ед. (K = 25).
C, S, дуга, сектор — все осмысленные значения.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 11:03:13 +03:00
Maxim Dolgolyov 52824d8fc9 fix(geom9 ch3): §10 и §11 — стороны/радиусы в реальных единицах
§10 IV1 «Теорема синусов»: убрал ремарку «(в пикселях SVG)»,
ввёл коэффициент K = 26 px/ед., теперь R ≈ 5, 2R ≈ 10 и стороны
a, b, c показываются как 4..7 ед. (а не 100..130 px).

§11 IV1 «Теорема косинусов»: было b=100, c=150 px — отображалось
$a^2 = 10000 + 22500 - 30000·cos A$ — невменяемые числа.
Стало b=4, c=6 ед., K=25 px/ед.: $a^2 = 16 + 36 - 48 cos A$.
Подписи и формула в единицах, SVG-геометрия — та же.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 10:59:49 +03:00
Maxim Dolgolyov f3cff6ad03 feat(alg10 W2): §5-§7 главы 1 (графики sin/cos/tg/ctg + обратные)
Реализованы 3 параграфа главы 1:

§5 y = sin x и y = cos x. Свойства и графики:
- Большой график sin x на [-2π;2π] с отметками экстремумов
  (640x240, ALG10.func.canvas + plot)
- График cos x с тем же оформлением
- Совмещённый график sin/cos с легендой и точкой пересечения π/4
- Полные таблицы свойств (D, E, период, чётность, нули, монотонность)
- Алгоритм преобразований y = A·sin(ωx+φ) + b
- Интерактив 1: 4 ползунка (A/ω/φ/b) → real-time перерисовка графика
  с базовым sin пунктиром для сравнения
- Интерактив 2: 7 заданий на свойства
- Босс §5: 5 этапов

§6 y = tg x и y = ctg x. Свойства и графики:
- График tg x с авто-обрывами у асимптот (±12 порог) + красные
  вертикальные асимптоты
- График ctg x аналогично
- Таблицы свойств с подсветкой ключевых отличий (период π!)
- Интерактив 1: 6 заданий на свойства
- Интерактив 2: сравнение значений по графику (< / = / >)
  с использованием монотонности (tg возр., ctg убыв.)
- Босс §6: 5 этапов

§7 Арксинус, арккосинус, арктангенс, арккотангенс:
- 4 маленьких графика 280x240 (arcsin/arccos/arctg/arcctg)
  с правильными областями значений [-π/2;π/2] / [0;π]
- Таблицы главных значений для sin/cos
- Подсветка: arccos и arcctg НЕ нечётные
- Связки: arcsin a + arccos a = π/2
- Интерактив 1: 8 заданий на главные значения
- Интерактив 2: arcsin(sin α) — тонкая разница, 5 заданий
- Босс §7: 5 этапов (включая тонкий вопрос про arcsin(sin(5π/6)))

Обновлены ACH_LABELS (+p5/p6/p7_done), bumpProgress,
SIDEBARS (шпаргалки), TIPS (подсказки для каждого §).

Файл вырос с 96 KB до 141 KB (1321 → 1888 строк).
2026-05-29 10:58:52 +03:00
Maxim Dolgolyov 8b8616e1de fix(geom9 ch2): R, r и катеты в реальных единицах вместо пикселей
§7 IV1 «Описанная и вписанная окружности»:
- было: R ≈ 73.8, r ≈ 21.5 — числа в SVG-пикселях
- стало: коэффициент px/единица = 17 (twoR=170px → 2R=10),
  выводятся R ≈ 4.34, r ≈ 1.26 в учебных единицах

§8 IV1 «Окружности прямоугольного треугольника»:
- было: слайдеры катетов 40..160, подписи a=120, b=90,
  гипотенуза c=150 — пиксели, выглядит как абсурдные длины
- стало: слайдеры 2..8 ед. с шагом 0.1, K=30 px/ед.,
  всё показывается в единицах. Формулы $c = \sqrt{6^2+4.5^2}$
  и $R, r$ — нормальные геометрические числа

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 10:57:58 +03:00
Maxim Dolgolyov 4652f9a73d feat(exam-prep F5): тренажёр случайных задач + /practice/next API (random|unsolved) 2026-05-29 10:57:22 +03:00
Maxim Dolgolyov 0d1474f0f5 fix(geom9 ch1): эмодзи в §4 + подписи в единицах в §6
§4 IV1: бейдж тупого угла использовал эмодзи ⚠ — заменён
на inline SVG треугольника-предупреждения (правило проекта:
никаких эмодзи в коде, только inline SVG).

§6 IV1: подписи длин рисовались в пикселях
(b₁=120, h=80 и т.д.) и из них проверялись соотношения —
бессмысленные числа. Теперь все подписи в реальных единицах
(гипотенуза c=10), соотношения тоже в единицах.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 10:53:59 +03:00
Maxim Dolgolyov da14b9cb68 feat(exam-prep F3): интерактивный тренажёр — task-card + автопроверка ответа + retry + auto-open решения 2026-05-29 10:51:38 +03:00
Maxim Dolgolyov 5f8fcbd964 fix(textbooks): добавлены teal/cyan/emerald для tb-btn.primary и tb-progress-fill
Кнопка 'Открыть' и progress-bar тоже не рендерились без
правил для нестандартных цветов. Добавлены все 3 ассета:
.tb-progress.teal/cyan/emerald .tb-progress-fill
.tb-btn.primary.teal/cyan/emerald
2026-05-29 10:51:14 +03:00
Maxim Dolgolyov ba4c9b071d fix(geom9 ch1): переделаны рисунки в §1 и §3
§1 IV1 «Конструктор прямоугольного треугольника»:
- Стандартное расположение: прямой угол справа-снизу (C),
  угол α при A слева-снизу, гипотенуза диагональю
- Цветовая кодировка сторон: гипотенуза c фиолетовая,
  противолежащий a красный, прилежащий b синий
- Подписи в реальных единицах (c = 10), а не px/22
- Легенда с обозначением каждой стороны
- Под графиком — формулы $\sin = a/c$, $\cos = b/c$ итд

§3 IV1 «Два эталонных треугольника» (бывшая «Три»):
- Поправлен заголовок: было «Три», нарисовано два
- Оба треугольника в стандартном расположении
- Помощник drawTri() — единая логика для обоих
- Углы 30°/60° (красный/голубой) для 30-60-90,
  45°/45° для равнобедренного

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 10:51:02 +03:00
Maxim Dolgolyov a4c933b62c fix(textbooks): добавлены CSS-обложки для teal/cyan/emerald
Карточка 'Алгебра — 10 класс' в каталоге не показывала
заголовок и градиентный фон, потому что у учебника
color='teal', а CSS-правила .tb-cover.teal не было.

Добавлены 4 цвета на будущее (для алгебры 10 теal, для
геометрии 10 cyan/emerald, для амбер вариант).
2026-05-29 10:49:53 +03:00
Maxim Dolgolyov 55006e691e feat(alg10 W1): Глава 1 §1-§4 (тригонометрический минимум)
Реализованы первые 4 параграфа главы 1 'Тригонометрия':

§1 Единичная окружность. Градусная и радианная мера:
- SVG главный с 12 делениями (0°, 30°, 60°, ..., 330°)
- Интерактив 1: slider угла -720°..+720° с реал-тайм отрисовкой P_α
  + эквивалент в [0°, 360°)
- Интерактив 2: тренажёр перевода град ↔ рад (8 заданий)
- Интерактив 3: четверть угла (6 заданий)
- Босс §1: 5 этапов (углы, четверти, эквивалентные точки)

§2 sin и cos произвольного угла:
- SVG определения через координаты P_α (с подписями sin α и cos α)
- SVG знаков по четвертям с цветными секторами и подписями +/-
- SVG главных углов π/6, π/4, π/3, π/2 на окружности
- Таблица точных значений
- Интерактив 1: знаки sin/cos (8 заданий)
- Интерактив 2: точные значения (6 заданий)
- Интерактив 3: 'может ли так быть?' (6 да/нет)
- Босс §2: 5 этапов

§3 tg и ctg произвольного угла:
- SVG оси тангенсов (касательная x=1, точка A_α)
- SVG оси котангенсов (касательная y=1)
- Таблица знаков по четвертям
- Интерактив 1: 'существует ли?' (6 да/нет)
- Интерактив 2: знаки tg/ctg (6 заданий)
- Босс §3: 5 этапов

§4 Тригонометрические тождества:
- SVG прямоугольного треугольника на окружности → теорема Пифагора
- 3 производных тождества: tg·ctg=1, 1+tg²=1/cos², 1+ctg²=1/sin²
- Алгоритм 'знаю одну → найду все 4'
- Полный пример решения
- Интерактив 1: 'найди cos α по sin' (5 заданий)
- Интерактив 2: 'упрости выражение' (5 заданий)
- Интерактив 3: 'найди tg/ctg' (5 заданий)
- Босс §4: 5 этапов

Инфраструктура главы:
- 13 параграфов в PARAS (4 готовы, §5-§12 + final1 — stub 'в разработке')
- Sidebar с шпаргалкой для §1-§4
- 4 ачивки + ачивка 'Глава 1 пройдена'
- Тёмная тема, прогресс на сервер, XP
- Все SVG используют ALG10.tri.canvas() и связанные хелперы

Используется библиотека alg10_svg.js из Wave 0.
2026-05-29 10:47:44 +03:00
Maxim Dolgolyov 69a5707cb6 fix(textbooks catalog): добавлены цвета indigo и rose
Карточки Алгебры 9 (indigo) и Геометрии 9 (rose) показывались
белым на белом — отсутствовали CSS-классы .tb-cover.indigo
и .tb-cover.rose. Добавлены градиенты, fill прогресс-бара
и primary-кнопки для обоих цветов + расширен colorMap.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-29 10:47:06 +03:00