--- name: project_stereo3d_improvements description: Симуляция «Стереометрия 3D» — итог ревью+апгрейда (5 фаз) и deep-link конвенция для учебников metadata: node_type: memory type: project originSessionId: e04a2ab1-2fce-4387-9ec4-7f3f2fb6d65c --- Симуляция Стереометрии 3D (`frontend/js/labs/stereo.js`, класс StereoSim на Three.js, панель `#sim-stereo` в lab.html) прошла ревью и апгрейд в 5 фаз (май 2026, коммиты 8af8596…ccfb611): - Фаза 0: render-on-demand (`_invalidate`/`_needsRender`, loop засыпает), `_pauseAllSims()` в lab-init паузит фоновые rAF-симы при переключении, pointer/touch на canvas с capture, `webglcontextlost`+`dispose()`, рекурсивный `_clearGroup`. - Фаза 1: инерция орбиты, pan (ПКМ/СКМ/Shift, 2 пальца), overlay-тулбар (сброс/пресеты Изо·Спереди·Сбоку·Сверху/спин/fullscreen/скриншот PNG). - Фаза 2: аналитические сечения кривых `_sliceCurvedByNormal()` (окружность/эллипс вместо сэмплинга), `_edgePickNDC()` пикинг рёбер, HiDPI `_makeTextSprite`. - Фаза 3: live-readout overlay `#stereo-readout` (тип/S/P/измерение через `info().readout`), `_raycastFace()` точки на гранях, подписи вершин сечения K,L,M… - Фаза 4: подписи осей X/Y/Z, свечение вершин, контраст рёбер. - Фаза 5: deep-link + клавиатура (a11y). - Фаза 6 (`3801d0c`): построение сечения «по следам» (метод следов), путь (b) — надёжный полигон + аналитический след `_traceLine()` (π∩основание y=0) и вспом. точки `_auxiliaryPoints()` (продление сторон до следа). Настоящий пошаговый `_drawSection3PStep` (6 подписанных шагов, финал скрыт до шага 5), подписи в `#sect3p-hint`. Только тела с основанием (`_hasBase`: куб/параллелепипед/призма/пирамида/усеч.пир/тетраэдр). Включается тумблером «Пошагово» в блоке «Сечение через 3 точки» + кнопки Вперёд/Назад. **Deep-link фигуры из учебников** (не очевидно из кода): открыть конкретное тело можно через `openSim('stereo:
')` ИЛИ ссылкой `/lab?stereofig=
#sim/stereo`. Допустимые `
`: cube, parallelepiped, prism, pyramid, truncpyramid, tetrahedron, octahedron, icosahedron, dodecahedron, cylinder, cone, trunccone, sphere. Сделано без правки общего hash-роутера (lab-glue.js) намеренно. **Бэклог** (в `plans/STEREO_3D_IMPROVEMENT.md`): дробление 3900-строчного файла на модули (отложено пользователем); полное «построение сечения по следам»; подсветка грани по ховеру (нужен точный raycast логических граней, не centroid); zoom-to-cursor; readout углов; градиентный фон в скриншоте. Правило проекта: при правке stereo.js поднимать `?v=N` у `