Files
Maxim Dolgolyov 5381679c68 chore: консолидация незакоммиченной работы (биохимия + System Health + lab/textbooks)
Зафиксирована накопленная незакоммиченная работа рабочего дерева, КРОМЕ файлов
учебника «Химия 7» (migration 046, chemistry_7_*.html, chem7_svg.js, тест —
оставлены незакоммиченными по запросу).

Включает: модуль биохимии (ядро BIO, 3D VSEPR, химдвижок, баланс, challenges,
пути из БД), System Health Level 1 (вердикт/мониторинг), а также frontend-
страницы и lab/textbooks-правки параллельной сессии.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 18:12:55 +03:00

30 KiB
Raw Permalink Blame History

План реализации: Физика 10 (Беларусь, Громыко, 2019)

Источник: fizika_10kl_gromika_rus_2019.pdf (267 стр., 2 части, 6 глав, 37 §) Издательство: «Адукацыя і выхаванне», 2019 Уровень: базовый + повышенный (с электронным приложением).

Самый большой учебник во всём проекте — 37 параграфов против 19 в Алгебре 9 и 16 в Геометрии 9. Учитывает весь опыт 10 предыдущих учебников: единый KaTeX-эскейп, ноль пикселей в подписях, ноль эмодзи, 3D-движок g3d.js, snap-точки в slider'ах, цветовая кодировка, drag-to-rotate. Главная фишка — настоящие физические симуляции: броуновское движение, изопроцессы (PV-диаграммы), линии поля, электрические цепи, движение заряженных частиц в магнитном поле, явление индукции.


🎯 Содержание учебника

Часть 1. МОЛЕКУЛЯРНАЯ ФИЗИКА

Глава 1. Основы молекулярно-кинетической теории (§§1–10)

§ Тема Ключевые формулы
§1 Основные положения МКТ 3 положения: вещество — частицы, частицы движутся, частицы взаимодействуют
§2 Масса и размеры молекул. Количество вещества N_A = 6.022 \cdot 10^{23}, M = m \cdot N_A, \nu = N/N_A = m/M
§3 Макро- и микропараметры. Идеальный газ. Основное уравнение МКТ p = \dfrac{1}{3} n m_0 \overline{v^2} = \dfrac{2}{3} n \overline{E_k}
§4 Тепловое равновесие. Температура \overline{E_k} = \dfrac{3}{2} kT, шкала Кельвина: T = t + 273
§5 Уравнение состояния идеального газа pV = \nu RT, pV = \dfrac{m}{M} RT (Клапейрон–Менделеев)
§6 Изопроцессы Изотерма pV = \text{const}, изобара V/T = \text{const}, изохора p/T = \text{const}
§7 Строение и свойства твёрдых тел Кристаллы (моно-, поликристаллы), аморфные тела, анизотропия
§8 Строение и свойства жидкостей Поверхностное натяжение, смачивание
§9 Испарение и конденсация. Насыщенный пар Динамическое равновесие, давление насыщенного пара
§10 Влажность воздуха \varphi = \dfrac{p}{p_н} \cdot 100\%, точка росы, психрометр

Глава 2. Основы термодинамики (§§11–15)

§ Тема Ключевые формулы
§11 Внутренняя энергия U = \dfrac{3}{2} \nu R T (одноатомный газ)
§12 Работа в термодинамике A = p \Delta V (изобарный), графически площадь под кривой
§13 Количество теплоты Q = cm \Delta T, Q = \lambda m (плавление), Q = rm (испарение), Q = qm (сгорание)
§14 Первый закон термодинамики \Delta U = Q + A_{внеш} или Q = \Delta U + A_{газ}
§15 Тепловые двигатели. КПД \eta = \dfrac{A}{Q_1} = \dfrac{Q_1 - Q_2}{Q_1}, \eta_{Карно} = \dfrac{T_1 - T_2}{T_1}

Часть 2. ЭЛЕКТРОДИНАМИКА

Глава 3. Электростатика (§§16–24)

§ Тема Ключевые формулы
§16 Электрический заряд. Закон сохранения q = ne, e = 1.6 \cdot 10^{-19} Кл, \sum q = \text{const}
§17 Закон Кулона $F = k \dfrac{
§18 Электростатическое поле Силовая характеристика, источник
§19 Напряжённость поля. Принцип суперпозиции \vec{E} = \dfrac{\vec{F}}{q_{пр}}, \vec{E} = \sum \vec{E_i}
§20 Линии напряжённости Силовые линии, поле точечного заряда, диполя
§21 Работа поля. Потенциал A = qU, \varphi = \dfrac{W_p}{q}
§22 Разность потенциалов. Напряжение U = \varphi_1 - \varphi_2, E = U/d (однородное)
§23 Конденсаторы. Электроёмкость C = q/U, C = \dfrac{\varepsilon \varepsilon_0 S}{d}
§24 Энергия поля конденсатора W = \dfrac{CU^2}{2} = \dfrac{q^2}{2C} = \dfrac{qU}{2}

Глава 4. Постоянный электрический ток (§§25–26)

§ Тема Ключевые формулы
§25 ЭДС источника тока \mathcal{E} = A_{ст}/q, ЭДС, сторонние силы
§26 Закон Ома для полной цепи I = \dfrac{\mathcal{E}}{R + r}, КПД \eta = U/\mathcal{E}

Глава 5. Магнитное поле. Электромагнитная индукция (§§27–33)

§ Тема Ключевые формулы
§27 Магнитное поле тока Опыт Эрстеда, взаимодействие проводников
§28 Индукция магнитного поля \vec{B}, правило буравчика, линии индукции
§29 Сила Ампера F_A = BIL\sin\alpha, правило левой руки
§30 Сила Лоренца F_L = qvB\sin\alpha, движение по окружности: R = \dfrac{mv}{qB}
§31 Магнитный поток. Электромагнитная индукция \Phi = BS\cos\alpha, опыты Фарадея
§32 Правило Ленца. Закон ЭМИ \mathcal{E}_i = -\dfrac{d\Phi}{dt}
§33 Самоиндукция. Индуктивность \mathcal{E}_{si} = -L \dfrac{dI}{dt}, W_L = \dfrac{LI^2}{2}

Глава 6. Электрический ток в различных средах (§§34–37)

§ Тема Ключевые формулы
§34 Ток в металлах. Сверхпроводимость Свободные электроны, \rho(T) = \rho_0(1+\alpha t)
§35 Ток в электролитах Электролиз, законы Фарадея: m = kIt, k = \dfrac{M}{F n}
§36 Ток в газах. Плазма Самостоятельный/несамостоятельный разряд, виды разрядов
§37 Ток в полупроводниках Собственная и примесная проводимость, n-тип, p-тип, p-n-переход

ИТОГО: 6 глав, 37 параграфов, 2 части.


🎨 SVG-СТАНДАРТ КАЧЕСТВА ДЛЯ ФИЗИКИ

Это первая физика в проекте — нужны новые хелперы. Унаследует всё от математических учебников + добавляет physics-specific.

Унаследованные хелперы (из Алгебры 11 / Геометрии 11)

  • axes2D(W, H, pad, xmin, xmax, ymin, ymax) — координатная плоскость
  • plotFunc(f, xmin, xmax, toX, toY, color, N) — график функции
  • pointWithDrop(x, fx, toX, toY, color, label) — точка с проекциями
  • asymptote(orientation, value, ...) — асимптота
  • snapToValue(value, snaps, tolerance) — snap-точки
  • rightAngleMark, angleArcAuto, unitVec, deg2rad
  • g3d.js — мини-3D движок (для линий магнитной индукции, движения частиц)

Новые physics-specific хелперы (в frontend/js/phys.js)

// === Стрелка вектора (2D) ===
function drawArrow(x1, y1, x2, y2, color, width, headSize) {
  // Возвращает SVG: линия + треугольная стрелка на конце
  const dx = x2 - x1, dy = y2 - y1;
  const len = Math.sqrt(dx*dx + dy*dy);
  const ux = dx / len, uy = dy / len;
  const px = -uy, py = ux;  // перпендикуляр
  const h = headSize || 10;
  const w = (headSize || 10) * 0.6;
  const tipX = x2, tipY = y2;
  const baseX = x2 - ux * h, baseY = y2 - uy * h;
  const leftX = baseX + px * w, leftY = baseY + py * w;
  const rightX = baseX - px * w, rightY = baseY - py * w;
  return `<line x1="${x1}" y1="${y1}" x2="${baseX.toFixed(1)}" y2="${baseY.toFixed(1)}" stroke="${color}" stroke-width="${width || 2}"/>`
       + `<polygon points="${tipX},${tipY} ${leftX.toFixed(1)},${leftY.toFixed(1)} ${rightX.toFixed(1)},${rightY.toFixed(1)}" fill="${color}"/>`;
}

// === Линии электрического поля от точечного заряда ===
function fieldLinesPointCharge(cx, cy, sign, scale, numLines) {
  // sign: +1 или -1 (от знака заряда)
  // numLines: число линий (12-24)
  // Возвращает массив SVG-линий — стрелки наружу для +q, внутрь для -q
  let s = '';
  const N = numLines || 16;
  for (let i = 0; i < N; i++) {
    const a = 2 * Math.PI * i / N;
    const r1 = 15, r2 = scale;
    const x1 = cx + r1 * Math.cos(a), y1 = cy + r1 * Math.sin(a);
    const x2 = cx + r2 * Math.cos(a), y2 = cy + r2 * Math.sin(a);
    if (sign > 0) s += drawArrow(x1, y1, x2, y2, '#dc2626', 1.5);
    else          s += drawArrow(x2, y2, x1, y1, '#2563eb', 1.5);
  }
  return s;
}

// === Линии поля диполя (две точечных зарядов противоположных) ===
function fieldLinesDipole(c1, c2, scale, numLines) {
  // Параметрически — линия от +q к -q вдоль кривых, перпендикулярных эквипотенциалям
  // Упрощённо: использовать numerical integration по полю
  // ...
}

// === Электрическая схема: компоненты ===
function batteryEMF(x, y, EMF, orientation) {
  // Возвращает SVG условного обозначения батареи (две полоски + подпись ε)
}
function resistor(x, y, w, h, R, orientation) {
  // Возвращает SVG зигзага резистора + подпись R
}
function capacitor(x, y, C, orientation) {
  // Две параллельные линии + подпись C
}
function ammeter(x, y) {
  // Круг с буквой A
}
function voltmeter(x, y) {
  // Круг с буквой V
}
function inductor(x, y, L, orientation) {
  // Серия маленьких полукругов
}
function lightbulb(x, y) {
  // Круг с крестиком (или волной)
}

// === Магнитное поле: стрелки В через плоскость экрана ===
function magneticField(x, y, direction, dx, dy) {
  // direction: 'in' (крест) или 'out' (точка)
  // Рисует сетку 5x5 крестиков (вошло в плоскость) или точек (вышло из плоскости)
  let s = '';
  for (let i = 0; i < 5; i++) {
    for (let j = 0; j < 5; j++) {
      const cx = x + i * dx, cy = y + j * dy;
      if (direction === 'in') {
        s += `<circle cx="${cx}" cy="${cy}" r="6" fill="none" stroke="#0891b2" stroke-width="1.5"/>`;
        s += `<line x1="${cx-4}" y1="${cy-4}" x2="${cx+4}" y2="${cy+4}" stroke="#0891b2" stroke-width="1.5"/>`;
        s += `<line x1="${cx-4}" y1="${cy+4}" x2="${cx+4}" y2="${cy-4}" stroke="#0891b2" stroke-width="1.5"/>`;
      } else {
        s += `<circle cx="${cx}" cy="${cy}" r="6" fill="none" stroke="#0891b2" stroke-width="1.5"/>`;
        s += `<circle cx="${cx}" cy="${cy}" r="2" fill="#0891b2"/>`;
      }
    }
  }
  return s;
}

// === PV-диаграмма с изопроцессами ===
function pvDiagram(W, H, pad, pMax, vMax) {
  // Возвращает axes2D-объект с диапазоном (0..vMax, 0..pMax)
  // Подписи осей: P (атм или Па), V (л или м³)
}

// === Молекула газа (частица) ===
function molecule(x, y, r, color) {
  return `<circle cx="${x}" cy="${y}" r="${r}" fill="${color}" stroke="#0f172a" stroke-width="0.8"/>`;
}

// === Симуляция броуновского движения / движения молекул газа ===
class GasSimulation {
  constructor(opts) {
    this.W = opts.W; this.H = opts.H;
    this.N = opts.N || 30;
    this.particles = [];
    for (let i = 0; i < this.N; i++) {
      this.particles.push({
        x: Math.random() * this.W,
        y: Math.random() * this.H,
        vx: (Math.random() - 0.5) * opts.speed,
        vy: (Math.random() - 0.5) * opts.speed
      });
    }
  }
  step(dt) {
    this.particles.forEach(p => {
      p.x += p.vx * dt; p.y += p.vy * dt;
      // отражение от стенок
      if (p.x < 0 || p.x > this.W) p.vx = -p.vx;
      if (p.y < 0 || p.y > this.H) p.vy = -p.vy;
    });
  }
  render() {
    return this.particles.map(p => molecule(p.x, p.y, 4, '#2563eb')).join('');
  }
}

Цветовая кодировка для физики

  • Положительный заряд — красный (#dc2626)
  • Отрицательный заряд — синий (#2563eb)
  • Электрическое поле $\vec{E}$ — оранжевый (#ea580c)
  • Магнитное поле $\vec{B}$ — фиолетовый (#7c3aed)
  • Сила — зелёный (#10b981)
  • Скорость — голубой (#0891b2)
  • Молекулы газа — синие точки
  • Температура — градиент от синего (холод) к красному (горячо)
  • Ток — янтарный (#d97706)
  • Резистор / провод — тёмно-серый (#374151)
  • Изотерма (P-V) — оранжевый
  • Изобара (V-T) — синий
  • Изохора (P-T) — зелёный

Правила (обязательны с §1)

  1. Все единицы измерения через KaTeX\\text{Н}, \\text{м}^2$, \text{Дж/(моль·К)}` — никогда сырой текст.
  2. Slider'ы — в реальных физических величинах с разумными диапазонами:
    • Температура: 100..500 К (или -100..200 °C)
    • Давление: 0.5..5 атм или 10^4..10^6 Па
    • Объём: 1..10 л или 0.001..0.01 м³
    • Заряд: \pm 10^{-9}..10^{-6} Кл (нКл, мкКл)
    • Расстояние между зарядами: 0.01..1 м
    • Напряжение: 1..220 В
    • Ток: 0.01..10 А
    • Магнитная индукция: 10^{-3}..1 Тл
  3. Snap-точки на эталонных значениях: T = 273 К (0 °C), T = 0 K, p = 1 атм.
  4. Все формулы с КаTeX, двойные backslash.
  5. Векторы — со стрелками через drawArrow. Никогда в тексте — через KaTeX \\vec{E}.
  6. Подписи единиц измерения — обязательны на всех осях графиков, во всех результатах калькуляторов.
  7. Симуляции — через requestAnimationFrame с возможностью паузы и сброса.
  8. Эмодзи запрещены.
  9. Никаких пикселей в подписях — всё в СИ или производных единицах.

Типы интерактивов по темам

Тип Применение
Симуляция движения молекул §1 (МКТ), §3 (давление как удары о стенку), §9 (испарение)
PV/VT/PT диаграммы §6 (изопроцессы — главное!), §15 (цикл Карно)
Калькулятор Клапейрона–Менделеева §5
Психрометрический анализ §10
Поток теплоты симуляция §13
Цикл Карно — анимированная PV-диаграмма §15
Закон Кулона: 3D-визуализатор сил §17
Линии напряжённости электрического поля §20 (главный визуал электростатики)
Эквипотенциальные поверхности §22
Конденсатор-конструктор §23
Электрическая цепь — конструктор §25, §26
Правило буравчика / левой руки — 3D §28, §29, §30
Движение заряженной частицы в B-поле — 3D-траектория §30 (главный визуал магнетизма)
Опыты Фарадея — анимация катушки и магнита §31
Самоиндукция — LR-цепь, ток как функция времени §33
p-n переход — визуализация дырок и электронов §37

🚀 ПОРЯДОК РЕАЛИЗАЦИИ

Учитывая 37 параграфов — самый большой проект, разбиваем на 8 фаз.

Phase 0: Архитектура (фундамент)

  • physics_10_hub.html — палитра yellow/amber (классический физический цвет) или orange
  • 6 ch-файлов: physics_10_ch1.html (МКТ), _ch2.html (термодинамика), _ch3.html (электростатика), _ch4.html (пост. ток), _ch5.html (магнитное поле), _ch6.html (ток в средах)
  • Миграция 0XX_physics_10_hub.sql (следующий доступный номер)
  • frontend/js/phys.js — новый модуль physics-хелперов (drawArrow, fieldLines, magneticField, схемы, GasSimulation, pvDiagram)
  • 2D-хелперы (axes2D, plotFunc, etc.) и G3D подключены в каждый ch
  • KaTeX CDN + auto-render
  • POLISH CSS + bump-score JS

Phase 1: Молекулярная физика — Глава 1 (10 §) — 5 волн

Самая большая глава учебника. По 2 §§ на волну.

  • Wave 1: §1 (МКТ основные положения, БРОУНОВСКОЕ ДВИЖЕНИЕ симуляция) + §2 (масса/количество вещества, калькулятор N, \nu, m).
  • Wave 2: §3 (давление через удары молекул, симуляция p = \frac{1}{3} n m \overline{v^2}) + §4 (температура, шкалы, \overline{E_k} = \frac{3}{2}kT).
  • Wave 3: §5 (уравнение Клапейрона–Менделеева, калькулятор) + §6 (изопроцессы — главный визуал главы: PV/VT/PT диаграммы с slider'ом T, V, p).
  • Wave 4: §7 (твёрдые тела, виды кристаллов SVG) + §8 (жидкости, поверхностное натяжение симуляция).
  • Wave 5: §9 (испарение, насыщенный пар, динамическое равновесие симуляция) + §10 (влажность, психрометрический калькулятор) + Финал главы 1 (7 боссов + ачивка «Мастер МКТ»).

Phase 2: Молекулярная физика — Глава 2 «Термодинамика» (5 §) — 3 волны

  • Wave 1: §11 (внутренняя энергия, U = \frac{3}{2} \nu R T) + §12 (работа в термодинамике, площадь под P-V кривой).
  • Wave 2: §13 (количество теплоты — все 4 формулы) + §14 (первый закон термодинамики, применение к изопроцессам).
  • Wave 3: §15 (тепловые двигатели, цикл Карно — анимация PV-цикла, КПД) + Финал главы 2 (5 боссов + ачивка «Мастер термодинамики»).

Phase 3: Электростатика (9 §) — 5 волн

  • Wave 1: §16 (заряд, закон сохранения) + §17 (закон Кулона — визуализатор сил, slider q_1, q_2, r).
  • Wave 2: §18 (электрическое поле) + §19 (напряжённость, суперпозиция).
  • Wave 3: §20 (линии напряжённости — главный визуал — поле точечного заряда, диполя, двух одноимённых) + §21 (работа поля, потенциал).
  • Wave 4: §22 (разность потенциалов, напряжение, E = U/d) + §23 (конденсаторы, C = \varepsilon \varepsilon_0 S/d).
  • Wave 5: §24 (энергия поля конденсатора) + Финал главы 3 (7 боссов + ачивка «Мастер электростатики»).

Phase 4: Постоянный ток (2 §) — 1 волна

  • Wave 1: §25 (ЭДС, сторонние силы) + §26 (закон Ома для полной цепи, конструктор электрической цепи) + Финал главы 4 (5 боссов).

Phase 5: Магнитное поле и индукция (7 §) — 4 волны

  • Wave 1: §27 (опыт Эрстеда, симуляция) + §28 (индукция, правило буравчика, 3D-линии магнитной индукции вокруг проводника).
  • Wave 2: §29 (сила Ампера, правило левой руки, симуляция) + §30 (сила Лоренца — 3D-движение частицы по спирали в B-поле).
  • Wave 3: §31 (магнитный поток, опыты Фарадея — анимация катушки и магнита) + §32 (правило Ленца, закон ЭМИ).
  • Wave 4: §33 (самоиндукция, индуктивность, LR-цепь) + Финал главы 5 (7 боссов + ачивка «Мастер магнетизма»).

Phase 6: Ток в различных средах (4 §) — 2 волны

  • Wave 1: §34 (металлы, сверхпроводимость) + §35 (электролиты, законы Фарадея).
  • Wave 2: §36 (газы, плазма, виды разрядов) + §37 (полупроводники, p-n переход — визуализация дырок и электронов, n-/p-тип) + Финал главы 6 (5 боссов + ачивка «Мастер токов»).

Phase 7: Финал курса Физика 10

  • Итоговая шпаргалка (6 mini-карточек: МКТ, термодинамика, электростатика, ток, магнетизм, ток в средах)
  • 10 интегрированных боссов, комбинирующих темы из разных глав:
    1. МКТ + термодинамика: U и T моноатомного газа
    2. Изопроцесс + работа: A за изобарное расширение
    3. Цикл Карно: КПД при T_1 = 600 К, T_2 = 300 К
    4. Закон Кулона + суперпозиция: сила на 3-й заряд от двух источников
    5. Конденсатор + энергия: W от C, U
    6. Закон Ома для полной цепи + КПД
    7. Сила Лоренца + радиус: R = mv/(qB)
    8. Закон ЭМИ Фарадея: \mathcal{E}_i от d\Phi/dt
    9. Самоиндукция + энергия: W_L = LI^2/2
    10. Магистр электродинамики: синтез
  • Ачивка «Магистр физики 10» (+150 XP — крупнейший курс)
  • Кнопка «К каталогу учебников» → /textbooks

📦 Структура каждого § (стандарт)

Wave 0 главы — skeleton (включено в Phase 0)

  • CSS + цветовая палитра 3 акцентов на §
  • Sections + stub-builders
  • Hub-карточка обновляется
  • Миграция в БД

Wave N — наполнение § (по 2 § на волну)

Каждый § содержит:

  • 3 теоретические карточки (theory, rule, example) с SVG-схемами/графиками
  • 4 интерактива (.wg виджеты):
    1. Симуляция или 3D/SVG-визуализатор (главный)
    2. Калькулятор закона (ввод параметров → формула с подстановкой → результат с единицами)
    3. DnD/Квикфайр (понятийный)
    4. Тренажёр расчётных задач (5-6 задач с числовым ответом, допуск 1-5%)
  • Кнопка «Я прочитал § (+10 XP)»
  • Прогресс/XP: IV1 15%/10XP, IV2 15%/10XP, IV3 25%/15XP, IV4 25%/15XP, чтение 30%/10XP

Wave финал главы

  • Итоговая шпаргалка с формулами
  • 5-7 интегрированных боссов (синтез тем главы)
  • Ачивка «Мастер главы N» + 50 XP + confetti
  • Кнопка перехода к следующей главе

📊 Оценка объёма

Глава § LOC
Phase 0: skeleton + phys.js 2500
Глава 1 МКТ (§§1-10) 10 13 000
Глава 2 Термодинамика (§§11-15) 5 6 500
Глава 3 Электростатика (§§16-24) 9 12 000
Глава 4 Пост. ток (§§25-26) 2 3 000
Глава 5 Магнетизм (§§27-33) 7 10 500
Глава 6 Ток в средах (§§34-37) 4 5 500
Phase 7 финал курса 1 500
Итого 37 ~54 500 LOC

Это больше, чем Геометрия 11 (~30K) или Алгебра 9 (~30K). Самый объёмный курс.


⚠️ Критические правила (опыт всех 10 предыдущих учебников)

НЕ делать

  • Slider'ы в пиксельных диапазонах (40..150). Только в реальных физических единицах с правильным масштабом отрисовки.
  • Подписи без единиц измерения (p = 100 — это что? Па? атм?). Всегда: p = 1 атм = 10^5 Па.
  • Эмодзи (, 🌡️, 🔋). Только inline SVG.
  • Одиночный \ перед буквой в JS template literals: \dfrac, \sin, \vec. ВСЕГДА \\dfrac.
  • Сырой KaTeX в <option> — KaTeX там не рендерится. Только unicode-текст в <option>.
  • Эталонные значения вместо реальных — в задачах используй \pi = 3.14, g = 10 м/с², k_B = 1.38 \cdot 10^{-23} Дж/К ровно.
  • Symbol \degree не существует в KaTeX. Используй ^\\circ для °.
  • Бесконечные симуляции без паузы — всегда кнопка «Пауза / Сброс» и cancelAnimationFrame при unmount.

Обязательно

  • Все единицы СИ в формулах — никаких ватт в задаче без обозначения «Вт».
  • Snap-точки в slider'ах для эталонных значений: T = 273 К, p = 1 атм, g = 10 м/с².
  • Цветовая кодировка едина по всем § (заряд+/−, поле $E$/B, сила, скорость, ток).
  • KaTeX-аудит через node после каждого Wave (паттерн [^\\]\\[a-z]{2,} в JS-блоках).
  • JS parse-check через new Function(scriptBody) после каждого Wave.
  • Авторов нет — в hub footer'е только «Интерактивный учебник «Физика — 10 класс» · LearnSpace» (как сделали для остальных).
  • Симуляции должны иметь паузу, перезапуск, и быть физически корректными: реальная скорость, реальная масса, реальные коэффициенты.

🎬 Запуск

Phase 0: skeleton 6 ch-файлов + hub + миграция + новый модуль phys.js со всеми physics-хелперами.

Палитра hub: yellow/amber (классическая для физики) — --pri:#ca8a04 (yellow-600), --pri-d:#a16207 (yellow-700), --pri-soft:#fef3c7. Header gradient: linear-gradient(110deg,#713f12 0%,#ca8a04 55%,#fde047 100%). Эта палитра отличается от Алгебры 11 (teal) и Геометрии 11 (cyan).

После Phase 0 → Phase 1 Wave 1 (§1 МКТ + §2 масса молекул).

После завершения всех 8 Phase Физика 10 — план одного 10-класса завершён (можно потом план Алгебры 10 + Геометрии 10).