feat(stereo): A2 — пересечения построений + интерактивное дерево объектов
Фаза A2 раунда «Конструктор». Пересечения как list-based операция: - прямая ∩ плоскость → точка (_cpoints, имена M,N,K…); - плоскость ∩ плоскость → прямая; - прямая ∩ прямая → точка либо «скрещиваются»/«параллельны». Точки-пересечения пикабельны — по ним строятся новые прямые/плоскости. - StereoSim: setIntersectMode/pickConstructObject (выбор 2 объектов), _computeIntersection + _intersectLinePlane/_intersectPlanePlane/ _intersectLineLine, _createCPoint/_drawCPointObject/_cpointLabel, removeConstruction(id)/toggleConstructionVis(id), getConstructions переписан в дерево (id/type/hidden/selected/info), _pickConstructPoint теперь учитывает точки-пересечения. Сброс в setFigure, очистка/clear. - Панель: кнопка «Пересечение»; список — интерактивные строки (выбор для пересечения, глаз=видимость, ×=удаление) через glue stereoIntersectMode/ ConstructSelect/ConstructVis/ConstructDelete; интеграция в _stereoDeactivateTools. Верификация: node --check OK; headless-смоук 34/34 (точная геометрия line∩plane / plane∩plane / line∩line, параллельные/скрещ. без объекта, list-pick поток, гард точки, дерево, видимость/удаление/remove-last, setFigure-сброс, dispose); эмодзи/eval/new Function — 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3681,6 +3681,9 @@
|
||||
<button class="st-tool-btn" id="stereo-plane-btn" onclick="stereoPlaneMode(this)" title="Плоскость через 3 точки — кликните три вершины или точки">
|
||||
<svg viewBox="0 0 24 24"><polygon points="3,16 13,20 21,8 11,4" fill="none"/><circle cx="3" cy="16" r="1.8" fill="currentColor"/><circle cx="21" cy="8" r="1.8" fill="currentColor"/><circle cx="11" cy="4" r="1.8" fill="currentColor"/></svg>Плоскость
|
||||
</button>
|
||||
<button class="st-tool-btn st-tool-btn-wide" id="stereo-intersect-btn" onclick="stereoIntersectMode(this)" title="Пересечение: выберите 2 объекта в списке (прямая∩плоскость → точка, плоскость∩плоскость → прямая)">
|
||||
<svg viewBox="0 0 24 24"><line x1="3" y1="7" x2="21" y2="17"/><line x1="3" y1="17" x2="21" y2="7"/><circle cx="12" cy="12" r="2.4" fill="currentColor"/></svg>Пересечение
|
||||
</button>
|
||||
</div>
|
||||
<div class="st-action-grid" style="margin-top:3px">
|
||||
<button class="st-action-btn" onclick="stereoConstructUndo()">Удалить последнее</button>
|
||||
|
||||
Reference in New Issue
Block a user