Commit Graph

494 Commits

Author SHA1 Message Date
Maxim Dolgolyov a6bc034bdb feat(phys8 ch3): Phase 5 Wave 3+4 — §36-40 + Финал — Глава 3 завершена
§36 Преломление света:
- Закон Снеллиуса с интерактивным OPTICS.refractRay
- 4 материала (воздух/вода/стекло/алмаз)
- Полное внутреннее отражение
- 5 численных задач

§37 Линзы. Оптическая сила:
- OPTICS.thinLens — собирающая и рассеивающая
- D = 1/F, дптр
- 5 задач (включая F=17 мм для глаза)

§38 Построение изображений (ГЛАВНЫЙ ВИЗУАЛ ОПТИКИ):
- Конструктор изображения через OPTICS.buildLensImage
- slider F и d, увеличение, тип изображения
- 5 типов (d>2F/2F/F<d<2F/d=F/d<F)
- DnD устройств (фотоаппарат/проектор/лупа)
- 5 задач на формулу тонкой линзы

§39 Глаз как оптическая система:
- OPTICS.eyeDiagram с slider'ом аккомодации
- 5 элементов глаза, MCQ
- DnD оптические vs нервные части

§40 Дефекты зрения. Очки:
- Визуализация близоруков. и дальнозоркости с очками
- OPTICS.thinLens исправляет фокус
- 5 задач (включая «знак D»)

ФИНАЛ ГЛАВЫ 3:
- Шпаргалка из 10 формул
- 7 интегрированных боссов: c, отражение, преломление, D, тонкая
  линза, очки, магистр света
- Ачивка light_master (+50 XP)

Глава 3 «Световые явления» (§§32-40, 9 параграфов + финал) закончена.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 08:58:32 +03:00
Maxim Dolgolyov dcdcde5b4e fix(textbooks): Физика 9 — escape § в num + phys9_legacy.js + финалы 5 глав
Багфиксы:
- gen_phys9_ch.js: убран двойной escape \u00a7 → литерал §
  (раньше карточка показывала '\u00a7 1' вместо '§ 1')
- phys9_legacy.js (262 КБ): извлечён весь JS монолита для глобальных onclick-
  обработчиков (startAnim1, lab11add/all/reset, checkNum, togglePend36 и пр.).
  Setup-код в конце обёрнут в try/catch — он рассчитан на DOM монолита.
- migrate_phys9_ch4.js + migrate_phys9_content.js: подключают phys9_legacy.js
  во все 5 ch-файлов перед закрытием <head>.

Финалы глав (write_phys9_finals.js):
- ch1: 5 задач (кинематика — поезд, разгон, окружность, лодка/река)
- ch2: 5 задач (динамика — трение, Гук, свободное падение, перегрузка)
- ch3: 5 задач (статика — рычаг, Архимед, блок, КПД накл. плоск., льдина)
- ch4: 5 задач (импульс — неупр. удар, ЗСЭ, мощность крана, пуля, бросок)
- ch5: 5 контрольных по практикуму (среднее, ЛР2, ЛР4, ЛР6, ЛР10)

Все задачи с автопроверкой через checkNum() (теперь работает из legacy.js).
2026-05-30 08:55:00 +03:00
Maxim Dolgolyov 0c6618fb38 feat(phys8 ch3): Phase 5 Wave 1+2 — §32 источники + §33 тени + §34 отражение + §35 зеркало
§32 Источники света:
- 3 теории: естеств./искусств., тепловые/люминесц., точечные
- IV-1: 8 раундов «светит/отражает»
- IV-2: 6 раундов «тепловой/люминесцентный»
- IV-3: DnD 8 источников на 2 категории
- IV-4: 6 MCQ

§33 Скорость света и распространение:
- 3 теории: c, прямолинейность, тень/полутень
- IV-1: ГЛАВНЫЙ ВИЗУАЛ — динамическая тень/полутень: slider'ы
  размера источника (0=точечный → 40=протяжённый) и расстояния,
  рисуются зоны тени и полутени на экране
- IV-2: калькулятор времени пролёта света
- IV-3: DnD 8 утверждений правда/ложь
- IV-4: 5 числовых задач (Солнце, Луна, скорость vs звук)

§34 Отражение света:
- 3 теории: закон отражения, зеркальное/диффузное, примеры
- IV-1: динамическая визуализация через OPTICS.reflectRay,
  slider α 0-80°
- IV-2: 6 раундов «зеркало/диффузное»
- IV-3: DnD 8 поверхностей
- IV-4: 5 задач (включая поворот зеркала)

§35 Плоское зеркало:
- 3 теории: свойства изображения, построение, зеркальные надписи
- IV-1: построение мнимого изображения через OPTICS.mirrorPlane
  + OPTICS.lightObject, slider расстояния
- IV-2: 6 True/False
- IV-3: DnD свойств изображения
- IV-4: 5 задач (включая 2 зеркала под 90°)

§36-40 + финал — stub-заглушки, будут реализованы в Wave 3-4.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 08:52:26 +03:00
Maxim Dolgolyov 3727417810 feat(phys8 ch2): Phase 4 Wave 2 — §30 Эрстед + §31 электромагнит + Финал главы 2
§30 Опыт Эрстеда:
- 3 теории: открытие 1820, значение опыта, применения
- IV-1: симуляция Эрстеда — провод + стрелка, slider'ы ключа и
  направления тока; без тока стрелка указывает на N (Землю),
  при включении тока отклоняется на 60° (по/против часовой
  в зависимости от направления)
- IV-2: 5 вопросов о значимости опыта
- IV-3: DnD 8 «есть/нет поля» (магниты, токи, нейтр. тела)
- IV-4: 6 MCQ

§31 Поле прямого провода + электромагнит:
- 3 теории: окружности линий и правило правой руки, соленоид,
  электромагнит
- IV-1: ГЛАВНЫЙ ВИЗУАЛ — электромагнит-конструктор: slider'ы I, N
  и dropdown сердечника (воздух/железо μ=500); катушка с витками,
  стержень, рассчитанный |B| и число поднимаемых скрепок
- IV-2: 5 вопросов «правило правой руки»
- IV-3: DnD 8 действий «усилит/ослабит поле»
- IV-4: 6 MCQ

ФИНАЛ ГЛАВЫ 2:
- Шпаргалка из 12 формул и понятий
- 10 интегрированных боссов: закон Ома, R=ρl/S, последов., параллельная,
  смешанная цепь, мощность, Джоуль-Ленц, кВт·ч за месяц, тариф,
  магистр электромагнетизма
- Прогресс-бар + ачивка em_master (+50 XP) при 10/10

Глава 2 «Электромагнитные явления» (§§12-31, 20 параграфов) закончена.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:54:53 +03:00
Maxim Dolgolyov 007c9211cd feat(phys8 ch2): Phase 4 Wave 1 — §28 постоянные магниты + §29 магнитное поле
§28 Постоянные магниты:
- 3 теории: что такое магнит, закон взаимод. полюсов, поле Земли
- IV-1: интерактив 2 магнита, slider переворота второго —
  N–S притягиваются (зелёные стрелки), N–N отталкиваются (красные)
- IV-2: 5 раундов «полюсы»
- IV-3: DnD 8 утверждений правда/ложь
- IV-4: 6 MCQ

§29 Магнитное поле:
- 3 теории: что такое B, линии индукции (замкнутые!), опилки
- IV-1: ГЛАВНЫЙ ВИЗУАЛ — 7 эллиптических замкнутых линий поля
  полосового магнита N→S, со стрелками направления, прямые
  линии вблизи оси
- IV-2: 5 утверждений правда/ложь
- IV-3: DnD 8 свойств «электрическое vs магнитное поле»
- IV-4: 6 MCQ

Добавлен общий хелпер _drawMagnet.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:49:58 +03:00
Maxim Dolgolyov 24d7f2b1d9 feat(phys8 ch2): Phase 3 Wave 4 — §26 P=UI/Джоуль-Ленц + §27 электроэнергия
§26 Работа и мощность тока:
- 3 теории: A=UIt, P=UI=I²R=U²/R, закон Джоуля-Ленца
- IV-1: калькулятор + анимация нагрева резистора по tempColor,
  цвет меняется от синего до красного в зависимости от P,
  glow при высокой мощности
- IV-2: 5 раундов «какую формулу использовать?»
- IV-3: DnD 5 приборов по возрастанию P (LED → автомобиль)
- IV-4: 6 числовых задач

§27 Электроэнергия. Безопасность:
- 3 теории: кВт·ч, экономия, правила ТБ
- IV-1: ГЛАВНЫЙ ВИЗУАЛ — счётчик за месяц: 4 прибора (лампа, ТВ,
  чайник, холодильник) + slider'ы часов/день и тарифа,
  показывает кВт·ч и руб + «самый прожорливый прибор»
- IV-2: 6 ситуаций «безопасно/опасно»
- IV-3: DnD 8 ситуаций «экономит/расходует»
- IV-4: 5 задач (включая обогреватель за месяц)

Со Phase 3 завершён: §19-27 (постоянный ток, 9 параграфов).
Phase 4 → §28-31 + Финал главы 2.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:46:36 +03:00
Maxim Dolgolyov a1b57d8936 feat(phys8 ch2): Phase 3 Wave 3 — §23 R=ρl/S + §24 последов./реостат + §25 паралл.
§23 R = ρl/S:
- 3 теории: формула, таблица ρ (6 материалов), применение
- IV-1: калькулятор с визуализацией провода (длина и толщина
  меняются на SVG)
- IV-2: 6 пар «у какого больше R?»
- IV-3: DnD 8 факторов «R растёт/падает»
- IV-4: 5 расчётных задач

§24 Последовательное соединение. Реостат:
- 3 теории: правила, реостат, ёлочная гирлянда
- IV-1: ГЛАВНЫЙ ВИЗУАЛ — реостат-симулятор: slider положения движка,
  яркость лампы меняется с током
- IV-2: 3-slider калькулятор послед. цепи (U, R₁, R₂) — I, U₁, U₂
- IV-3: DnD 8 утверждений «верно/неверно»
- IV-4: 5 задач (включая «реостат при I=0.2 А»)

§25 Параллельное соединение:
- 3 теории: правила, R = R₁R₂/(R₁+R₂), розетки дома
- IV-1: визуальная схема 2 параллельных ветвей с резисторами,
  токи и общий R рассчитываются
- IV-2: 6 раундов «послед. или паралл.?»
- IV-3: DnD 8 формул на 2 типа соединения
- IV-4: 6 задач (включая утюг+лампа в розетке 220 В)

Добавлена константа MAT_RHO (6 материалов).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:42:57 +03:00
Maxim Dolgolyov 31e03923ca feat(textbooks): миграция контента Физики 9 — §1-36 + ЛР11
- migrate_phys9_ch4.js: первая итерация (§31-36 → ch4)
- migrate_phys9_content.js: обобщённый скрипт для ch1-3 (§1-30) + ch5 (ЛР11 из монолита)

Каждая глава:
- Получает CSS-блок монолита (стили .para-hero, .fcard, .def-box и т.д.)
- Подключает Font Awesome CDN для иконок в section-title
- HTML-тела параграфов вставляются в STUB-builder'ы заменой по regex
- Эмодзи (нарушают правило проекта) и orphaned <i> теги удаляются на этапе clean()

Размеры после миграции:
- ch1 (кинематика, §1-14): 136 КБ
- ch2 (динамика, §15-24): 127 КБ
- ch3 (статика, §25-30): 100 КБ
- ch4 (законы сохранения, §31-36): 133 КБ
- ch5 (лаб. практикум): 90 КБ (только ЛР11 заполнен, ЛР1-10 и ЛР12 — STUB)

Источник physics_9.html сохранён для возможной повторной миграции.
2026-05-29 23:40:30 +03:00
Maxim Dolgolyov 073cc3c06d feat(phys8 ch2): Phase 3 Wave 2 — §21 эл. цепь + §22 закон Ома I=U/R
§21 Электрическая цепь:
- 3 теории: элементы цепи, амперметр/вольтметр, схема
- IV-1: интерактивная цепь с батареей, лампой, амперметром
  (последовательно), вольтметром (параллельно лампе) и ключом;
  при замыкании ключа лампа загорается и приборы показывают значения
- IV-2: 6 вопросов «как включать прибор?»
- IV-3: DnD 8 утверждений «правильно/неправильно»
- IV-4: 6 MCQ

§22 Закон Ома:
- 3 теории: I=U/R, выводы (U=IR, R=U/I), ВАХ
- IV-1: ВАХ-плоттер — slider R 2-50 Ом, динамическая прямая I(U)
  с подписью наклона
- IV-2: калькулятор U+R → I с «бытовой аналогией»
- IV-3: 5 концептуальных вопросов
- IV-4: 6 числовых задач

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:38:18 +03:00
Maxim Dolgolyov 9a123be71c feat(phys8 ch2): Phase 3 Wave 1 — §19 источники тока + §20 I=q/t
§19 Электрический ток. Источники:
- 3 теории: условие тока, типы источников, гальв. элемент Вольта
- IV-1: круговая анимация работы батарейки — 14 электронов
  бегут по контуру против тока, лампа загорается
- IV-2: 5 источников «химия/механика/свет/тепло»
- IV-3: DnD «есть ли ток?» 8 ситуаций
- IV-4: 6 MCQ

§20 Сила тока I = q/t:
- 3 теории: формула, направление тока vs электронов, таблица
- IV-1: симуляция потока электронов через провод, slider I 0-3 А,
  лампа меняет яркость, счётчик «Кл и электронов в секунду»
- IV-2: 5 числовых задач q/t/I
- IV-3: DnD 5 устройств по возрастанию I (наушники → стартер)
- IV-4: 5 расчётных задач с допусками

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:34:55 +03:00
Maxim Dolgolyov 17a4a1b751 feat(phys8 ch2): Phase 2 Wave 3 — §17 эл. поле + §18 A=qU (Phase 2 завершён)
§17 Электрическое поле:
- 3 теории: что такое поле, линии поля, напряжение U=A/q
- IV-1: линии поля точечного заряда через fieldLinesPointCharge,
  slider знака (+/−) и силы поля (40-120 px scale)
- IV-2: 5 вопросов о свойствах линий
- IV-3: DnD 8 утверждений «правда / ложь»
- IV-4: 6 MCQ

§18 Единица напряжения. A = qU:
- 3 теории: формула, 1 Вольт = 1 Дж/Кл, таблица напряжений в быту
- IV-1: калькулятор A=qU с анимацией batteryEMF→стрелка→lightbulb
  + аналогия «поднять груз на 1 м»
- IV-2: 5 числовых задач «дано/найди» (q, U, A)
- IV-3: DnD 5 источников по возрастанию U (батарейка → молния 10⁸ В)
- IV-4: 5 расчётных задач (включая 1 эВ = 1.6×10⁻¹⁹ Дж)

С Phase 2 целиком: §12-18 (7 параграфов) — электростатика главы 2
закончена. Дальше — Phase 3: постоянный ток (§19-27).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:22:09 +03:00
Maxim Dolgolyov 053c2ebfdd feat(phys8 ch2): Phase 2 Wave 2 — §15 элементарный заряд + §16 строение атома
§15 Электрический заряд. Элементарный заряд:
- 3 теории: e = 1.6·10⁻¹⁹ Кл, формула q = Ne, закон сохранения
- IV-1: интерактивный калькулятор q ↔ N со slider в логарифм. шкале
  10⁶..10¹⁸ электронов, выводит q в Кл и нКл
- IV-2: 6 раундов «существует ли такой заряд?» (проверка кратности e)
- IV-3: DnD 8 ситуаций «сохраняется / меняется» (заземление, рентген...)
- IV-4: 5 расчётных задач с допусками и подсказками

§16 Строение атома. Ионы:
- 3 теории: планетарная модель, ионы, таблица атомов и ионов
- IV-1: главный визуал — интерактивная модель атома: slider'ы Z и
  число электронов, электроны распределяются по 3 оболочкам (2/8/18),
  ядро с Z протонов, заряд иона рассчитывается автоматически
- IV-2: 6 викторин по таблице ионов
- IV-3: DnD 9 частиц на 3 категории (+/-/нейтр)
- IV-4: 6 MCQ

Глобальная константа E_CHARGE = 1.6e-19 на верхнем уровне.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:18:46 +03:00
Maxim Dolgolyov ed6fea460c feat(phys8 ch2): Phase 2 Wave 1 — §12 электризация + §13 пров/диэл + §14 индукция
§12 Электризация тел. Взаимодействие зарядов:
- 3 теории: 2 рода зарядов, закон взаимодействия, примеры
- IV-1: виртуальный электроскоп — кнопки «потереть» и «поднести»,
  листочки расходятся при поднесении заряженной палочки
- IV-2: 5 опытов «знак заряда» (стекло о шёлк, эбонит о шерсть...)
- IV-3: DnD 8 пар (одноим./разноим./нейтральные) на 2 категории
- IV-4: 6 MCQ

§13 Проводники и диэлектрики:
- 3 теории: свободные носители, таблица примеров, бытовая электротехника
- IV-1: симуляция «куда уходит заряд?» — на металле заряды разлетаются
  по поверхности (анимация движения по окружности), на пластике —
  остаются в точке касания
- IV-2: 8 материалов «проводник/диэлектрик»
- IV-3: DnD 8 материалов на 2 категории
- IV-4: 6 MCQ

§14 Электризация через влияние:
- 3 теории: что такое индукция, механизм, примеры (молниеотвод)
- IV-1: симуляция «палочка возле металл. шара» — slider положения
  и dropdown знака; шарик «реагирует» — разделение зарядов
  (-+ интенсивность зависит от расстояния)
- IV-2: 5 ситуаций «что произойдёт?»
- IV-3: DnD 8 примеров «индукция (проводник) / поляризация (диэлектрик)»
- IV-4: 6 MCQ

Добавлены _SIMS/_killSim/_isVisible для управления RAF в ch2.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:14:40 +03:00
Maxim Dolgolyov 2dac331aa3 feat(phys8 ch1): Phase 1 Wave 5 — §10 испарение + §11 кипение + Финал главы 1
§10 Испарение:
- 3 теории: что такое испарение, факторы скорости, примеры
- IV-1: симуляция с 28 частицами над поверхностью жидкости —
  испарение зависит от T (slider) и ветра (slider); испарившиеся
  становятся серыми и улетают вверх+вправо, при пропадании за края
  «возвращаются»; счётчик испарившихся; солнце + стрелки ветра
- IV-2: викторина 6 пар сравнения
- IV-3: DnD 8 факторов на ускоряет/замедляет
- IV-4: 6 MCQ

§11 Кипение + Q=Lm:
- 3 теории: кипение, формула Lm, зависимость T_кип от давления
- IV-1: ГЛАВНЫЙ ВИЗУАЛ — полный график T(t) «лёд→вода→пар»
  с 5 цветными сегментами и 2 плато (плавление 0°C, кипение 100°C),
  длительности пропорциональны реальным q_i / Q_total
- IV-2: калькулятор Q=Lm с переводом в кВт·ч и эквивалент нагрева воды
- IV-3: DnD 8 процессов на 3 категории (плавление/испарение/конденсация)
- IV-4: 6 числовых задач (включая полный цикл лёд→пар)

ФИНАЛ ГЛАВЫ 1:
- Шпаргалка 6 формул и понятий
- 7 интегрированных боссов: расчёт ΔT, смешивание, плавление, кипение,
  цепочка нагрева, КПД котла, полный цикл лёд→пар
- Прогресс-бар победы + ачивка «Мастер теплоты» (+50 XP) при 7/7
- Per-boss XP (+10) и hint-кнопки

ACH_LABELS дополнен thermal_master.

Глава 1 «Тепловые явления» завершена: 11 § + финал = 12 секций, все
с симуляциями, калькуляторами, DnD и тренажёрами.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:08:54 +03:00
Maxim Dolgolyov cac9b8acbe feat(phys8 ch1): Phase 1 Wave 4 — §8 плавление + §9 удельная теплота плавления
§8 Плавление и кристаллизация:
- 3 теории: плавление, плато на графике T(t), примеры (включая аморф.)
- IV-1: график T(t) через PHYS.phaseGraphTT с цветной подсветкой
  3 участков (твёрдое/плавление/жидкость) + горизонтальная линия T_пл,
  выбор из 7 веществ (ртуть → железо)
- IV-2: 6 ситуационных вопросов (лёд+вода, плавление железа, аморфные)
- IV-3: DnD ранжирование 5 веществ по T_пл
- IV-4: MCQ-тренажёр

§9 Q = λm:
- 3 теории: формула λm, таблица, цепочка «лёд → вода»
- IV-1: калькулятор Q=λm с анимацией «кубик → лужица»
- IV-2: «цепной» калькулятор Q1+Q2+Q3 для нагрева льда → воды
- IV-3: DnD ранжирование 5 веществ по возрастанию λ
- IV-4: 6 числовых задач (включая цепные и кристаллизацию)

Добавлена константа MAT_MELT.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:03:50 +03:00
Maxim Dolgolyov 0c0eea7a6b feat(textbooks): скелет Физики 9 — hub + 5 глав + миграция БД
- gen_phys9_hub.js: генератор hub из physics_10_hub.html (blue palette, 5 cards)
- gen_phys9_ch.js: генератор 5 файлов глав со STUB-builder'ами по канве physics_10_ch
- 038_physics_9_hub.sql: переразмечает physics-9 как hub + 5 дочерних (ch1-ch5)
- Глава 5 — Лабораторный практикум, 12 ЛР с поддержкой lr-id вместо §

Источник: Исаченкова, Сокольский, Захаревич "Физика 9" (Народная асвета, 2019).
Контент в Phase 5 — авторский (наш материал).
2026-05-29 23:01:59 +03:00
Maxim Dolgolyov d8141087cd feat(phys8 ch1): Phase 1 Wave 3 — §6 (Q=cmΔT) + §7 (Q=qm)
§6 — Расчёт количества теплоты:
- 3 теории: закон Q=cmΔT, удельная теплоёмкость, баланс
- IV-1: калькулятор Q=cmΔT с термометром и анимированным кубиком,
  выбор из 11 веществ (вода/лёд/металлы/стекло/...)
- IV-2: калькулятор смешивания 2 порций воды по m₁T₁+m₂T₂/(m₁+m₂)
- IV-3: DnD-ранжирование 5 веществ по возрастанию c
- IV-4: 6 числовых задач с допуском, подсказки

§7 — Горение и теплота сгорания:
- 3 теории: закон Q=qm, таблица q топлив, КПД
- IV-1: калькулятор Q=qm с анимированным пламенем (высота ∝ m),
  выбор из 8 топлив, перевод в кВт·ч и эквивалент нагрева воды
- IV-2: 6 раундов «какое топливо мощнее»
- IV-3: DnD ранжирование 5 топлив по возрастанию q
- IV-4: 5 числовых задач с подсказками

Добавлены константы MAT_C и MAT_Q — табличные данные для §6, §7.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 22:59:46 +03:00
Maxim Dolgolyov 2ae70dd48f feat(phys8 ch1): Phase 1 Wave 2 — §3 теплопроводность + §4 конвекция + §5 излучение
§3 Теплопроводность:
- Главный визуал: симуляция стержня через PHYS.createHeatBar — slider'ы
  T_горячий, T_холодный, α (от шерсти до серебра), 1D-уравнение тепла
- Викторина «лучший проводник»: 6 пар материалов
- DnD: 8 материалов на 2 категории (хорошие/плохие)
- MCQ 6 вопросов

§4 Конвекция:
- Симуляция тороидального потока: 30 частиц в сосуде, нагреватель снизу,
  тёплые поднимаются по центру, холодные опускаются по краям, цвет
  по tempColor
- Викторина «возможна ли конвекция?» с 6 ситуациями
- DnD: 8 ситуаций (возможна/невозможна)
- MCQ 6 вопросов

§5 Излучение:
- Симуляция «Солнце греет чёрную и белую пластины»: лучи к чёрной
  поглощаются, от белой отражаются; температуры растут с разной
  скоростью (чёрная до 75°C, белая до 35°C)
- True/False квикфайр (7 утверждений)
- DnD: 9 примеров на 3 вида теплопередачи (главный синтез главы)
- MCQ 6 вопросов

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 22:55:42 +03:00
Maxim Dolgolyov d52ad9b06f docs(plans): план интеграции Физика 9 (Исаченкова 2019, 5 глав, 36§ + 12 ЛР) 2026-05-29 22:51:42 +03:00
Maxim Dolgolyov 244a063363 feat(phys8 ch1): Phase 1 Wave 1 — §1 «Внутренняя энергия» + §2 «Способы изменения U»
§1 — Внутренняя энергия:
- 3 теории: определение U, факторы зависимости, сравнение состояний
- IV-1: симуляция «холодный vs горячий газ» — 2 сосуда с молекулами,
  скорость ∝ √T_K, цвет по tempColor
- IV-2: викторина из 6 раундов «У какого тела U больше?»
- IV-3: DnD на 8 факторов «Зависит / Не зависит»
- IV-4: MCQ-тренажёр на 6 вопросов с XP-наградой

§2 — Способы изменения внутренней энергии:
- 3 теории: 2 способа, 3 вида теплопередачи, примеры из жизни
- IV-1: двойная анимация «работа (брусок-трение) vs теплопередача
  (контакт горячее+холодное)» с термометром и стрелками потока тепла
- IV-2: викторина из 8 ситуаций «работа или теплопередача?»
- IV-3: DnD-сортировка 8 ситуаций по 2 категориям
- IV-4: MCQ-тренажёр с XP-бонусом

Инфраструктура: _SIMS, _killSim, _isVisible — управление RAF для
паузы симуляций при переключении секций.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 22:50:01 +03:00
Maxim Dolgolyov 33a91900a8 feat(phys8): Phase 0 — skeleton hub + 3 chapters + lab + phys.js/optics.js
Полная инфраструктура курса «Физика 8» (Исаченкова, 2018):
- physics_8_hub.html: палитра violet/indigo, 3 главы + ЛР + финал курса
  с 10 интегрированными боссами и ачивкой «Магистр физики 8» (+150 XP)
- physics_8_ch1.html (Тепловые, §§1–11): красный акцент
- physics_8_ch2.html (Электромагнитные, §§12–31): янтарный акцент
- physics_8_ch3.html (Световые, §§32–40): голубой акцент
- physics_8_lab.html (7 ЛР): зелёный акцент
- Расширение phys.js: tempColor, thermometer, calorimeter, createHeatBar,
  phaseGraphTT, Rseries, Rparallel
- Новый модуль optics.js: ray, refractRay, reflectRay, mirrorPlane,
  mirrorSpherical, thinLens, buildLensImage, goldenRays, eyeDiagram,
  lightObject, shadowTriangle
- Миграция 037: replace legacy children (thermal/electro/optics) на
  physics-8-ch1/ch2/ch3 + physics-8-lab; обновлён hub до 47 пунктов

BUILDERS всех § рендерят stub с указанием Phase/Wave из PLAN_PHYSICS_8.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 22:41:37 +03:00
Maxim Dolgolyov 8e8988ec23 docs(plans): добавлен план реализации Физика 8 (Исаченкова, 2018) 2026-05-29 22:20:00 +03:00
Maxim Dolgolyov 2e30878f00 fix: textContent → innerHTML для строк с HTML entity (после замены эмодзи) 2026-05-29 21:49:44 +03:00
Maxim Dolgolyov 095265f482 chore: эмодзи → HTML entity во всех учебниках 10-11 классов 2026-05-29 21:46:13 +03:00
Maxim Dolgolyov b3ea35049f feat(stereo3d): drag-to-rotate для 3D-сцен Геометрии 10
STEREO3D.attachDragRotate(target, scene, onChange?) — мутирует scene.rotX/rotY на mouse/touch drag, по умолчанию пересобирает innerHTML контейнера через scene.render(). Применено к аннотированному кубу §1 (viz1-cube) в geometry_10_r1.html. Остальные сцены не затронуты.
2026-05-29 21:45:33 +03:00
Maxim Dolgolyov 96b5e46660 revert(textbooks ui): откат компактной сетки — возврат к крупным карточкам с обложками 2026-05-29 21:43:11 +03:00
Maxim Dolgolyov f08a81263d refactor(textbooks ui): компактная сетка каталога — плитки 190px + фильтры по предмету
- Карточка: горизонтальный layout, 74px высоты — цветная маркер-полоса слева (46px) с классом + 4-буквенной аббрев. предмета + watermark, справа название/счётчик параграфов/прогресс-бар (3px)
- В ряд помещается 5-7 карточек на десктопе (вместо 2-3)
- Вся карточка кликабельна (ведёт на 'Продолжить' или 'Открыть')
- Кнопка 'Назначить ДЗ' для учителя — overlay в углу, появляется на hover
- Сверху сетки чипсы-фильтры по предмету с счётчиком; скрыты, если предметов <2
- На hover чуть приподнимается, в углу появляется 'Продолжить →'
- Mobile: 160px минимум, узкие отступы
2026-05-29 21:39:55 +03:00
Maxim Dolgolyov 79992d23c5 fix(bg): rain — drops instead of vertical stripes
Linear-gradients tiled at 3px wide produced striped curtains, not
rain. Switched to two pseudo-element layers of elongated radial
ellipses (1.5px × 12-18px) scattered across 130-180px tiles —
sparse drops at two depths with different fall speeds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 21:38:25 +03:00
Maxim Dolgolyov f6fbe922a9 feat(shop): 9 premium animated backgrounds
Doubles the bg catalogue from 10 to 19 with richer multi-layer
animations. Every keyframe pack is CSS-only and respects the existing
prefers-reduced-motion fallback.

  sunset       550   slow hue cycle through warm palette
  rain         650   2-layer vertical streaks at different speeds
  snow         700   3-layer drifting flakes pattern
  clouds       750   drifting white blobs on day sky (only LIGHT one)
  fireflies    800   pulsing glowing dots, opposing drift
  cyber-grid   850   neon grid scrolling down with vignette
  kaleidoscope 1000  two huge conic-gradients in opposite rotation
  ocean        1100  layered blobs drift like undulating waves
  aurora-dance 1500  multi-band aurora — new premium top-tier

Tonal classification mirrored in api.js DARK_BG_SLUGS so the veil
picks the right contrast: clouds is light, the other 8 join the dark
set (alongside dark, stars, aurora, nebula, grid).

Each background also gains a matching .bg-preview.bg-<slug> rule that
reuses the same animation at the shop's 90px swatch — WYSIWYG.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 21:35:59 +03:00
Maxim Dolgolyov d838c94df4 fix(bg): visible button-groups and tracks on dark backgrounds
The pill containers (.p-tabs, .shop-filters) used a 6% black fill that
disappeared on the dark veil, so the rounded button group lost its
outline and the inactive tabs looked like floating text. Same for the
xp / progress tracks (.ach-xp-progress, .ep-bar, .po-bar) that used
7% black.

Dark-tone overrides:
  • Containers get a 6% white wash + 10% white border so the pill
    shape stays readable
  • Inactive p-tab gets the same color/hover treatment that .shop-filter
    already had (was an oversight in the previous fix)
  • Active pills gain a darker shadow halo so they don't look detached
  • Progress tracks switch to a 10% white track instead of 7% black

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 21:31:53 +03:00
Maxim Dolgolyov 23075dddb1 fix(bg): light text on dark-tone backgrounds
The dark veil was right (deep navy at 78%), but every page chrome
element below it inherited light-theme text colors and faded to
invisible — 'Магазин наград' header, shop filter buttons, achievement
group titles, balance counter etc.

Targeted overrides for body[data-bg-tone='dark']: only the elements
that sit directly on the veil get a light text color. White cards
(.shop-item, .ach-item, .ep-card) keep their dark text intact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 21:29:54 +03:00
Maxim Dolgolyov d2ca0d61cc fix(bg): add translucent veil so animated bgs don't bleed UI
The single bg-fx layer was painting at full vibrancy behind the entire
app. Most UI elements use rgba() fills — chips, sub-panels, the
achievements .ach-item, the goal-tier bar — so saturated colors bled
right through, hurting readability on the Достижения / dashboard /
mocks tabs.

Layered fix:
  • bg-fx drops to z-index:-2 (the animated layer)
  • new #ls-bg-veil sits on z-index:-1 with rgba(245,247,251,.78)
    (light) or rgba(15,23,42,.55) when body[data-bg-tone='dark']
  • applyCosmetics injects both elements and tags the body with
    bg-tone based on the slug (dark/stars/aurora/nebula/grid go dark,
    everything else light)
  • clearing the bg removes both layers + the tone attribute

Result: animations stay perceptible (~22% of the chosen palette comes
through the veil), but the page chrome reads at normal contrast.

Shop swatches keep full vibrancy — the .bg-preview is meant to show
the raw palette so users can compare.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 21:27:35 +03:00
Maxim Dolgolyov 1b04384770 fix(shop): opaque cards on owned/active so backgrounds don't bleed
The shop item card .owned/.active states used semi-transparent fills
(rgba(34,197,94,0.03) / rgba(6,214,224,0.04)) for a subtle color hint.
Phase 6 made the free background presets auto-owned, so every
'Применить'-able card got the translucent overlay — and with an
animated background active, the page-wide gradient bled straight
through the content (see screenshot).

Switch to fully opaque #fff fills, keep the color cue in the border
plus a thin inner-shadow halo. Same visual signal, no bleed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 21:23:44 +03:00
Maxim Dolgolyov 98ec1ed478 feat(shop): animated backgrounds — system-wide cosmetic + picker
A new cosmetic family: a fixed-position overlay painted behind every
page of the app, switchable from the profile shop. 4 free presets + 6
paid (250-1200 coins) so the new economy has another sink. Every
animation respects prefers-reduced-motion and falls back to its static
gradient.

Catalogue (migration 035):
  free:   none, gradient-soft, dots, dark
  paid:   gradient-flow, grid, bubbles, stars (mid)
          aurora, nebula                       (premium)

Backend:
  • migration 035 adds users.active_background + rebuilds shop_items
    CHECK to include 'background' (standard SQLite 'new + copy + swap')
    and seeds 10 items
  • shopController.getMyActive returns { background: { slug } } and
    activateItem handles type='background' (stores bare slug in
    active_background) + skips the user_purchases check for price=0
    so free presets work for everyone without per-user rows
  • routes/shop validate schema lets 'background' through

Frontend:
  • api.js applyCosmetics injects <div id='ls-bg-fx'> at body start
    and toggles class to bg-<slug>. Cleared backgrounds remove the
    element so dark→light transitions don't leave artifacts.
  • ls.css gains a self-contained 'ANIMATED BACKGROUNDS' block:
    keyframes per animated slug (ls-bg-flow, ls-bg-grid-scan,
    ls-bg-bubble-rise, ls-bg-stars-twinkle, ls-bg-aurora-spin,
    ls-bg-nebula-pan) wrapped in a prefers-reduced-motion kill-switch.
    Same .bg-<slug> classes are reused for the .bg-preview swatches.
  • profile.html shop:
    - new 'Фоны' filter button between Рамки and Титулы
    - _renderItemPreview type='background' draws a real 56-aspect swatch
      (same CSS as the page bg — what you see is what you apply)
    - _isItemActive matches by slug for background type
    - free items (price===0) treated as auto-owned in render so users
      can apply them without a fake 'purchase' step

Verified: getMyActive returns { background: { slug: 'nebula' } } after
flipping users.active_background; activate path updates the row.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 21:13:53 +03:00
Maxim Dolgolyov 41ca41d69c feat(gamification): hide locked achievements of disabled modules
When a teacher / admin turns off a module (per-class, per-role, or
globally), the matching achievements no longer clutter the user's
'Достижения' tab — but only the ones the user hasn't earned yet.
Already-unlocked achievements stay visible forever. We never take a
reward away after the fact.

Backend:
  • migration 034 adds achievements.required_feature + backfills 42
    rows (9 exam9, 8 red_book, 6 lab, 5 classroom, 4 textbooks, 3 each
    of biochem/flashcards, 2 live_quiz, 2 pet). 32 core rows stay
    NULL = always visible.
  • middleware/features.js gains computeFeaturesForUser(userId, role)
    + isFeatureEnabledForUser — extracted from server.js#/api/features
    so multiple consumers (gam achievements, future shop filter, etc.)
    apply the same global+class+free_student merge.
  • service.seedAchievements derives required_feature from track/group
    when ACHIEVEMENT_DEFS doesn't spell one out, and UPDATE-syncs it on
    every boot — keeps catalogue consistent across upgrades.
  • _shared.getAllAchs SELECT now returns required_feature.
  • gamification/api.getAchievements filters: drop locked rows whose
    required_feature is === false for this user. Missing flag = ON
    (opt-in disable model).

Verified: with exam9 + pet disabled, 12 locked achievements vanish from
the response while unlocked ones in those tracks remain.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 20:40:16 +03:00
Maxim Dolgolyov dbeee44fc7 feat(shop): Phase 5 — 22 new shop items (frames + titles + theme)
Triples the catalogue from 10 to 32 active items so coins finally have
somewhere to land. Migration 033 seeds:

  • 12 new frames at 200-1200 coin tiers (морская, лесная, закат,
    минимал, винтаж, пиксельный, молния, космос, изумруд, призрак,
    кибер, золотой ободок) — each with curated CSS that renders
    correctly in the shop preview added in Phase 4

  • 9 new titles at 150-2000 coin tiers (стажёр, аналитик, геометр,
    алгебраист, физик, олимпиец, боссфайтер, магистр, профессор)
    — colored pills that pair with the new title preview UI

  • 1 new theme (тёплая бумага) using the existing active_theme slot

Effects are intentionally not extended in this migration — js/api.js
_applyEffect() only knows pulse/sparkle/snow today, and adding new
effect kinds belongs in a follow-up that updates the renderer in
tandem with the catalogue entries.

Re-runnable: each row is gated by WHERE NOT EXISTS (name, type) so
re-applying the migration on a partially-seeded environment is safe.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 20:32:08 +03:00
Maxim Dolgolyov 268ea31bb8 feat(gamification): Phase 4 — standalone coin events + coin_log
Coins were always 1:10 of XP. Now they have their own event log + a
helper that dedups by reason within a configurable window.

Backend:
  • migration 032 creates coin_log (user_id, amount, reason, created_at)
    with indices for the 'fired today?' check
  • awardCoins now records into coin_log on every call (reason defaults
    to 'xp_bonus' for the legacy XP-proportional path)
  • awardCoinsOnce(userId, amount, reason, window) — fires the bonus
    only if no row matches in the window:
      'day'     → DATE(created_at) = today
      'week'    → ISO week match
      'forever' → never twice

Wired events (Phase 4 subset of the plan):
  • Daily login — 10 coins, once/day. Hooked in updateStreak so the
    bonus rides on the existing 'daily_activity' XP trigger.
  • Daily goal completion — 15/25/40 coins (easy/medium/hard), once/day.
    Sits next to the existing tier XP bonus in updateDailyGoal.
  • Variant clear — 30 coins, once per (user, variant) forever. Fires
    from the exam-prep attempts endpoint when the user's final correct
    answer fills out a math9 variant.

Deferred (need invasive trigger hooks): weekly goal, paragraph close,
boss defeated, referral.

Verified end-to-end: awardCoinsOnce returns true→false on repeated
calls, coin_log records the first, coins balance moves once.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 20:30:14 +03:00
Maxim Dolgolyov b005226e2c feat(gamification): Phase 3 — 38 new achievements + triggers + 'exam' group
Adds achievement coverage for every feature shipped since the original
seed: exam-prep (math9), textbooks, classroom/board, biochemistry,
live-quiz, flashcards, hangman/crossword, pet, plus a new 'social' group
for class & leaderboard wins and 'consistency' extensions (streak_100,
goal_30, early_bird, night_owl).

74 achievements now (was 36), grouped into 7 sections:
  onboarding (3) → volume (8) → mastery (16) → consistency (7) →
  exam (9) → exploration (21) → social (10)

A new top-level group 'exam' slots between consistency and exploration
in the profile UI.

What's wired in service.checkPhase3Achievements (called from
checkAchievements):
  • streak_100 — extends the existing streak track
  • goal_30 — 30 days with daily_goals fully met (SUM check)
  • early_bird / night_owl — strftime('%H', xp_log.created_at)
  • exam_first / 25 / 100 — exam_attempts where is_correct=1
  • exam_variant_clear / 5_variants — perfect mock-variant sessions
  • exam_topic_master — ≥10 attempts at ≥90% on a single subtopic
  • exam_mock_done / pass / perfect — exam_mock_sessions.score
  • tb_first_para — textbook_progress
  • fc_first_deck / 100_cards / 1000_cards — flashcard_reviews
  • bc_first_molecule / 5_challenges / 20_challenges — bio_user_*
  • game_win_5 / 25 — xp_log reason IN (hangman_win, crossword_win)
  • pet_streak_7 / 30 — users.pet_petting_streak
  • lq_first / 3_quizzes — live_answers grouped by session
  • cr_first_join / 5 / 25_lessons — classroom_attendance
  • class_5_members / 25 — teacher's biggest class
  • parent_link — parent_links presence
  • lb_top10 / lb_top1 — weekly XP rank among students

What's deferred (catalog entry only, no trigger yet):
  • tb_chapter_done / tb_book_done / tb_3_books — need to parse
    textbook_progress.paragraphs_read JSON against textbook structure

Every block is wrapped in its own try/catch so a missing table on a
legacy install can't take down the whole achievement sweep.

Verified end-to-end: admin user picked up 7 new unlocks on first
checkAchievements call after seed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 20:26:59 +03:00
Maxim Dolgolyov 90c8464356 feat(gamification): Phase 2 — taxonomy + grouped UI for achievements
Achievements gain four new columns: group_slug, track, tier, sort_order.
Existing 36 are backfilled into 5 groups (onboarding/volume/mastery/
consistency/exploration) by migration 030; 'social' stays empty until
Phase 3 adds class/leaderboard/live-quiz tracks.

Tracks bundle escalating thresholds into one progression (tests_10/50/
100 → track='tests', tiers 1-3), so the UI can show '★★★' on the top
tier and the user understands the relationship. sort_order is reserved
in blocks of 10 inside groups of 100, leaving room for inserts without
renumbering.

Backend:
  • migration 030 adds the columns + index + backfill UPDATEs
  • _shared.ACHIEVEMENT_DEFS gains group/track/tier/sort_order per row
  • _shared exports new ACHIEVEMENT_GROUPS metadata for the UI
  • service.seedAchievements writes the new fields on insert AND
    backfills them via UPDATE on existing rows (fresh installs +
    pre-migration installs both end up consistent)
  • _shared.stmts.getAllAchs SELECT updated, ORDER BY sort_order
  • gamification/api.getAchievements forwards the new fields

Frontend:
  • profile.html groups achievements by group_slug with a per-section
    header (icon + title + 'unlocked / total' chip) and a tier-star
    badge (★★ etc.) on tier ≥ 2 items
  • Hard-coded ACH_GROUPS mirror of the backend list (small, stable)
  • New CSS for .ach-group / .ach-group-head / .ach-tier

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 20:19:46 +03:00
Maxim Dolgolyov 660e7e2747 feat(gamification): Phase 1 — full kill-switch + textbook XP wrapping
Until now the 'gamification' feature flag did nothing: it had no row in
app_settings, the admin couldn't toggle it, awardXP/awardCoins ignored
it, and the CSS only hid three dashboard widgets — XP bars in textbooks
stayed visible regardless.

Phase 1 closes every hole.

Backend (source of truth):
  • migration 029 seeds feature_gamification_enabled=1
  • new isGamificationEnabled() helper in gamification/_shared.js with a
    30s cache + invalidateGamificationCache() for instant admin toggles
  • awardXP / awardCoins / updateStreak / unlockAchievement /
    checkAchievements all bail out when the flag is off
  • /api/gamification/* and /api/shop/* (user routes) return 404 when
    disabled; admin routes remain open so the switch itself is reachable
  • adminController.updateFeatures gains 'gamification' in the allow-list
    and invalidates the cache on flip

Frontend:
  • LS.isGamificationEnabled() (synchronous, populated by loadFeatures)
    so xp.js + applyCosmetics can bail without a round-trip
  • xp.js load/add/flush become no-ops when the flag is off
  • applyCosmetics skips the round-trip when off
  • CSS .no-gamification rule expanded to cover .hero-xp-badge, .po-xp,
    .xp-card, .xp-bar, #frames-section, and a universal [data-gamified]
    hook for future blocks

Textbooks (Variant 2 of the plan):
  • backend/scripts/wrap_textbook_xp.py — idempotent script that adds
    data-gamified to 167 XP tags across 63 textbook files (chapters +
    hubs, all subjects/grades). Single CSS rule now hides everything.

Verified end-to-end: with the flag off, awardXP/awardCoins write nothing;
flipping back restores normal behavior.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-29 19:43:24 +03:00
Maxim Dolgolyov 3e7e6e5b9b feat(phys11 ch8): Waves 13-14 — Глава 8 + ФИНАЛ КУРСА (12 интегральных боссов)
- ch8 — индиго-тема (--pri:#4f46e5), watermark ∞/★
- §45: эволюция картины мира (механика → ЭМ → СТО → ОТО → кванты → Стандартная модель), иерархия материи (от кварков до Вселенной), открытые проблемы (тёмная материя, тёмная энергия, объединение теорий)
- ФИНАЛ КУРСА: 12 интегральных боссов по всем 8 главам
  - Босс I: Колебания (Гл. 1)
  - Босс II: ЭМ-индукция (Гл. 2)
  - Боссы III-IV: Оптика (Гл. 3, §14-§17 и §18-§23)
  - Босс V: СТО (Гл. 4)
  - Босс VI: Фотоны (Гл. 5)
  - Боссы VII-VIII: Атом + Лазеры (Гл. 6)
  - Боссы IX-XI: Ядерная физика (Гл. 7)
  - Босс XII: Элем. частицы + картина мира
- Каждый босс 5 этапов, +80 XP
- При победе всех 12: ачивка phys11_master 'МАГИСТР ФИЗИКИ 11' + 500 XP бонус
- КУРС ФИЗИКИ 11 КЛАССА ЗАВЕРШЁН: 8 глав, 45 параграфов, ~80 боссов, 9 финальных ачивок
2026-05-29 19:30:41 +03:00
Maxim Dolgolyov cef226c53e feat(phys11 ch7): Waves 11-12 — Глава 7 «Ядерная физика» (§35-§44 + Финал)
- phys-fx.js: PHYS.RadioactiveDecay (график N(t)=N₀·2^(-t/T))
- ch7 — розово-красная тема (--pri:#e11d48), 10 параграфов
- §35: протонно-нейтронная модель, нуклоны, изотопы, изобары, ядерные силы
- §36: ядерные реакции, законы сохранения,  = \Delta m c^2$
- §37: дефект массы, {св}$, удельная $\varepsilon$, максимум у Fe
- §38: радиоактивность (Беккерель), α/β/γ, проникающая способность
- §39: закон распада  = N_0 \cdot 2^{-t/T}$, активность (Бк), C-14
- §40: деление U-235, цепные реакции, $, критическая масса
- §41: ядерный реактор (Ферми 1942), замедлитель, стержни, ВВЭР/РБМК
- §42: термояд D+T, Солнце, ИТЭР, токамак
- §43: дозы (Грей, Зиверт), коэф. $, нормы радиационной безопасности
- §44: Стандартная модель — 6 кварков, 6 лептонов, бозоны, Хиггс (2012), 4 взаимодействия
- 20 квизов + 10 боссов + 5 интегральных финальных боссов
- Финал главы: +200 XP, ачивка ch7_master 'Магистр ядра'
2026-05-29 19:26:16 +03:00
Maxim Dolgolyov a6d86f4374 feat(phys11 ch6): Wave 10 — Глава 6 «Физика атома» (§30-§34 + Финал)
- phys-fx.js: PHYS.BohrAtom (атом водорода с орбитами + переходом + фотон), PHYS.EnergyLevels (диаграмма E_n + переход + λ)
- ch6 — зелёная тема (--pri:#16a34a), watermark ⊕/n/ν/ω/L/★
- §30: открытие электрона (Томсон), опыт Резерфорда (1911), состав ядра, изотопы
- §31: 2 постулата Бора (1913), E_n=-13,6/n², Боровский радиус
- §32: спектры (сплошные/линейчатые/полосатые), формула Ридберга, серии Лаймана/Бальмера/Пашена
- §33: спонтанное и индуцированное излучение (Эйнштейн 1916), инверсная населённость
- §34: лазеры (Мейман 1960), резонатор, 4 свойства лазерного излучения, применения
- 10 квизов + 5 боссов (b1-b5) + buildSingleQuizPara helper для компактности
- Финал: 3 интегральных босса (fb1-fb3), +150 XP бонус, ачивка ch6_master
2026-05-29 19:18:04 +03:00
Maxim Dolgolyov b5c224d7f5 feat(phys11 ch5): Wave 9 — Глава 5 «Фотоны. Действия света» (§27-§29 + Финал)
- phys-fx.js: PHYS.PhotoeffectLab (катод+свет+анод+амперметр), PHYS.PlanckLinear (график Eк,max от ν)
- ch5 — розовая тема (--pri:#ec4899), watermark hν/A/λ/★
- §27: кризис АЧТ, гипотеза Планка E=hν (1900), открытие ф/э (Герц, Столетов), 3 закона
- §28: фотон, уравнение Эйнштейна hν=A+Eк, работа выхода, красная граница
- §29: импульс фотона p=hν/c, давление света, опыт Лебедева (1900), КВ-дуализм, де Бройль λ=h/p
- 6 квизов + 3 босса (b1-b3)
- Финал: 3 интегральных босса (fb1-fb3), +150 XP бонус, ачивка ch5_master
2026-05-29 19:10:17 +03:00
Maxim Dolgolyov 9df4fd5e24 feat(phys11 ch4): Wave 8 — Глава 4 «Основы СТО» (§24-§26 + Финал)
- phys-fx.js: PHYS.GammaPlot (график γ(β)), PHYS.TimeDilation (двое часов), PHYS.LengthContraction (стержень в покое и в движении)
- ch4 — синяя тема (--pri:#2563eb), watermark c/γ/E/★
- §24: принцип отн. Галилея, кризис эфира, опыт Майкельсона – Морли
- §25: 2 постулата Эйнштейна, замедление времени Δτ=γΔτ₀, сокращение L=L₀/γ, релятив. сложение скоростей
- §26: релятив. импульс p=γmv, E=γmc², E₀=mc², E²=(pc)²+(mc²)², аннигиляция, ядерная энергия
- 6 квизов + 3 босса (b1-b3)
- Финал: 3 интегральных босса (fb1-fb3), +150 XP бонус, ачивка ch4_master
2026-05-29 18:56:52 +03:00
Maxim Dolgolyov 06db392f6a feat(phys11 ch3): Wave 7 — §21-§23 + Финал главы 3 (ThinLens + TwoLensSystem)
- phys-fx.js: PHYS.ThinLens (собирающая/рассеивающая, 2 канон. луча, формула, мнимое=пунктир), PHYS.TwoLensSystem (телескоп Кеплера + микроскоп)
- §21: тонкая линза, формула 1/d + 1/f = 1/F, оптическая сила D = 1/F (дптр), 3 характерных луча
- §22: фотоаппарат (d > 2F) и проектор (F < d < 2F) на одном интерактиве
- §23: лупа Γ = 25/F, микроскоп Γ ≈ Γ_об·25/F_ок, телескоп Кеплера Γ = F_об/F_ок
- 6 квизов (I8-I10 CALC/TH) + 3 босса (b8-b10)
- Финал главы 3: 5 интегрированных боссов (fb1-fb5), +200 XP бонус, ачивка ch3_master
- checkFinalDone() — авто-проверка победы над всеми 5 боссами
- Глава 3 полностью завершена (10 параграфов + финал)
2026-05-29 18:48:16 +03:00
Maxim Dolgolyov 7a703bd184 feat(phys10 phase7 final): итоговая шпаргалка + 10 боссов + ачивка «Магистр физики 10» (+150 XP) 2026-05-29 18:46:10 +03:00
Maxim Dolgolyov 27a67d0866 feat(phys11 ch3): Wave 6 — §18-§20 + phys-fx SphericalMirror/RefractionLab/PrismSpectrum
- phys-fx.js: PHYS.SphericalMirror (вогнутые/выпуклые с формулой и 3 лучами), PHYS.RefractionLab (закон Снелла + ПВО), PHYS.PrismSpectrum (дисперсия, 7 цветов через модель Коши)
- §18: сферические зеркала, формула 1/d + 1/f = 1/F, увеличение Γ = -f/d, построение
- §19: показатель преломления n=c/v, закон Снелла, полное внутр. отражение
- §20: призма + дисперсия, плоскопараллельная пластинка, оптоволокно
- 6 квизов (I5-I7 CALC/TH) + 3 босса (b5-b7)
- §21-§23 + Final остаются заглушками для W7
2026-05-29 18:41:51 +03:00
Maxim Dolgolyov a5ffc624cf feat(phys10 ch6 wave2 + final): §36 «Газы» + §37 «Полупроводники» + Финал Главы 6 2026-05-29 18:41:39 +03:00
Maxim Dolgolyov e4801dcc2f feat(phys11 ch3): Wave 5 — Глава 3 «Оптика» §14-§17 + phys-fx TwoSlit/DiffractionGrating/FlatMirror
- phys-fx.js: PHYS.TwoSlit (опыт Юнга), PHYS.DiffractionGrating (с радужным спектром), PHYS.FlatMirror
- ch3 §14: Электромагнитная природа света + скорость света
- ch3 §15: Интерференция (опыт Юнга)
- ch3 §16: Дифракция света + дифракционная решётка
- ch3 §17: Отражение света + плоское зеркало
- 8 квизов (I1_CALC/NAT, I2_CALC/TH, I3_CALC/TH, I4_CALC/IMG)
- 4 босса (b1-b4) для §14-§17
- §18-§23 + Final — заглушки для W6/W7
2026-05-29 18:35:08 +03:00