43 lines
3.1 KiB
Markdown
43 lines
3.1 KiB
Markdown
# Phase 2: Физический интегратор
|
||
|
||
**Status:** ⬜ Not Started
|
||
**Parent plan:** [PLAN.md](./PLAN.md)
|
||
**Domain:** frontend
|
||
|
||
## Objective
|
||
Добавить настоящую физику: тела с массой, гравитация/пружины/столкновения/трение,
|
||
перетаскивание тел силой, траектории. Динамика считается движком, а не формулой.
|
||
После фазы маятник/столкновения/брошенное тело идут динамически из спеки.
|
||
|
||
## Tasks
|
||
- [ ] Блок `physics` в спеке: `{ enabled, gravity:{x,y}, friction, walls:[...], restitution }`.
|
||
- [ ] Тело-объект: `body:{ mass, vx, vy, fixed }` — интегрируется (опора на `_fx_motion.js`, посмотреть API; не дублировать интегратор).
|
||
- [ ] Пружины: `springs:[{ a, b, k, length }]` (между телами или телом и точкой-якорем).
|
||
- [ ] Столкновения: упругие шары/стены (restitution), базовый бродфейз достаточно (N небольшое).
|
||
- [ ] Drag тела: перетаскивание задаёт позицию/скорость (отпустил — летит). Кинематические (формульные) объекты Ф0 сосуществуют с физическими.
|
||
- [ ] Траектория: накопление следа центра тела (toggle в спеке).
|
||
- [ ] Демо-спеки: «маятник» (груз+нить как пружина/констрейнт), «упругие шары».
|
||
|
||
## Files to Modify/Create
|
||
- `frontend/js/labs/_sim_engine.js` — физический режим, интеграция с _fx_motion (modify)
|
||
- `frontend/js/labs/_sim_physics.js` — обёртка интегратора/коллизий, если чище отдельно (new, опц.)
|
||
- `frontend/js/labs/_sim_demo.js` — физ-демо (modify)
|
||
|
||
## Acceptance Criteria
|
||
- Тело под гравитацией падает/летит по параболе через интегратор (не по формуле).
|
||
- Пружина колеблет груз; шары упруго сталкиваются; стены отражают.
|
||
- Drag тела работает; формульные объекты Ф0 продолжают работать в той же сцене.
|
||
|
||
## Notes
|
||
- Шаг интегратора фиксированный (накопитель dt) для стабильности.
|
||
- Не переусложнять коллизии — школьный уровень (круги/стены).
|
||
|
||
## Review Checklist
|
||
- [ ] Все задачи выполнены
|
||
- [ ] Использует _fx_motion, без своего дубля интегратора без причины
|
||
- [ ] Стабильность (нет взрыва энергии на разумных параметрах)
|
||
- [ ] Нет регрессий Ф0/Ф1
|
||
|
||
## Handoff to Next Phase
|
||
<!-- Заполняет реализатор -->
|