Files
Learn_System/plans/sim-builder/phase-1-plots-interactions.md
T

2.7 KiB

Phase 1: Графики + интеракции

Status: Not Started Parent plan: PLAN.md Domain: frontend

Objective

Добавить в рантайм графики (plot-объекты), перетаскиваемые ручки (drag → параметр), векторы и числовые readout. После фазы спека со слайдером, draggable-точкой и live-графиком работает.

Tasks

  • Plot-объект в спеке: { type:'plot', expr:'...', var:'x', range:[a,b], samples, trace? } — рисует график выражения; trace:true — накапливает след по t. Переиспользовать _graph_panel.js (посмотреть API).
  • Draggable-ручка: объект/маркер с drag:{ param:'<name>', axis:'x|y|xy', min,max } — перетаскивание мышью/тачем меняет параметр (и наоборот, позиция следует за параметром). Хит-тест в мир-координатах.
  • Readout: { type:'readout', label, expr, unit, precision } — живое значение выражения как текст/бейдж.
  • Vector-объект с привязкой к (origin, dx, dy)-выражениям + стрелка.
  • Тач-поддержка drag (pointer events), не ломая существующую логику доски/лабы.
  • Обновить демо-спеку: добавить слайдер, draggable-точку, plot + readout.

Files to Modify/Create

  • frontend/js/labs/_sim_engine.js — типы plot/readout/vector, drag-интеракции (modify)
  • frontend/js/labs/_sim_demo.js — расширить демо (modify)

Acceptance Criteria

  • Перетаскивание ручки меняет параметр; зависимые объекты/график обновляются.
  • График строится по выражению; trace накапливает след во времени.
  • Readout показывает живое значение. Тач работает.

Notes

  • Drag не должен конфликтовать с pan/zoom рантайма (если есть). Приоритет хит-теста — ручки.
  • Сэмплинг графика разумный (без фриза на больших range).

Review Checklist

  • Все задачи выполнены
  • Drag работает мышью и тачем
  • Нет регрессий рантайма Ф0
  • Нет эмодзи, стиль проекта

Handoff to Next Phase