Maxim Dolgolyov
e2e351d9c2
feat: Phase 4 планиметрии — симметрия (reflect) + правильный n-угольник (ngon)
...
- GeoEngine: _dependsOn/recompute для constr='reflect' и 'ngon_vertex'
- reflect: производная точка-отражение (P'=2·foot-P), зависит от axis+srcPt
- ngon: правильный n-угольник по центру и вершине; вершины v1..vn-1 = derived
points (constr='ngon_vertex', хранят srcCenter/srcVertex/k/n); при движении
центра/вершины все вершины автоматически пересчитываются
- GeoSim: _ngonSides=6, setNgonSides(n), инструменты 'reflect'/'ngon' в _handleToolClick
- lab.html: кнопки Симметрия и n-угольник, +/- контроллер сторон, хинты Phase 2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:22:49 +03:00
Maxim Dolgolyov
2e7ec81e59
feat: Phase 3 планиметрии — дуги углов, маркер 90°, инструменты foot/circumcircle/incircle
...
- _drawAngleMeasures(): реальные дуги через биссектрису (midAngle±halfSpread),
маркер правого угла квадратом при |angle-90°|<2°
- gIncircle(): функция вписанной окружности треугольника
- GeoEngine: поддержка constr='foot' (точка), constr='circumcircle'/'incircle' (окружность)
в _dependsOn и recompute; cascadeDelete через derived circles
- _drawCircle(): обработка derived=true (circumcircle/incircle) — dashed + cx/cy/r
- getStats(): исправлена статистика для производных окружностей
- constructions учитывает derivedCircles
- lab.html: 3 новые кнопки (Основание, Описанная, Вписанная) + хинты
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:15:05 +03:00
Maxim Dolgolyov
95cca89dfc
feat: планиметрия Phase 2 — инструменты построения
...
- GeoEngine: система производных объектов (recompute, propagateDeps),
каскадная цепочка зависимостей при перемещении точек
- 6 новых инструментов в GeoSim:
* midpoint — середина отрезка (производная точка)
* perpbisect — серединный перпендикуляр (derived_line)
* anglebisect — биссектриса угла ABC (derived_line)
* parallel — параллельная прямая через точку (derived_line)
* perpendicular — перпендикуляр через точку (derived_line)
* intersect — точка пересечения двух прямых (производная точка)
- Производные объекты: пунктирный стиль, светящийся ободок,
автообновление при перемещении родительских точек
- Двухфазный UI для parallel/perpendicular/intersect:
_pendingLineRef + _drawLineRefHighlight (подсветка первой линии)
- lab.html: 6 новых кнопок в секции "Построения", счётчик построений,
onHintChange callback для контекстных подсказок
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:00:00 +03:00
Maxim Dolgolyov
35849cf231
feat: планиметрия — интерактивная геометрическая симуляция
...
- Новый файл frontend/js/labs/geometry.js (~1200 строк):
GeoEngine (граф объектов с каскадным удалением),
GeoViewport (система координат math↔canvas, зум/пан),
GeoSim (полный движок: точки, отрезки, прямые, лучи,
окружности, треугольники, многоугольники, привязка к сетке
и точкам, undo/redo, экспорт PNG, classroom sync)
- frontend/lab.html: карточка, ctrl, sim-geometry секция,
функции geoSetTool/geoToggle/_openGeometry, скрипт-тег
- frontend/admin.html: geometry в ADMIN_SIMS
- backend/src/db/migrate.js: таблицы geometry_tasks,
geometry_submissions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 09:40:41 +03:00