Files
Maxim Dolgolyov e4050fcaed feat(phys7): Phase 8 — финал курса. Панель 7 ачивок + confetti + завершение плана
ХАБ physics_7_hub.html:
- Подключён canvas-confetti с CDN (jsdelivr 1.6.0)
- Заменена старая ach-strip с одной ачивкой на полную панель .ach-section
  с сеткой из 7 карточек: 5 ачивок глав + лаб + master
- Master-карточка выделена (grid-column: 1/-1, фиолетовый градиент при .lit)
- Каждая карточка: иконка (★ при .lit, ? до получения), название, описание условия
- Счётчик «N / 7 ачивок получено»
- renderAchievements() читает все 7 ключей из localStorage и подсвечивает
  получённые, обновляется при focus
- При первом получении «Магистр физики 7» — confetti-залп в 3 волны (через
  sessionStorage флаг, чтобы не запускать повторно при ре-открытии хаба)
- Текст финального аккордеона: «...по всем 5 главам» вместо «3»

ПЛАН plans/textbooks-7/PLAN_PHYSICS_7.md:
- Заголовок отмечен как « ЗАВЕРШЁН» (Phase 0..8)
- Добавлена итоговая сводка реализации:
  * Таблица 9 фаз с файлами, строками и коммитами
  * Список 6 главных визуалов с указанием §
  * Таблица 7 ачивок (slug / название / условие / XP)
  * Оценка XP за полное прохождение (~3 550)
  * Список фактически использованных хелперов phys.js
  * Список уроков, учтённых с первого коммита (cache-busting, sidebar-фикс,
    delimiters, скобки в KaTeX, self-sufficient миграция, без эмоджи)

Итог: 5-й физический курс в проекте, первый учебник 7 класса по физике.
8 фаз × несколько волн каждая = ~14 100 строк кода. Все интерактивы работают.
parse-check, smoke-test и pre-commit хуки пройдены на каждом этапе.
2026-05-30 12:01:50 +03:00

56 KiB
Raw Permalink Blame History

План реализации: Физика 7 (Беларусь, Исаченкова, 2022) — ЗАВЕРШЁН

Статус: РЕАЛИЗОВАН ПОЛНОСТЬЮ (Phase 0..8). 42 параграфа + 6 ЛР + 5 финалов глав + финал курса. 7 ачивок. Палитра sky/blue для хаба, по уникальной палитре на каждую главу. Все интерактивы рабочие, parse-check и smoke-test пройдены. См. итоговую сводку внизу плана.

Источник: fizika_Isachenkova_7kl_rus_2022.pdf (≈170 стр., 5 содержательных глав + лабораторный практикум) Издательство: «Народная асвета», Минск, 2022 (2-е издание, пересмотренное и дополненное) Уровень: базовый (для 7 класса УОСО с русским языком обучения). Авторы (исходник, в hub НЕ показываем): Л. А. Исаченкова, Е. В. Громыко, Ю. Д. Лещинский.

Первый курс физики у школьника. Унаследует ВСЁ из инфраструктуры Физики 8 (phys.js, optics.js тут не нужен, slider'ы в СИ, snap-точки, drawArrow, createGasSim, molecule, thermometer, tempColor). Новый блок — методология науки (§§1–7): измерения, СИ, цена деления, погрешности — этого нет ни в одном существующем курсе и требует отдельных интерактивов («виртуальная линейка с погрешностью», «термометр-конвертер»). Также новые блоки — гидростатика (Паскаль, сообщающиеся сосуды, барометр) и энергия + закон сохранения (горка/маятник). Это четвёртый физический учебник в проекте после Физики 8, 9, 10.


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

Глава 1. Физические методы познания природы (§§1–7)

§ Тема Ключевые понятия
§1 Физика — наука о природе. Связь с другими науками. Физика и техника Природа, тело, явление; связь с астрономией, химией, биологией; роль техники
§2 Физическое тело, физическое явление, физическая величина Тело vs вещество vs явление; величина — численная характеристика
§3 Методы исследования в физике Наблюдение, эксперимент, гипотеза, теория
§4 Роль измерений. Прямые и косвенные измерения Прямое: l линейкой. Косвенное: S = ab по двум прямым
§5 Единицы измерения физических величин. СИ Основные ед.: м, кг, с, А, К, моль, кд. Кратные/дольные: к, М, м, мк, н
§6 Действия над физическими величинами 1\,км/ч = 0{,}278\,м/с, 1\,г/см^3 = 1000\,кг/м^3
§7 Измерительные приборы. Цена деления. Погрешность C = (X_2 - X_1)/N, \Delta X = C/2, запись X \pm \Delta X

Глава 2. Строение вещества (§§8–13)

§ Тема Ключевые понятия
§8 Дискретное строение вещества Молекула, атом, d_{мол} \sim 10^{-10} м
§9 Тепловое движение частиц Хаотическое движение, диффузия, v_{мол} зависит от T
§10 Взаимодействие частиц вещества Притяжение/отталкивание, равновесное расстояние r_0
§11 Газообразное, жидкое и твёрдое состояния Расстояния, силы, форма/объём для трёх состояний
§12 Тепловое расширение \Delta l \sim \Delta T; биметалл, рельсы, мостовые швы
§13 Температура. Измерение температуры. Термометры t, °C, шкала Цельсия; жидкостный/электрический термометр

Глава 3. Движение и силы (§§14–27)

§ Тема Ключевые формулы
§14 Механическое движение. Относительность покоя и движения СО, тело отсчёта
§15 Траектория, путь, время. Единицы пути и времени s — длина траектории; [s] = м, [t] = с
§16 Равномерное движение. Скорость. Единицы скорости v = s/t, [v] = м/с
§17 Графики пути и скорости при равномерном прямолинейном движении s(t) — прямая, v(t) — горизонталь
§18 Неравномерное (переменное) движение. Средняя скорость \langle v\rangle = s_{полн}/t_{полн}
§19 Почему изменяется скорость движения. Инерция Закон инерции Галилея
§20 Масса тела. Плотность вещества. Единицы плотности m, [m] = кг; \rho = m/V, [\rho] = кг/м^3
§21 Сила \vec{F} — мера взаимодействия; величина и направление
§22 Явление тяготения. Сила тяжести \vec{F}_т — к центру Земли; F_т = mg, g = 9{,}8 \approx 10\,Н/кг
§23 Сила упругости Деформация → F_{упр}; закон Гука (качественно)
§24 Вес тела P = mg (на горизонтальной опоре); вес ≠ сила тяжести (точка приложения)
§25 Единица силы. Измерение силы. Динамометр [F] = Н; пружинный динамометр со шкалой
§26 Сложение сил. Равнодействующая сила Сонаправленные: R = F_1 + F_2; противоположные: $R =
§27 Трение. Сила трения F_{тр} \sim N; покоя / скольжения / качения

Глава 4. Давление (§§28–35)

§ Тема Ключевые формулы
§28 Давление. Единицы давления p = F/S, [p] = Па
§29 Давление газа Удары молекул о стенки; p растёт с T и плотностью
§30 Передача давления газами и жидкостями. Закон Паскаля p передаётся одинаково во все стороны; гидравлический пресс
§31 Давление жидкости, обусловленное её весом p = \rho g h
§32 Сообщающиеся сосуды Однородная жидкость → один уровень
§33 Газы и их вес Атмосфера имеет массу; столб воздуха давит
§34 Атмосферное давление Опыт Торричелли; p_0 = 760\,мм\,рт.\,ст. = 101\,325\,Па
§35 Измерение атмосферного давления. Барометры и манометры Ртутный/анероидный барометр; жидкостный манометр

Глава 5. Работа. Мощность. Энергия (§§36–42)

§ Тема Ключевые формулы
§36 Механическая работа. Единицы работы A = Fs\cos\alpha (для 7-го: A = Fs при \vec F \parallel \vec s); [A] = Дж
§37 Полезная и совершённая работа. КПД \eta = A_{полез}/A_{полн} \cdot 100\%
§38 Мощность. Единицы мощности P = A/t, [P] = Вт; 1\,л.\,с. = 736\,Вт
§39 Кинетическая энергия E_к = mv^2/2, [E] = Дж
§40 Потенциальная энергия E_п как «запас» работы; гравитационная и упругая
§41 Расчёт потенциальной энергии E_п = mgh (грав.), E_п = k\Delta l^2/2 (упругая, качественно)
§42 Закон сохранения механической энергии E_к + E_п = \text{const} (без трения)

Глава 6. Лабораторный эксперимент (6 ЛР — отдельная страница physics_7_lab.html)

Тема Связан с §
ЛР-1 Определение цены деления шкалы измерительного прибора §7
ЛР-2 Измерение длины §4, §7
ЛР-3 Измерение объёма §4 (косвенно)
ЛР-4 Изучение неравномерного движения §18
ЛР-5 Измерение плотности §20
ЛР-6 Изучение силы трения §27

ИТОГО: 5 содержательных глав, 42 параграфа, 6 виртуальных лабораторных работ.


🎨 SVG-СТАНДАРТ КАЧЕСТВА

Унаследовано из Физики 8/9/10 (phys.js — БЕЗ изменений)

  • drawArrow(x1,y1,x2,y2,color,width,headSize)
  • molecule(x,y,r,color) — для §§811
  • createGasSim(opts) — МКТ-симуляция, §8–11
  • thermometer(x, y, h, tMin, tMax, tValue) — §13
  • tempColor(t, tMin, tMax) — §12 (тепловое расширение, цветовой градиент)
  • phaseGraphTT — НЕ нужен в 7 (фазовые переходы в 8 классе)
  • 2D-математика (axes2D, plotFunc) — для §17 (графики s(t), v(t))
  • Конвертеры: kgToGrams, mToKm, metersPerSecToKmH (новые, см. ниже)

НОВЫЕ хелперы в phys.js (для главы 3-5 физики 7)

// === Стрелка СИЛЫ на теле (с подписью) ===
// Вход: точка приложения, модуль F (Н), угол (deg), цвет, scale (px/Н)
function forceVector(x, y, F, angleDeg, color, label, scale){
  // drawArrow + текст рядом с концом
}

// === Динамометр (пружина + шкала + указатель) ===
function dynamometer(x, y, h, Fmax, Fcurr){
  // Корпус + пружина-зигзаг + шкала 0..Fmax + указатель + подпись "F = X Н"
}

// === Брусок с грузами ===
function blockOnSurface(x, y, w, h, label, weights){
  // Прямоугольник + опционально гири сверху + подпись массы
}

// === Сообщающиеся сосуды (вода в U-образной/двух разной формы) ===
function connectedVessels(x, y, shapeA, shapeB, levelY, fluidColor){
  // Два сосуда соединены трубкой внизу; единый уровень
}

// === Гидравлический пресс ===
function hydraulicPress(x, y, sSmall, sLarge, fSmall, fluidColor){
  // Цилиндр1 (малая S) → жидкость → Цилиндр2 (большая S); стрелки сил F1 и F2
}

// === Ртутный барометр Торричелли ===
function mercuryBarometer(x, y, hMm){
  // Сосуд с ртутью + перевёрнутая трубка; уровень 0..760 мм рт. ст.
}

// === Анероид (стрелочный барометр) ===
function aneroidBarometer(x, y, r, pressurePa){
  // Круглый прибор со стрелкой 720..780 мм рт. ст. / 960..1040 гПа
}

// === Жидкостный U-манометр ===
function uManometer(x, y, w, h, deltaH, fluidColor){
  // U-трубка + разница уровней Δh для измерения давления газа
}

// === Тележка на горке (для §42 — закон сохранения) ===
class HillSlideSim {
  // Горка с переменной высотой; тележка с m, v, h, E_к, E_п, E_полн.
  // Опции: friction on/off.
  // Анимация скатывания + графики E_к(x), E_п(x), E_полн(x).
}

// === Маятник (для §42 — закон сохранения) ===
class PendulumSim {
  // Нить L, шарик m, начальное отклонение φ_0.
  // Анимация колебаний + индикаторы E_к, E_п.
}

// === Линейка с погрешностью (для §7) ===
function rulerWithError(x, y, len, divisions, valueShown){
  // Шкала + подвижная риска + всплывающее "X = (5.4 ± 0.1) см"
}

// === Биметаллическая пластина (для §12) ===
function bimetal(x, y, w, h, deltaT){
  // Двухслойная пластина, гнущаяся при ΔT (наглядно)
}

// === Тепловое расширение стержня (для §12) ===
function expandingRod(x, y, l0, alpha, deltaT){
  // Брусок + индикатор Δl относительно холодного состояния
}

Цветовая палитра Физики 7

Главная palette: SKY/BLUE 600 (отличается от violet Phys 8, amber Phys 10, teal Phys 11)

  • --pri: #0284c7 (sky-700), --pri-d: #075985, --pri-soft: #e0f2fe
  • Header gradient: linear-gradient(110deg, #0c4a6e 0%, #0284c7 55%, #7dd3fc 100%)

Цвета по тематике:

  • Тёплое/нагрев — красный (#dc2626)
  • Холод — синий (#2563eb)
  • Температурный градиент — HSL hue=240·(1-t) (как в phys 8)
  • Твёрдое тело — индиго (#4f46e5)
  • Жидкость — циан-голубой (#0891b2)
  • Газ — серый (#64748b)
  • Сила тяжести $\vec F_т$ — фиолетовый (#7c3aed)
  • Сила упругости $\vec F_{упр}$ — оранжевый (#ea580c)
  • Сила трения $\vec F_{тр}$ — коричневый (#92400e)
  • Нормальная реакция $\vec N$ — серый (#475569)
  • Вес $\vec P$ — индиго (#4338ca)
  • Равнодействующая $\vec R$ — зелёный (#10b981)
  • Давление — янтарный (#d97706)
  • Атмосфера — голубой (#0ea5e9)
  • Работа — зелёный (#10b981)
  • Мощность — оранжевый (#ea580c)
  • Энергия кинетическая — красно-оранжевый (#ef4444)
  • Энергия потенциальная — синий-фиолетовый (#6366f1)

Правила (обязательны с §1, наследие Физики 8/9/10)

  1. Все единицы измерения через KaTeX\\text{Н}, \\text{Па}, \\text{Дж}, \\text{кВт}, \\text{мм рт.ст.}. Никогда сырой текст.
  2. Slider'ы — в реальных физических величинах:
    • Длина: 0{,}1..10 м (snap на 1, 2)
    • Масса: 0{,}01..100 кг (snap на 0.1, 1, 10, 50)
    • Время: 1..3600 с (snap на 60, 600, 3600)
    • Скорость: 0..30 м/с (snap на 1, 5, 10, 20)
    • Объём: 0{,}001..1 м³ (отображать в л, считать в м³)
    • Плотность: из таблицы (вода 1000, лёд 900, алюминий 2700, железо 7800, ртуть 13600, …)
    • Сила: 0{,}1..1000 Н (snap на 1, 10, 100)
    • Площадь: 0{,}0001..1 м² (отображать в см², считать в м²)
    • Давление: 1..200\,000 Па (snap на 100000)
    • Глубина: 0{,}1..100 м (snap на 1, 10)
    • Работа: 1..10\,000 Дж (snap на 1000)
    • Мощность: 1..10\,000 Вт (snap на 1000)
    • Высота для E_п: 0..50 м (snap на 1, 5, 10)
    • Температура: -50..150 °C (snap на 0, 20, 100)
  3. Snap-точки на эталонных значениях: g = 9{,}8\,Н/кг, \rho_{вода} = 1000\,кг/м^3, \rho_{ртути} = 13600, p_{атм} = 101\,325\,Па = 760\,мм\,рт.\,ст.
  4. Все формулы — KaTeX, двойной backslash: \\dfrac{F}{S}, \\rho g h, \\vec{F}.
  5. Векторы — со стрелками через drawArrow (силы, скорости). В KaTeX — \\vec{F}, \\vec{v}.
  6. Подписи единиц измерения — обязательны на всех осях, во всех результатах.
  7. СимуляцииrequestAnimationFrame с паузой / сбросом / cancelAnimationFrame при unmount.
  8. Эмодзи запрещены. Только inline SVG .ic или HTML-сущности (✓, ★, ✦).
  9. Никаких пикселей в подписях — всё в СИ или производных единицах; масштаб K = px/единица в каждом виджете.
  10. Авторов нет — в hub footer'е только «Интерактивный учебник «Физика — 7 класс» · LearnSpace». Раздел «От авторов» из учебника не переносим. Сборку «Дорогие семиклассники!» не переносим. QR-коды учебника — не переносим (они на видеоопыты издателя, в нашем проекте — свои симуляции).
  11. innerHTML для строк с HTML-сущностями (а не textContent).
  12. KaTeX-аудит после каждого Wave: регексп [^\\]\\[a-zA-Z]{2,} по JS-блокам в HTML.
  13. JS parse-check после каждого Wave: new Function(scriptBody) в скрипте-проверке.
  14. Cache-busting ?v=YYYYMMDD для всех /js/phys.js и /js/phys7_*.js — урок из истории с phys9 (см. коммит a3f7e99).

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

Тип Применение
Калькулятор цены деления + симулятор линейки/термометра с погрешностью §7
Конвертер единиц СИ (кратные/дольные, км/ч ↔ м/с, г/см³ ↔ кг/м³) §5, §6
Drag-and-drop «тело / вещество / явление / величина» §1, §2
МКТ-симуляция трёх состояний (slider T, поведение молекул меняется) §8, §9, §11
Диффузия (две жидкости/газа смешиваются — анимация) §9
Тепловое расширение стержня (slider \Delta T\Delta l визуально) §12
Биметаллическая пластина (slider T → изгиб) §12
Виртуальный термометр (slider T, шкала Цельсия с snap на 0, 100) §13
Конвертер °C ↔ К (для любознательных, опционально) §13
Симуляция относительности движения (2 СО, переключатель) §14
Калькулятор средней скорости (как в физ 9 §7, но упрощённо, без графиков) §16, §18
График s(t) и $v(t)$ для равномерного движения §17
Калькулятор плотности \rho = m/V + таблица материалов §20
Конструктор сил на теле — главный визуал главы 3: drag-and-drop стрелок \vec F_т, \vec F_{упр}, \vec F_{тр}, \vec N + расчёт равнодействующей §21, §22, §26
Виртуальный динамометр (slider m → пружина растягивается → F = mg) §22, §25
Сложение сил (slider F_1, F_2 → результирующая, наглядно через drawArrow) §26
Симулятор трения (slider N, \muF_{тр}; брусок едет/стоит) §27
Калькулятор давления p = F/S с примерами (гвоздь / тапок / трактор) §28
Симуляция давления газа (slider T, V → удары молекул, p растёт/падает) §29
Гидравлический пресс — главный визуал главы 4: slider S_1, S_2, F_1F_2 = F_1 \cdot S_2/S_1 §30
Калькулятор $p = \rho g h$ + столб жидкости разной формы §31
Сообщающиеся сосуды (slider формы 2-го сосуда, заливаем воду → выравнивание) §32
Виртуальный барометр Торричелли (slider высоты места → атм. давление) §34, §35
Калькулятор $A = Fs$ + симуляция «толкаем брусок» §36
Калькулятор КПД \eta = A_{полез}/A_{полн} + примеры (наклонная плоскость) §37
Калькулятор мощности P = A/t + таблица мощностей (человек, машина, …) §38
Калькулятор $E_к = mv^2/2$ + симулятор (растёт квадратично от v) §39
Калькулятор $E_п = mgh$ + симулятор подъёма/падения §41
Главный визуал курса — Закон сохранения энергии: горка с тележкой / маятник; графики E_к(t), E_п(t), E_{полн}(t) §42

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

42 параграфа + 6 ЛР → 8 фаз (как у Физики 8).

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

  • physics_7_hub.html — палитра sky/blue (по обложке учебника — бирюзовый с акцентом на синий из «ФИЗИКА»): --pri:#0284c7 (sky-700), --pri-d:#075985, --pri-soft:#e0f2fe. Header gradient linear-gradient(110deg,#0c4a6e 0%,#0284c7 55%,#7dd3fc 100%). Палитра не пересекается с Физикой 8 (violet), 9 (orange/amber-yellow), 10 (yellow/amber), 11 (teal/cyan).
  • 5 ch-файлов: physics_7_ch1.html (методы познания), _ch2.html (строение вещества), _ch3.html (движение и силы), _ch4.html (давление), _ch5.html (работа/мощность/энергия)
  • 1 отдельная страница: physics_7_lab.html (6 ЛР)
  • Миграция 039_physics_7_hub.sql (следующий свободный номер после 038_physics_9_hub.sql)
  • Расширение frontend/js/phys.js: новые хелперы — forceVector, dynamometer, blockOnSurface, connectedVessels, hydraulicPress, mercuryBarometer, aneroidBarometer, uManometer, rulerWithError, bimetal, expandingRod, классы HillSlideSim, PendulumSim
  • 2D-хелперы (axes2D, plotFunc) подключены в каждый ch
  • KaTeX CDN + auto-render (с delimiters: [{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false}] — урок из phys9 ch1)
  • POLISH CSS + bump-score JS из общего phys-textbook-widgets.css
  • Тестовая страница physics_7_test.html (рендер всех новых хелперов) — НЕ публикуется
  • В каждом .html хедере подключение JS — обязательно с ?v=YYYYMMDD для cache-busting (урок из истории с phys9, коммит a3f7e99)
  • Sidebar-фикс: добавить @media(min-width:981px){#sidebar-btn{display:none}.col-side-backdrop.show{display:none}} сразу (урок из коммита 9d5a295)

Phase 1: Глава 1 «Физические методы познания природы» (§§1–7) — 3 волны

  • Wave 1: §1 (физика как наука: drag-and-drop «связь с астрономией/химией/биологией/техникой») + §2 (тело / вещество / явление / величина — DnD-классификатор: 12 карточек по 4 корзинам).
  • Wave 2: §3 (методы исследования — quiz «опыт vs наблюдение vs гипотеза») + §4 (прямые/косвенные измерения — калькулятор косвенных: S = ab, V = abc, \rho = m/V) + §5 (СИ-конвертер — slider кратных/дольных, табличный тренажёр).
  • Wave 3: §6 (действия над величинами — конвертер км/ч ↔ м/с, г/см³ ↔ кг/м³, Вт ↔ кВт ↔ л.с.) + §7 (главный визуал главы 1: виртуальная линейка с подвижной риской и шкалами разной цены деления — symbolic «как изменится погрешность, если разделить шкалу на 10») + Финал главы 1 (5 боссов: цена деления, СИ, конвертация, погрешность, косвенное измерение; ачивка «Юный физик»).

Phase 2: Глава 2 «Строение вещества» (§§8–13) — 3 волны

  • Wave 1: §8 (дискретное строение — иллюстрация d_{мол} vs d_{волоса}, конструктор молекулы H₂O/CO₂) + §9 (тепловое движение — симуляция диффузии: чернила в воде с slider T, createGasSim из phys.js).
  • Wave 2: §10 (взаимодействие частиц — симуляция «равновесное расстояние» r_0: график F(r)) + §11 (главный визуал главы 2: переключатель «твёрдое / жидкое / газообразное» — три режима МКТ-симуляции).
  • Wave 3: §12 (тепловое расширение — симуляция стержня и биметалла с slider \Delta T) + §13 (виртуальный термометр — slider T от $-50..150$°C, шкала Цельсия) + Финал главы 2 (5 боссов: молекулы, диффузия, состояния, расширение, термометр; ачивка «Знаток вещества»).

Phase 3: Глава 3 «Движение и силы» — часть 1: кинематика (§§14–20) — 3 волны

  • Wave 1: §14 (относительность — 2 СО, drag-переключатель «откуда смотрим») + §15 (траектория / путь / время — DnD).
  • Wave 2: §16 (равномерное движение — симулятор автомобиля с slider v, измеряем путь за t) + §17 (главный визуал кинематики: интерактивный график s(t) + v(t) для равномерного движения; slider v_0, s_0).
  • Wave 3: §18 (средняя скорость — калькулятор двух участков, аналог phys 9 ch1 §7 но упрощённо) + §19 (инерция — симуляция «убираем силу, тело продолжает движение») + §20 (плотность — калькулятор \rho = m/V, таблица материалов, ВАХ-плоттер для «угадай вещество по $\rho$»).

Phase 4: Глава 3 «Движение и силы» — часть 2: силы (§§21–27) — 3 волны

  • Wave 1: §21 (что такое сила — DnD «какая сила действует?» с картинками) + §22 (сила тяжести — калькулятор F_т = mg, slider m, snap на яблоко 100 г, ребёнок 30 кг, машина 1000 кг) + §23 (сила упругости — симуляция растягивающейся пружины с динамометром).
  • Wave 2: §24 (вес тела — конструктор «тело на опоре / на подвесе»; разница «сила тяжести vs вес») + §25 (виртуальный динамометр — slider F от 0 до F_{max} → растяжение пружины → показание стрелки).
  • Wave 3: §26 (главный визуал главы 3: «Конструктор сил на теле» — drag-and-drop стрелок \vec F_т, \vec F_{упр}, \vec F_{тр}, \vec N, расчёт равнодействующей \vec R + текстовый вывод «тело в равновесии / ускоряется») + §27 (симулятор трения — slider N и \muF_{тр}, brick едет/стоит при F_{тяги}) + Финал главы 3 (10 боссов: путь, скорость, средняя скорость, плотность, сила тяжести, вес, динамометр, равнодействующая, трение, инерция; ачивка «Мастер движения»).

Phase 5: Глава 4 «Давление» (§§28–35) — 3 волны

  • Wave 1: §28 (давление — калькулятор p = F/S, примеры «гвоздь / тапок / трактор / лыжи на снегу») + §29 (давление газа — симуляция: молекулы бьют о стенки, slider T, Vp).
  • Wave 2: §30 (закон Паскаля — иллюстрация: «надавили на воздушный шар сверху — стрелки наружу»; гидравлический пресс: slider S_1, S_2, F_1F_2 = F_1 S_2/S_1) + §31 (давление жидкости — калькулятор p = \rho g h, столб разной формы, парадокс «гидростатический парадокс») + §32 (сообщающиеся сосуды — slider формы 2-го сосуда → единый уровень; калькулятор «однородная vs неоднородная»).
  • Wave 3: §33 (газы и их вес — расчёт «масса воздуха в комнате»: slider V, \rho_{возд}) + §34 (атмосферное давление — опыт Магдебургских полушарий, симуляция; калькулятор p_0 на разной высоте) + §35 (главный визуал главы 4: ртутный барометр Торричелли + анероид + U-манометр — три прибора, slider p, наблюдаем разные шкалы) + Финал главы 4 (7 боссов: давление, Паскаль, гидравлический пресс, гидростатика, сообщ. сосуды, атм. давление, барометр; ачивка «Властелин давления»).

Phase 6: Глава 5 «Работа. Мощность. Энергия» (§§36–42) — 3 волны

  • Wave 1: §36 (механическая работа — калькулятор A = Fs, симуляция «двигаем брусок по поверхности», работа силы трения отрицательная) + §37 (КПД — калькулятор \eta = A_{полез}/A_{полн}, примеры подъёма груза по наклонной vs вертикально).
  • Wave 2: §38 (мощность — калькулятор P = A/t, таблица мощностей: человек 100 Вт, лошадь 736 Вт, машина 100 кВт, ракета 100 МВт) + §39 (кинетическая энергия — калькулятор E_к = mv^2/2, симуляция «удвоили vE_к выросло в 4 раза») + §40 (потенциальная энергия — введение, симулятор подъёма груза, E_п как запас работы).
  • Wave 3: §41 (расчёт E_п = mgh — slider m, h, snap на 1 кг, 10 м; калькулятор E_п для гравитационной и упругой деформации пружины) + §42 (главный визуал курса: «Горка с тележкой / маятник» — HillSlideSim / PendulumSim: тележка скатывается, E_к + E_п = \text{const}; графики E_к(t), E_п(t), E_{полн}(t) в реальном времени; toggle «с трением / без») + Финал главы 5 (7 боссов: работа, КПД, мощность, E_к, E_п, E_п упругая, сохранение; ачивка «Энергетик»).

Phase 7: Лабораторный практикум (physics_7_lab.html) — 1 волна

Отдельная страница с 6 виртуальными ЛР. Каждая ЛР = карточка с интро + методическими подсказками («Цель», «Оборудование», «Проверь себя», «Ход работы», «Контрольные вопросы», «Вывод», «Суперзадание») + симуляция + таблица измерений + расчётная формула + автогенерируемый отчёт + кнопка «Сдать ЛР».

  • ЛР-1 цена деления (§7) — виртуальные приборы (мензурка, термометр, амперметр, линейка), задание определить цену деления и снять отсчёт.
  • ЛР-2 измерение длины (§4, §7) — виртуальная линейка с подвижной риской, snap на мм, оценка погрешности.
  • ЛР-3 измерение объёма (§4) — мензурка + тело неправильной формы (вытеснение жидкости); расчёт V = V_2 - V_1.
  • ЛР-4 неравномерное движение (§18) — шарик на наклонной плоскости, slider угла, secunbomer + лента; расчёт \langle v\rangle на двух участках.
  • ЛР-5 плотность (§20) — весы + мензурка + 3 образца; расчёт \rho и определение вещества по таблице.
  • ЛР-6 сила трения (§27) — динамометр + брусок с грузами на разных поверхностях; расчёт F_{тр} и сравнение «дерево / резина / металл».

Ачивка «Лаборант 7 класса» (+80 XP) за прохождение всех 6 ЛР.

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

  • Итоговая шпаргалка (5 mini-карточек: методы, вещество, движение/силы, давление, работа/энергия)
  • 10 интегрированных боссов, комбинирующих темы из разных глав:
    1. Цена деления + измерение: линейка с делением 0.5 см, отсчёт.
    2. Плотность + масса: найти V алюминиевого бруска массой 270 г.
    3. Сила тяжести + динамометр: показание динамометра для m = 250 г на Земле и на Луне (g_{Л} = 1{,}6 Н/кг).
    4. Равнодействующая + Ньютон: 3 силы под углами, найти \vec R (для 7-го — только параллельные).
    5. Давление + гидростатика: давление на дне бассейна глубиной 3 м.
    6. Закон Паскаля + гидравлика: малый поршень 2 см², большой 200 см²; на малый давит F_1 = 50 Н; что поднимает большой?
    7. Атмосферное давление + барометр: разница давлений между этажами 30-этажного дома.
    8. Работа + сила трения: работа силы трения при перемещении бруска на 5 м с F_{тр} = 20 Н.
    9. КПД наклонной плоскости: поднимаем груз 50 кг по наклону длиной 4 м, высота 1 м, прикладывая 150 Н. Найти \eta.
    10. Магистр физики 7 (закон сохранения): тело массой 0.5 кг падает с 10 м без сопротивления; найти v у земли.
  • Ачивка «Магистр физики 7» (+150 XP).
  • Кнопка «К каталогу учебников» → /textbooks.

📦 Структура каждого § (стандарт, наследует Физику 8)

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

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

Финал главы:

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

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

Глава § LOC
Phase 0: skeleton + расширение phys.js 3 500
Глава 1 Методы познания (§§1–7) 7 8 000
Глава 2 Строение вещества (§§8–13) 6 7 500
Глава 3 Движение и силы (§§14–27) 14 17 000
Глава 4 Давление (§§28–35) 8 10 500
Глава 5 Работа / Мощность / Энергия (§§36–42) 7 9 500
Phase 7: Лабораторный практикум (6 ЛР) 5 000
Phase 8: финал курса 1 800
Итого 42 ~62 800 LOC

Это чуть больше Физики 8 (~61 000) из-за главы методологии (§§1–7) — для семиклассника-новичка введение в науку нужно объяснять с нуля, плюс новые типы интерактивов (конвертеры СИ, симулятор линейки с погрешностью).


⚠️ Критические правила (унаследовано + новое)

НЕ делать

  • Slider'ы в пиксельных диапазонах (40..150). Только в реальных физических единицах с правильным масштабом отрисовки (K = px/единица).
  • Подписи без единиц измерения (F = 12 — это что? Н? кгс?). Всегда: F = 12 Н.
  • Эмодзи (, 🌡️, 💧, ⚖️). Только inline SVG .ic или HTML-сущности (✓, ★).
  • Одиночный \ перед буквой в JS template literals: \dfrac, \sin, \vec, \rho. ВСЕГДА \\dfrac, \\rho.
  • Сырой KaTeX в <option> — KaTeX там не рендерится. Только unicode-текст (F/S, Δt, ρgh).
  • \degree не существует в KaTeX — используй ^\\circ.
  • Скобка вне $..$: ($v_1+v_2)/2$ — это БАГ (KaTeX парсит v_1+v_2)/2 с orphan-скобкой). Правильно: $(v_1+v_2)/2$. (Урок из коммита a3f7e99 для phys 9.)
  • renderMathInElement(box) без delimiters — auto-render по умолчанию знает только $$..$$, \(..\), \[..\], но НЕ $..$. Всегда передавать {delimiters: [{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false}], throwOnError:false}. (Тот же урок.)
  • textContent для строк с HTML-сущностями — только innerHTML.
  • Бесконечные симуляции без паузы — всегда кнопка «Пауза / Сброс» и cancelAnimationFrame при закрытии виджета.
  • Авторов в hub / footer — Исаченкову, Громыко, Лещинского НЕ упоминаем.
  • Дублирование Физики 8 — не копировать §1 «Внутренняя энергия» из 8 в 7. В 7-м МКТ изучается БЕЗ понятия внутренней энергии.
  • Симуляции с нарушенной размерностью — например, плотность в г/см³ нельзя подставлять в p = \rho g h, надо переводить в кг/м³.
  • QR-коды учебника — НЕ переносим (они на видеоопыты издателя; у нас свои симуляции).
  • Backdrop без скрытия на desktop — на ≥981px #sidebar-btn должен быть display:none (см. фикс 9d5a295).
  • Подключение JS без cache-busting — обязательно ?v=YYYYMMDD для phys.js, phys7_*.js (фикс a3f7e99).

Обязательно

  • Все единицы СИ в формулах и подписях, табличные значения — с указанием единиц (Н, Па, Дж, Вт, кг/м³).
  • Snap-точки в slider'ах для эталонных значений: g = 9{,}8 Н/кг, \rho_{вода} = 1000 кг/м³, \rho_{ртути} = 13600 кг/м³, p_0 = 101\,325 Па.
  • Цветовая кодировка едина по всем § (сила тяжести/упругости/трения/нормальная — каждая своим цветом; жидкость голубая, газ серый, твёрдое индиго).
  • KaTeX-аудит через node после каждого Wave (паттерн [^\\]\\[a-zA-Z]{2,} в JS-блоках).
  • JS parse-check через new Function(scriptBody) после каждого Wave.
  • Поиск по коду — ТОЛЬКО ast-index, никакого grep (правило проекта).
  • Push после каждого Wave: git add <files> && git commit -m "feat(phys7 chN): Wave M — описание" && git push origin master.
  • Реалистичные значения в задачах: g = 9{,}8\,Н/кг, \rho_{вода} = 1000, \rho_{ртути} = 13600, \rho_{алюминия} = 2700, \rho_{железа} = 7800, p_0 = 101\,325\,Па = 760\,мм\,рт.\,ст., 1\,л.\,с. = 736\,Вт.
  • Sidebar-фикс на desktop в самом начале каждого ch — добавить @media-rule сразу.

🎬 Запуск

Phase 0: skeleton 5 ch + physics_7_hub.html + physics_7_lab.html + миграция 039_physics_7_hub.sql + расширение phys.js (силы, давление, барометры, hill/pendulum sims).

Палитра hub: sky/blue (по обложке учебника). После Phase 0 → Phase 1 Wave 1 (§1 «Физика — наука о природе» + §2 «Физическое тело, явление, величина»).

После завершения всех 8 Phase Физика 7 → 5-й физический курс проекта и первый учебник, полностью покрывающий физику с нуля для самого младшего класса в линейке. Это закрывает «нижнюю» ступень физики и завершает линейку 7→8→9→10→11 (хотя для 11 есть только phys11_chN, без полного hub-комплекта).


🔗 Связи с системой

  • Миграция БД: 039_physics_7_hub.sql — добавить записи в textbooks:
    • parent physics-7 (slug, title «Физика — 7 класс», grade 7, author '', html_path physics_7_hub.html, para_count 48 = 42 § + 6 ЛР, color sky, sort_order 3)
    • 5 children + lab (как в 037_physics_8_hub.sql, идемпотентная)
  • Маршруты: /textbooks/physics-7 → hub, /textbooks/physics-7/ch1..5, /textbooks/physics-7/lab.
  • Каталог: появляется на frontend/textbooks.html в секции 7 класса (рядом с Алгеброй 7, Геометрией 7).
  • Достижения: 5 ачивок глав («Юный физик», «Знаток вещества», «Мастер движения», «Властелин давления», «Энергетик») + 1 лаб («Лаборант 7 класса») + 1 финальная («Магистр физики 7»). Все добавляются через миграцию или скрипт-сидер.
  • XP: ~42 § × ~60 XP + 5 ач × 50 + лаб ач 80 + финал 150 ≈ 2 980 XP за полное прохождение курса.

🧠 Чем Физика 7 отличается от Физики 8

Аспект Физика 7 Физика 8
Целевая аудитория Новичок, первый курс физики Знаком с понятиями физ. величины и СИ
Глава методологии Есть (§§1–7, новый блок) Нет (предполагается изучено в 7)
МКТ Качественно: 3 состояния, диффузия, расширение Количественно: внутренняя энергия, теплоёмкость
Силы Сонаправленные/противоположные, без векторной алгебры (нет — электрические силы в gl. 2)
Гидростатика Есть (p = \rho g h, Паскаль, сосуды, Архимед НЕТ) Нет
Атмосфера и барометры Есть Нет
Работа/энергия A = Fs (параллельные), E_к, E_п, закон сохранения Нет (тепло — Q = cm\Delta T)
Электричество Нет Есть (вся глава 2)
Оптика Нет Есть (вся глава 3)
Векторы Стрелки на схеме, без проекций Стрелки на схеме (поля \vec E, \vec B)
Главный визуал курса Закон сохранения механической энергии (горка/маятник) Линза-конструктор (§38)

Курсы дополняют друг друга. Физика 7 закладывает базу (как мыслить физически, как измерять), Физика 8 расширяет на новые феномены (тепло, электричество, свет).


📚 Ссылки на родственные планы

  • PLAN_PHYSICS_8.md — модель архитектуры, переиспользуем 80% инфраструктуры.
  • PLAN_PHYSICS_9.md — флагман по числу интерактивов, можно подсмотреть финальные визуалы.
  • PLAN_PHYSICS_10.md — первоисточник phys.js, базовая палитра расчётных виджетов.

ИТОГОВАЯ СВОДКА РЕАЛИЗАЦИИ

Phase Содержание Файл Строк Коммит
0 Фундамент: hub, 5 ch-скелетов, lab-скелет, миграция 039, расширение phys.js на 13 новых хелперов/классов physics_7_hub.html, physics_7_ch1..5.html, physics_7_lab.html, phys.js, 039_physics_7_hub.sql 4 210 e76485c
1 Глава 1 «Методы познания» §§1–7 + Финал «Юный физик» phys7_ch1_widgets.js 1 139 65c2e7d, 83aad34, 903bc5c
2 Глава 2 «Строение вещества» §§8–13 + Финал «Знаток вещества» phys7_ch2_widgets.js 1 195 ed97b6d
3 Глава 3 ч.1 «Кинематика» §§14–20 phys7_ch3_widgets.js (часть 1) 1 082 96a2097
4 Глава 3 ч.2 «Силы» §§21–27 + Финал «Мастер движения» phys7_ch3_widgets.js (часть 2) +1 042 799f651
5 Глава 4 «Давление» §§28–35 + Финал «Властелин давления» phys7_ch4_widgets.js 1 300 c7345a7
6 Глава 5 «Работа/Мощность/Энергия» §§36–42 + Финал «Энергетик» — главный визуал курса: HillSlideSim + PendulumSim phys7_ch5_widgets.js 1 275 f471463
7 Лабораторный практикум — 6 виртуальных ЛР + ачивка «Лаборант 7 класса» phys7_lab_widgets.js 726 2bf7ff7
8 Финал курса: 10 интегрированных боссов в hub, ачивка «Магистр физики 7», панель из 7 ачивок с confetti при победе physics_7_hub.html (расширение) +60 этот коммит

ИТОГО: ~12 200 строк (без HTML-скелетов; с ними около ~14 100). Это меньше планового объёма (~62 800 LOC) — за счёт более плотного inline-CSS, единого общего хелпер-набора в каждом widgets-файле и компактных SVG. Качество интерактивов соответствует плану.

Главные визуалы по главам (все реализованы)

  1. Гл. 1, §7 — виртуальная линейка с выбором цены деления и подвижной риской.
  2. Гл. 2, §11 — переключатель 3 состояний с тремя разными режимами анимации МКТ.
  3. Гл. 3, §17 — рядом графики s(t) и $v(t)$ для двух тел.
  4. Гл. 3, §26 — «Конструктор сил на теле» с 4 stiders → равнодействующая R и вердикт.
  5. Гл. 4, §35 — три прибора рядом (Торричелли + анероид + U-манометр) с одним slider'ом давления.
  6. Гл. 5, §42 — закон сохранения механической энергии: тележка на горке через HillSlideSim + маятник через PendulumSim с progress-bar'ами E_к/E_п/E_{полн} в реальном времени.

Ачивки (7 шт.)

Slug Название Условие XP
physics7_ch1_yphys Юный физик Все 5 боссов финала главы 1 50
physics7_ch2_master Знаток вещества Все 5 боссов финала главы 2 50
physics7_ch3_master Мастер движения Все 10 боссов финала главы 3 50
physics7_ch4_master Властелин давления Все 7 боссов финала главы 4 50
physics7_ch5_master Энергетик Все 7 боссов финала главы 5 50
physics7_lab_master Лаборант 7 класса Сдать все 6 ЛР 80
physics7_course_master Магистр физики 7 Все 10 интегрированных боссов курса 150

XP за полное прохождение (оценка)

  • 42 § × (10 чтение + 10 квиз + 15 DnD + 15 тренажёр) = 2 100 XP базы
  • 5 финалов глав × (5..10 боссов × 20 XP) = 640 XP
  • 6 ЛР × 30 XP = 180 XP
  • Ачивки: 5 × 50 + 80 + 150 = 480 XP
  • Финал курса: 10 боссов × 15 XP = 150 XP
  • ИТОГО: ≈ 3 550 XP за полное прохождение курса.

Использование phys.js (Phase 0 хелперы)

В курсе физики 7 реально используются: dynamometer (ЛР-6 + §25), hydraulicPress (§30), connectedVessels (§32), mercuryBarometer (§34 + §35), aneroidBarometer (§35), uManometer (§35), HillSlideSim (§42), PendulumSim (§42). Остальные (forceVector, blockOnSurface, rulerWithError, bimetal, expandingRod) задействованы напрямую через inline-SVG в виджетах для гибкости — но доступны через window.PHYS.* для будущих волн / других учебников.

Применённая миграция БД

039_physics_7_hub.sql — self-sufficient, применена локально (npm run migrate в первой волне после Phase 0). На свежей БД безопасно отыграется одна.

Уроки, учтённые с первого коммита

  • Cache-busting ?v=20260530 на phys.js и все phys7_*.js.
  • @media(min-width:981px){#sidebar-btn{display:none}} — sidebar-фикс на десктопе.
  • delimiters: [{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false}] для KaTeX везде.
  • $(v_1+v_2)/2$ (скобки внутри $..$), а не ($v_1+v_2)/2$.
  • Self-sufficient миграция (INSERT OR IGNORE родителя + UPDATE).
  • Никаких эмоджи, только HTML-сущности (&#10003;, &#9733;) и inline SVG.

Физика 7 — 5-й физический курс в проекте и первый учебник 7 класса по физике.