# План: мощные интерактивы и симуляторы для Физики 9

**Дата:** 2026-05-30
**Контекст:** третий план, дополняет [PLAN_PHYSICS_9_VISUAL.md](PLAN_PHYSICS_9_VISUAL.md) (фазы 1-3 сделаны) и [PLAN_PHYSICS_9_PER_PARAGRAPH.md](PLAN_PHYSICS_9_PER_PARAGRAPH.md) (Wave A-G сделаны).
**Цель:** добавить **флагманские** интерактивы — крупные симуляторы / мини-игры / физические песочницы. По 1-3 на главу. Каждый = «вау-эффект», который запомнится школьнику.

---

## Принцип «флагмана»

Не очередной slider+калькулятор, а:
- **Полноэкранный** интерактив (~ 600×500 px)
- **Анимация** в реальном времени (`requestAnimationFrame`)
- **Управление мышкой / клавиатурой** (drag, click, keyboard)
- **Real-time графики** связанные с симуляцией
- **Сохранение результатов** в localStorage (рекорды)
- **Геймификация** — score, баллы, медали

---

## ⭐ Глава 1 · Кинематика — 4 флагмана

### F1. Конструктор траектории  
**§5** (путь vs перемещение)
- Пользователь **рисует мышкой** на canvas произвольную кривую.
- Программа автоматически считает:
  - **Путь** $s$ — длина кривой (через сумму отрезков)
  - **Перемещение** $|\Delta\vec r|$ — расстояние start→end
  - Отношение $s/|\Delta\vec r|$
- Кнопка «Закрыть петлю» — соединяет конец с началом, $\Delta r = 0$.
- Шаблоны: прямая, дуга 180°, полная окружность, зигзаг.
- **Wow:** видно, что $s \ge |\Delta\vec r|$, всегда.
- ~400 LOC

### F2. Гонка двух тел  
**§9** (встреча двух тел)
- Симуляция гонки: два автомобиля с разными $v_0$, $a$ на одной трассе.
- Пользователь меняет параметры **до старта**, нажимает «Старт».
- Анимация: автомобили едут по трассе.
- **Real-time графики** $x_1(t)$ и $x_2(t)$ строятся слева от трассы.
- Момент встречи — подсвечен пересечением графиков + звуковой сигнал.
- Кнопка «Случайный сценарий» для тренировки.
- **Wow:** одновременно видна симуляция и математическая зависимость.
- ~500 LOC

### F3. Тахометр + спидометр + одометр  
**§11-13** (равноуск. движение)
- Виртуальный автомобиль с **3 связанными приборами**:
  - Тахометр (показывает $a$)
  - Спидометр (показывает $v$)
  - Одометр (показывает $\Delta x$ за время)
- Управление: педаль газа (slider $a$) и педаль тормоза.
- Реалистичная динамика: при отпускании газа — медленное торможение (трение). При тормозе — резкое.
- **Графики** $v(t)$ и $a(t)$ записываются.
- Цель: разогнаться до 60 км/ч и затормозить за ~50 м (как в реальных тестах).
- **Wow:** игра в автогонщика + интуитивное понимание кинематики.
- ~600 LOC

### F4. Орбитальный конструктор  
**§16-18** (Кеплер, окружность)
- Симулятор «запусти спутник»: Земля в центре, мышью **тянешь стрелку** $\vec v$ начальной скорости и **отпускаешь**.
- Спутник летит по орбите согласно Ньютону+Кеплеру.
- Цвет траектории: круг (идеал) / эллипс / парабола / убегание.
- Подписи: $T$, $a$, эксцентриситет.
- Слайдер «масса Земли» — меняет тяготение.
- **Wow:** видишь, что нужна **определённая** скорость для круговой орбиты.
- ~600 LOC

---

## ⭐ Глава 2 · Динамика — 4 флагмана

### F5. Машина Атвуда  
**§19-22** (динамика связанных тел)
- Виртуальная установка: две массы $m_1$, $m_2$ через блок на нити.
- Slider'ы: $m_1$, $m_2$, $\mu$ (трение в блоке).
- Запуск: бо́льшая масса опускается, меньшая поднимается.
- Реальная физика: $a = (m_1 - m_2)g/(m_1+m_2)$.
- Подсветка сил: $\vec T$ натяжение, $\vec g$ вес.
- График $v(t)$ — линейный (равноуск).
- **Wow:** классический школьный опыт в виртуале.
- ~500 LOC

### F6. Симулятор скоростной дороги  
**§20** (трение), **§22** (F=ma)
- 2D-вид: автомобиль на дороге с разным покрытием (асфальт сухой/мокрый, лёд, гравий).
- Slider $\mu$ автоматически по покрытию.
- Включаем тормоз: автомобиль скользит на расстояние $s = v^2 / (2 \mu g)$.
- При большом $v$ + малом $\mu$ — занос.
- **Wow:** видно, насколько лёд опасен — путь торможения растёт в 5 раз.
- ~400 LOC

### F7. Лифт с динамометром  
**§24** (вес, перегрузка, невесомость)
- Лифт в высоком здании. На полу динамометр с грузом 1 кг.
- Кнопки: «Этаж 1», «Этаж 10», «Аварийный спуск».
- При движении видно показания динамометра и анимацию.
- **Параметры:** $a_{разгон}$, $v_{макс}$ настраиваются.
- График $P(t)$ записывается.
- Особый режим: «свободное падение» → невесомость, груз висит.
- **Wow:** наглядное переживание перегрузки.
- ~500 LOC

### F8. Полигон трения  
**§20**
- Шарик скатывается с пружинной катапульты по плоскости с **разными зонами** ($\mu$ меняется через каждые 30 см).
- Пользователь рисует профиль зон (drag&drop материалов: лёд, асфальт, мел).
- Шарик скользит, замедляется в зависимости от $\mu$.
- Цель: попасть в красную мишень.
- Калибровка через начальную скорость катапульты.
- **Wow:** инженерная задача про разные покрытия.
- ~600 LOC

---

## ⭐ Глава 3 · Статика — 2 флагмана

### F9. Конструктор моста  
**§25-28** (равновесие, рычаг, момент)
- На canvas — балка на 2 опорах.
- Пользователь **добавляет** грузы перетаскиванием (drag) в любую точку балки.
- Программа считает реакции опор $N_1$, $N_2$ через систему 2 уравнений ($\Sigma F = 0$, $\Sigma M = 0$).
- При перегрузке — балка прогибается / ломается.
- Цель: построить «мост» который выдержит автомобиль (фиксированный груз 1000 Н) в любой точке.
- **Wow:** инженерный квест.
- ~700 LOC

### F10. Виртуальный аквариум  
**§29-30** (Архимед, плавание)
- Большой аквариум на canvas.
- Слева — палитра тел разной плотности (дерево, пенопласт, пластик, металл, золото).
- Drag&drop тел в аквариум: правильная физика — плавают, тонут, висят.
- Slider жидкости: вода → масло → ртуть.
- При смене жидкости тела перераспределяются (золото в ртути плавает!).
- **Wow:** интерактивный «фокус» с ртутью.
- ~500 LOC

---

## ⭐ Глава 4 · Импульс / Энергия / Колебания — 4 флагмана

### F11. Бильярдная физика  
**§31-32** (ЗСИ)
- 2D-бильярдный стол с 1 битком + 4 шарами.
- Перетаскивание прицела + slider «сила удара».
- Реальная физика упругих ударов между шарами.
- Real-time векторы импульса до/после.
- Цель: сделать карамболь (тройной удар).
- **Wow:** игра + физика.
- ~700 LOC

### F12. Американские горки  
**§35** (ЗСМЭ)
- Пользователь **рисует профиль** горки (мышкой задаёт высоты).
- Шарик скатывается с начала, физика: $E = E_k + E_p = $ const (без трения) или с диссипацией.
- Real-time графики: $E_p$, $E_k$, $E_{total}$ на 3-х кривых.
- Можно добавить «петлю» (loop) — расчёт минимальной высоты старта.
- Slider «трение» — графики $E_{total}$ спадают.
- **Wow:** «спроектируй сам аттракцион».
- ~700 LOC

### F13. Маятник Фуко  
**§36** (колебания + вращение)
- Длинный математический маятник, его плоскость колебаний **поворачивается** относительно земли из-за вращения.
- Slider: широта (на полюсе вращается за 24 ч, на экваторе не вращается).
- Анимация: вид сверху, ход маятника записывает «розетку».
- **Wow:** красивая, исторически значимая демонстрация (Париж, 1851).
- ~500 LOC

### F14. Спектр колебаний (резонанс)  
**§36**
- Пружинный маятник с внешней периодической силой.
- Slider частоты внешней силы $\nu_{внеш}$.
- Когда $\nu_{внеш} \approx \nu_{собств}$ — амплитуда колебаний нарастает.
- График амплитуды от $\nu_{внеш}$ — классический резонансный пик.
- Аналог: «настройка струны гитары», «разрушение моста».
- **Wow:** объясняет, почему рота не марширует через мост.
- ~500 LOC

---

## 🔬 Глава 5 · Лаборатория — 3 флагмана-практикума

### F15. Виртуальная лаборатория свободного падения  
**ЛР 6**
- Стробоскопический эффект: тело падает, на нём отметки через равные промежутки.
- Пользователь измеряет расстояния линейкой (виртуальная линейка на canvas).
- Таблица заполняется автоматически из измерений.
- Расчёт $g$ по серии 5-6 измерений + погрешность.
- **Wow:** реальный лабораторный отчёт получается за 5 минут.
- ~500 LOC

### F16. Лаборатория законов сохранения  
**ЛР 7**
- Тележка на наклонной + датчики скорости.
- Запускается с разных высот, измерения автоматически.
- Серия из 5 запусков: $h_1, v_1$; $h_2, v_2$; ...
- Расчёт КПД через сравнение $E_p^{0}$ и $E_k^{внизу}$.
- График «отклонение от ЗСМЭ vs скорость» — видна систематическая ошибка от трения.
- **Wow:** настоящие лабораторные навыки.
- ~600 LOC

### F17. Лаборатория маятника  
**ЛР 4, ЛР 12**
- Несколько маятников рядом: математ., пружинный, физический.
- Запуск синхронно, измерение $T$ автоматически.
- Цель: подобрать $l$ так, чтобы $T = 2$ с (секундный маятник).
- Дополнительно: изменение $g$ (на Луне, Марсе) → как меняется $T$.
- **Wow:** «найди $g$ на Марсе по периоду маятника».
- ~500 LOC

---

## 🏆 Финал курса — 2 флагмана

### F18. Магистр-симулятор  
- Большой интерактив **«построй сценарий движения тела»**:
- Точка А → точка Б через любые этапы (равном., равноуск., свободное падение, …).
- Пользователь собирает цепочку этапов как конструктор LEGO.
- Программа автоматически рисует $x(t)$, $v(t)$, $a(t)$.
- Проверка корректности сценария: «достижимо ли?»
- Сохранение в галерею (localStorage), share-кнопка (URL с сценарием в параметрах).
- **Wow:** портфолио своих физических задач.
- ~800 LOC

### F19. Финальный босс — «Полёт ракеты»  
- Симулятор взлёта ракеты с Земли:
- Параметры: масса ракеты, масса топлива, $q$ (скорость истечения газов), $G$.
- Реальная физика: уравнение Циолковского + сила тяжести + сопротивление воздуха.
- График $h(t)$, $v(t)$, остаток топлива.
- Цель: вывести спутник на орбиту 400 км (МКС).
- **Wow:** реальная инженерная задача, объединяющая ВСЁ из курса.
- ~1000 LOC

---

## 📊 Сводка флагманов

| # | Название | Глава | LOC | Приоритет |
|---|---|---|---|---|
| F1 | Конструктор траектории | §5 | 400 | ⭐ |
| F2 | Гонка двух тел | §9 | 500 | 🔥 |
| F3 | Тахометр + спидометр | §11-13 | 600 | 🔥 |
| F4 | Орбитальный конструктор | §16-18 | 600 | 🔥 |
| F5 | Машина Атвуда | §19-22 | 500 | ⭐ |
| F6 | Симулятор дороги | §20 | 400 | ⭐ |
| F7 | Лифт с динамометром | §24 | 500 | ⭐ |
| F8 | Полигон трения | §20 | 600 | 💡 |
| F9 | Конструктор моста | §25-28 | 700 | 🔥 |
| F10 | Виртуальный аквариум | §29-30 | 500 | ⭐ |
| F11 | Бильярдная физика | §31-32 | 700 | 🔥 |
| F12 | Американские горки | §35 | 700 | 🔥 |
| F13 | Маятник Фуко | §36 | 500 | ⭐ |
| F14 | Резонанс | §36 | 500 | ⭐ |
| F15 | Лаб. свободное падение | ЛР 6 | 500 | ⭐ |
| F16 | Лаб. ЗСЭ | ЛР 7 | 600 | ⭐ |
| F17 | Лаб. маятника | ЛР 4,12 | 500 | ⭐ |
| F18 | Магистр-симулятор | Финал курса | 800 | 🔥 |
| F19 | Полёт ракеты | Финал курса | 1000 | 🔥 |
| **Σ** | **19 флагманов** | | **~10 600 LOC** | |

**🔥 Критично (8):** F2, F3, F4, F9, F11, F12, F18, F19
**⭐ Важно (10):** F1, F5, F6, F7, F10, F13, F14, F15, F16, F17
**💡 Nice-to-have (1):** F8

---

## 🛠 Технологический стек для флагманов

### Базовые библиотеки (без внешних зависимостей)
- **Canvas 2D** — для большинства симуляций (производительно)
- **SVG** — для статических интерактивов (легко стилизуется, тёмная тема)
- **Web Audio API** — для звуковых эффектов (опционально)
- **requestAnimationFrame** — с RAF-реестром для cleanup при unmount
- **localStorage** — для сохранения настроек, рекордов
- **Web Workers** — для тяжёлых вычислений (F4 орбита, F19 ракета)

### Архитектурное правило
Каждый флагман — **отдельный модуль** `phys9_flag_FN_name.js` в `frontend/js/flagships/`. Подключается **только в нужном параграфе** через ленивую загрузку (динамический `<script>`).

### Шаблон файла:
```javascript
// phys9_flag_F2_race.js — Гонка двух тел (§9)
(function(){
'use strict';
const C = () => window.PHYS9_COLORS || {};
let _running = false, _raf = 0;

function init(secId){
  const box = document.getElementById(secId+'-body');
  if (!box || box.querySelector('.flag-F2')) return;
  // Создать UI...
  // Запустить sim...
}

function cleanup(){ if(_raf) cancelAnimationFrame(_raf); _raf = 0; _running = false; }

window.PHYS9_FLAGS = window.PHYS9_FLAGS || {};
window.PHYS9_FLAGS.F2 = { init: init, cleanup: cleanup };
})();
```

### Подключение
В `phys9_chN_widgets.js` для соответствующего параграфа:
```javascript
function add_p9(){
  // ... обычный виджет (slider+калькулятор)
  if (window.PHYS9_FLAGS && window.PHYS9_FLAGS.F2) {
    appendTo('p9', wgWrapper('p9-flag', 'ФЛАГМАН', 'Гонка двух тел', '...', '<div id="flag-F2-host"></div>'));
    window.PHYS9_FLAGS.F2.init('p9');
  }
}
```

---

## 🚀 Порядок реализации

### Фаза 1 — Подготовка инфраструктуры (1 коммит)
- [ ] Создать каталог `frontend/js/flagships/`
- [ ] Создать `phys9_flag_base.js` — общие хелперы (RAF-реестр, canvas init, controls)
- [ ] Создать CSS `frontend/css/phys9-flagships.css` — стили карточек, кнопок, прогресс-баров
- [ ] Документ-шаблон для каждого флагмана

### Фаза 2 — Wave A (флагманы Главы 1): F1, F2, F3, F4 (4 коммита, ~2100 LOC)
**Целевая глава:** Кинематика
- F1 Конструктор траектории (1 коммит)
- F2 Гонка двух тел (1 коммит)
- F3 Тахометр + спидометр (1 коммит)
- F4 Орбитальный конструктор (1 коммит, ~600 LOC, требует Web Worker)

### Фаза 3 — Wave B (Глава 2): F5, F6, F7, F8 (4 коммита, ~2000 LOC)
- F5 Машина Атвуда
- F6 Симулятор дороги
- F7 Лифт с динамометром
- F8 Полигон трения (опционально)

### Фаза 4 — Wave C (Глава 3): F9, F10 (2 коммита, ~1200 LOC)
- F9 Конструктор моста (большой, drag&drop, рассчёт реакций опор)
- F10 Виртуальный аквариум

### Фаза 5 — Wave D (Глава 4): F11, F12, F13, F14 (4 коммита, ~2400 LOC)
- F11 Бильярдная физика
- F12 Американские горки
- F13 Маятник Фуко
- F14 Резонанс

### Фаза 6 — Wave E (Лаборатория): F15, F16, F17 (3 коммита, ~1600 LOC)
- F15 Свободное падение
- F16 ЗСЭ
- F17 Маятник

### Фаза 7 — Финал курса: F18, F19 (2 коммита, ~1800 LOC)
- F18 Магистр-симулятор
- F19 Полёт ракеты

### Фаза 8 — Полировка (1 коммит)
- [ ] Все RAF имеют пауза/сброс
- [ ] Все симуляции корректно убираются при `goTo` другого §
- [ ] Тёмная тема: все цвета через PHYS9_COLORS
- [ ] Респонсив: max-width 800px, height auto
- [ ] a11y: aria-label на интерактивных canvas

---

## 📈 Оценка прироста качества

**До:** 48 виджетов уровня «slider + калькулятор», тёмная тема, прогресс-бары.

**После:** 19 флагманов с настоящей симуляцией, интерактивом, геймификацией.

| Метрика | До | После |
|---|---|---|
| Engagement time per § | ~2 мин | **~10 мин** |
| Уникальных интерактивов | 48 | **48 + 19 = 67** |
| LOC | ~2 000 | **~12 600** |
| Бонусы (XP) | 600 | **~1500** |
| Запоминаемость | средняя | **высокая** |

---

## ⚠️ Архитектурные риски

1. **Размер бандла**: 19 флагманов × ~600 LOC = ~12 KB JS на главу. Решение — **ленивая загрузка** через динамический `<script>`.
2. **CPU**: симуляции в RAF могут тяжко грузить устройство. Решение — `IntersectionObserver` (пауза если интерактив не на экране).
3. **Запуск legacy экстрактора** не должен убить эти модули — они НЕ в `phys9_legacy.js`, а в отдельных файлах.
4. **Тёмная тема**: все цвета **обязательно** через PHYS9_COLORS, иначе при переключении выглядит сломанно.
5. **Совместимость с расширением задач** в финалах — флагман в финале НЕ должен мешать прогресс-бару.

---

## 🎬 Запуск

Рекомендация: начать с **Фазы 2** (Wave A — Кинематика). Это:
- 4 флагмана, ~2100 LOC, ~4 коммита
- Покрывает самую важную главу
- Даёт сразу видимый результат
- F2 Гонка двух тел — идеальный пилот (компактный, понятный)

После завершения Wave A — решить продолжать ли или хватит пилотов.

---

## 🔗 Связанные документы

- [PLAN_PHYSICS_9.md](PLAN_PHYSICS_9.md) — исходный план учебника
- [PLAN_PHYSICS_9_VISUAL.md](PLAN_PHYSICS_9_VISUAL.md) — горизонтальные фазы (Phase 1-3 done)
- [PLAN_PHYSICS_9_PER_PARAGRAPH.md](PLAN_PHYSICS_9_PER_PARAGRAPH.md) — детальный (Wave A-G done)
- [PLAN_PHYSICS_10.md](../textbooks-10/PLAN_PHYSICS_10.md) — образец крупных симуляций
