feat(opticsbench): конструктор Фаза 3 — изображение на экране + экспорт PNG

- _drawScreenHits: светящиеся пятна (additive) в точках попадания лучей на
  экран, по длине волны — видно формирование изображения и спектр
- benchExportPng + кнопка «Снимок PNG»; подсказка про λ/белый свет
- bump opticsbench.js?v=4

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-30 12:40:37 +03:00
parent 353a6cb8a9
commit 1c7d8e9d95
3 changed files with 48 additions and 8 deletions
+6 -4
View File
@@ -34,10 +34,12 @@
- [x] 2.1 Вогнутое/выпуклое зеркало — сделано ещё в Фазе 1 (кик f=R/2, разворот хода, лимит отражений).
- [x] 2.2 Призма: тонкопризменное отклонение δ=(n−1)·A к основанию + хроматическая дисперсия n(λ). Белый свет — пучки по `OB_SPECTRAL`, каждый луч красится по λ (`wavelengthToRGB`); до призмы совпадают, после — расходятся в спектр. Управление через общий λ-бар скамьи. Проверено численно (фиолетовый отклоняется сильнее красного).
### Фаза 3 — Сохранение состояния + полировка — [ ]
- [ ] 3.1 Расширить `_obGetState/_obApplyState` на конструктор (снимок/embed).
- [ ] 3.2 Пресеты систем (микроскоп, телескоп, глаз, проектор), экспорт PNG.
- [ ] 3.3 Полировка: апертурное отсечение, подписи, тач, a11y.
### Фаза 3 — Сохранение состояния + полировка — [x]
- [x] 3.1 Сохранение состояния конструктора — сделано в Фазе 1 (`_obGetState/_obApplyState` + `bench`).
- [x] 3.2 Пресеты систем (микроскоп/телескоп/проектор/зеркальная) — Фаза 1; экспорт PNG (`benchExportPng`, кнопка «Снимок PNG»).
- [x] 3.3 Экран ловит изображение: светящиеся пятна (additive `lighter`) в точках попадания лучей, по λ — видно формирование изображения и спектр.
Бэклог: точная двухгранная призма (Снеллиус на гранях вместо тонкопризменного), апертурное отсечение лучей вне линзы (сейчас проходят прямо), профиль интенсивности на экране, поворот элементов, удаление legacy `FreeBuildSim`.
---
История: создан 2026-05-30.