chore(sim-builder): план фичи (8 фаз) — конструктор симуляций
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# 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
|
||||
<!-- Заполняет реализатор -->
|
||||
Reference in New Issue
Block a user