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>
This commit is contained in:
@@ -3826,6 +3826,18 @@
|
||||
<svg viewBox="0 0 24 24" fill="none"><line x1="4" y1="20" x2="20" y2="4" stroke-width="2"/><line x1="4" y1="4" x2="20" y2="20" stroke-width="2"/><circle cx="12" cy="12" r="3.5" fill="currentColor"/></svg>
|
||||
Пересеч.
|
||||
</button>
|
||||
<button id="geo-btn-foot" class="geo-tool-btn" onclick="geoSetTool('foot',this)" title="Основание перпендикуляра — клик на прямую, затем на точку">
|
||||
<svg viewBox="0 0 24 24" fill="none"><line x1="3" y1="18" x2="21" y2="18" stroke-width="2"/><line x1="12" y1="18" x2="12" y2="4" stroke-width="1.5" stroke-dasharray="3,2"/><path d="M12 18 L15 18 L15 15" stroke-width="1.5" fill="none"/><circle cx="12" cy="4" r="2.5" fill="currentColor"/></svg>
|
||||
Основание
|
||||
</button>
|
||||
<button id="geo-btn-circumcircle" class="geo-tool-btn geo-tool-wide" onclick="geoSetTool('circumcircle',this)" title="Описанная окружность — 3 точки треугольника">
|
||||
<svg viewBox="0 0 24 24" fill="none"><circle cx="12" cy="12" r="9" stroke-width="1.5" stroke-dasharray="4,3"/><polygon points="6,18 18,18 12,6" stroke-width="1.5" fill="none"/></svg>
|
||||
Описанная ☉
|
||||
</button>
|
||||
<button id="geo-btn-incircle" class="geo-tool-btn geo-tool-wide" onclick="geoSetTool('incircle',this)" title="Вписанная окружность — 3 точки треугольника">
|
||||
<svg viewBox="0 0 24 24" fill="none"><polygon points="4,20 20,20 12,4" stroke-width="1.5" fill="none"/><circle cx="12" cy="15" r="5" stroke-width="1.5" stroke-dasharray="4,3"/></svg>
|
||||
Вписанная ○
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Display options -->
|
||||
@@ -5313,6 +5325,9 @@
|
||||
parallel: 'Сначала кликни на прямую/отрезок, затем на точку',
|
||||
perpendicular:'Сначала кликни на прямую/отрезок, затем на точку',
|
||||
intersect: 'Кликни на первую прямую, затем на вторую',
|
||||
foot: 'Сначала кликни на прямую/отрезок',
|
||||
circumcircle: 'Кликни 3 точки треугольника — получи описанную окружность',
|
||||
incircle: 'Кликни 3 точки треугольника — получи вписанную окружность',
|
||||
};
|
||||
|
||||
function geoSetTool(name, btnEl) {
|
||||
@@ -5331,6 +5346,7 @@
|
||||
parallel: 'Теперь кликни на точку — через неё проведём прямую',
|
||||
perpendicular: 'Теперь кликни на точку — через неё проведём перпендикуляр',
|
||||
intersect: 'Теперь кликни на вторую прямую',
|
||||
foot: 'Теперь кликни на точку — найдём основание перпендикуляра',
|
||||
};
|
||||
hint.textContent = phase2hints[name] || _GEO_HINTS[name] || '';
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user