410eb8a862
Два дефекта, из-за которых 3D читался как плоская диаграмма: - painter-сортировка была по возрастанию z (ближние первыми) — дальние атомы рисовались поверх ближних. Теперь единый список примитивов (атомы + половинки связей) сортируется по убыванию z (дальние первыми). - связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»: толстый штрих с поперечным градиентом (центр светлее, края темнее), двухцветные (каждая половина под цвет своего атома) — фирменный вид ball-and-stick. Ширина зависит от перспективы (ближе — толще). - усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
# Phase 2: Тела симуляций как шаблоны + ленивый mount
|
|
|
|
**Status:** ⬜ Not Started
|
|
**Parent plan:** [PLAN.md](./PLAN.md)
|
|
**Domain:** frontend
|
|
|
|
## Objective
|
|
Вынести inline-HTML тел симуляций (`<div id="sim-xxx">`, ~3000 строк) из lab.html в
|
|
манифесты: `mount(host)` создаёт DOM лениво при первом открытии. lab.html худеет.
|
|
|
|
## Tasks
|
|
- [ ] Добавить в манифест поле `mount(host)` (или `bodyHtml`) — строит/возвращает тело симуляции.
|
|
- [ ] Ядро: при первом open — если тело не смонтировано, вызвать mount() в контейнер `#lab-sim`.
|
|
- [ ] Перенести разметку каждого `sim-xxx` тела + его `ctrl-xxx` бара из lab.html в соответствующий модуль.
|
|
- [ ] Удалить вынесенные блоки из lab.html.
|
|
- [ ] Сохранить id элементов (canvas ids, ctrl ids) — на них завязаны Sim-классы.
|
|
|
|
## Files to Modify/Create
|
|
- Все `frontend/js/labs/*.js` — добавить mount/bodyHtml.
|
|
- `frontend/lab.html` — удалить inline тела.
|
|
|
|
## Acceptance Criteria
|
|
- Все симуляции монтируются и работают.
|
|
- lab.html значительно меньше (~3000 строк вынесено).
|
|
- Повторное открытие не дублирует DOM.
|
|
|
|
## Notes
|
|
- Theory-panel и общий sim-topbar остаются в lab.html.
|
|
- KaTeX/lucide ре-инициализация после mount при необходимости.
|
|
|
|
## Review Checklist
|
|
- [ ] Нет дублей DOM при повторном open
|
|
- [ ] id элементов сохранены
|
|
- [ ] Все тела перенесены
|
|
|
|
## Handoff to Next Phase
|
|
<!-- заполнить после фазы -->
|