Commit Graph

4 Commits

Author SHA1 Message Date
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