ХАБ 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 хуки пройдены на каждом этапе.
56 KiB
План реализации: Физика 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)— для §§8–11createGasSim(opts)— МКТ-симуляция, §8–11thermometer(x, y, h, tMin, tMax, tValue)— §13tempColor(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)
- Все единицы измерения через KaTeX —
\\text{Н},\\text{Па},\\text{Дж},\\text{кВт},\\text{мм рт.ст.}. Никогда сырой текст. - 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)
- Длина:
- Snap-точки на эталонных значениях:
g = 9{,}8\,Н/кг,\rho_{вода} = 1000\,кг/м^3,\rho_{ртути} = 13600,p_{атм} = 101\,325\,Па = 760\,мм\,рт.\,ст. - Все формулы — KaTeX, двойной backslash:
\\dfrac{F}{S},\\rho g h,\\vec{F}. - Векторы — со стрелками через
drawArrow(силы, скорости). В KaTeX —\\vec{F},\\vec{v}. - Подписи единиц измерения — обязательны на всех осях, во всех результатах.
- Симуляции —
requestAnimationFrameс паузой / сбросом /cancelAnimationFrameпри unmount. - Эмодзи запрещены. Только inline SVG
.icили HTML-сущности (✓,★,✦). - Никаких пикселей в подписях — всё в СИ или производных единицах; масштаб
K = px/единицав каждом виджете. - Авторов нет — в hub footer'е только «Интерактивный учебник «Физика — 7 класс» · LearnSpace». Раздел «От авторов» из учебника не переносим. Сборку «Дорогие семиклассники!» не переносим. QR-коды учебника — не переносим (они на видеоопыты издателя, в нашем проекте — свои симуляции).
- innerHTML для строк с HTML-сущностями (а не
textContent). - KaTeX-аудит после каждого Wave: регексп
[^\\]\\[a-zA-Z]{2,}по JS-блокам в HTML. - JS parse-check после каждого Wave:
new Function(scriptBody)в скрипте-проверке. - 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, \mu → F_{тр}; брусок едет/стоит) |
§27 |
Калькулятор давления p = F/S с примерами (гвоздь / тапок / трактор) |
§28 |
Симуляция давления газа (slider T, V → удары молекул, p растёт/падает) |
§29 |
Гидравлический пресс — главный визуал главы 4: slider S_1, S_2, F_1 → F_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 gradientlinear-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_{мол}vsd_{волоса}, конструктор молекулы H₂O/CO₂) + §9 (тепловое движение — симуляция диффузии: чернила в воде с sliderT, createGasSim из phys.js). - Wave 2: §10 (взаимодействие частиц — симуляция «равновесное расстояние»
r_0: графикF(r)) + §11 (главный визуал главы 2: переключатель «твёрдое / жидкое / газообразное» — три режима МКТ-симуляции). - Wave 3: §12 (тепловое расширение — симуляция стержня и биметалла с slider
\Delta T) + §13 (виртуальный термометр — sliderTот $-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)для равномерного движения; sliderv_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, sliderm, 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 (симулятор трения — sliderNи\mu→F_{тр}, brick едет/стоит приF_{тяги}) + Финал главы 3 (10 боссов: путь, скорость, средняя скорость, плотность, сила тяжести, вес, динамометр, равнодействующая, трение, инерция; ачивка «Мастер движения»).
Phase 5: Глава 4 «Давление» (§§28–35) — 3 волны
- Wave 1: §28 (давление — калькулятор
p = F/S, примеры «гвоздь / тапок / трактор / лыжи на снегу») + §29 (давление газа — симуляция: молекулы бьют о стенки, sliderT,V→p). - Wave 2: §30 (закон Паскаля — иллюстрация: «надавили на воздушный шар сверху — стрелки наружу»; гидравлический пресс: slider
S_1, S_2, F_1→F_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-манометр — три прибора, sliderp, наблюдаем разные шкалы) + Финал главы 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, симуляция «удвоилиv→E_квыросло в 4 раза») + §40 (потенциальная энергия — введение, симулятор подъёма груза,E_пкак запас работы). - Wave 3: §41 (расчёт
E_п = mgh— sliderm, 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 интегрированных боссов, комбинирующих темы из разных глав:
- Цена деления + измерение: линейка с делением 0.5 см, отсчёт.
- Плотность + масса: найти
Vалюминиевого бруска массой 270 г. - Сила тяжести + динамометр: показание динамометра для
m = 250г на Земле и на Луне (g_{Л} = 1{,}6Н/кг). - Равнодействующая + Ньютон: 3 силы под углами, найти
\vec R(для 7-го — только параллельные). - Давление + гидростатика: давление на дне бассейна глубиной 3 м.
- Закон Паскаля + гидравлика: малый поршень 2 см², большой 200 см²; на малый давит
F_1 = 50Н; что поднимает большой? - Атмосферное давление + барометр: разница давлений между этажами 30-этажного дома.
- Работа + сила трения: работа силы трения при перемещении бруска на 5 м с
F_{тр} = 20Н. - КПД наклонной плоскости: поднимаем груз 50 кг по наклону длиной 4 м, высота 1 м, прикладывая 150 Н. Найти
\eta. - Магистр физики 7 (закон сохранения): тело массой 0.5 кг падает с 10 м без сопротивления; найти
vу земли.
- Ачивка «Магистр физики 7» (+150 XP).
- Кнопка «К каталогу учебников» →
/textbooks.
📦 Структура каждого § (стандарт, наследует Физику 8)
Каждый § содержит:
- 3 теоретические карточки (
theory,rule,example) с SVG-схемами/графиками. - 4 интерактива (
.wgвиджеты):- Главная симуляция / визуализатор (специфичный для темы)
- Калькулятор закона (ввод параметров → формула с подстановкой → результат с единицами)
- DnD / Квикфайр (понятийный тренажёр)
- Тренажёр расчётных задач (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_pathphysics_7_hub.html, para_count 48 = 42 § + 6 ЛР, colorsky, sort_order 3) - 5 children + lab (как в
037_physics_8_hub.sql, идемпотентная)
- parent
- Маршруты:
/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, §7 — виртуальная линейка с выбором цены деления и подвижной риской.
- Гл. 2, §11 — переключатель 3 состояний с тремя разными режимами анимации МКТ.
- Гл. 3, §17 — рядом графики
s(t)и $v(t)$ для двух тел. - Гл. 3, §26 — «Конструктор сил на теле» с 4 stiders → равнодействующая R и вердикт.
- Гл. 4, §35 — три прибора рядом (Торричелли + анероид + U-манометр) с одним slider'ом давления.
- Гл. 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-сущности (
✓,★) и inline SVG.
Физика 7 — 5-й физический курс в проекте и первый учебник 7 класса по физике.