feat: Фазы 7–8 планиметрии — элементы треугольника + метки
Фаза 7: - altitude: высота (клик на сторону → клик вершина → foot + отрезок + прямой угол) - median: медиана (3 клика A,B,C → midpoint + отрезок) - centroid: 3 клика → 3 медианы + точка G (centroid constr) - orthocenter: 3 клика → 3 высоты + точка H (orthocenter constr + altitude_foot constr) - gOrthocenter() math function - Прямые углы для altitude_foot в _drawAngleMeasures - Исправлен баг onHintChange: передавался boolean вместо numeric phase Фаза 8: - tick tool: метки равных сторон на отрезках и сторонах полигонов (1–3 штриха) - arcmark tool: метки равных углов на вершинах полигонов (1–3 дуги) - _drawTickMark(), sideMarks[], angleMarks[] на полигонах - Новая секция «Метки» в панели инструментов Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+47
-1
@@ -3896,6 +3896,26 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="gp-section-title" style="margin-top:4px">Элементы треугольника</div>
|
||||
<div class="geo-tool-grid">
|
||||
<button id="geo-btn-altitude" class="geo-tool-btn" onclick="geoSetTool('altitude',this)" title="Высота — клик на сторону, затем на вершину">
|
||||
<svg viewBox="0 0 24 24" fill="none"><line x1="3" y1="20" x2="21" y2="20" stroke-width="1.5"/><line x1="10" y1="4" x2="10" y2="20" stroke-width="1.5" stroke-dasharray="4,3"/><rect x="10" y="14" width="4" height="4" stroke-width="1.2"/><polygon points="10,4 3,20 21,20" stroke-width="1.5" fill="none"/></svg>
|
||||
Высота
|
||||
</button>
|
||||
<button id="geo-btn-median" class="geo-tool-btn" onclick="geoSetTool('median',this)" title="Медиана — клик вершина A, B, C">
|
||||
<svg viewBox="0 0 24 24" fill="none"><polygon points="12,3 3,20 21,20" stroke-width="1.5" fill="none"/><line x1="12" y1="3" x2="12" y2="20" stroke-width="1.5"/><circle cx="12" cy="20" r="2.5" fill="currentColor"/></svg>
|
||||
Медиана
|
||||
</button>
|
||||
<button id="geo-btn-centroid" class="geo-tool-btn" onclick="geoSetTool('centroid',this)" title="Центроид — 3 точки треугольника, строит 3 медианы">
|
||||
<svg viewBox="0 0 24 24" fill="none"><polygon points="12,3 3,20 21,20" stroke-width="1.5" fill="none"/><line x1="12" y1="3" x2="12" y2="20" stroke-width="1.2" opacity=".6"/><line x1="3" y1="20" x2="16.5" y2="11.5" stroke-width="1.2" opacity=".6"/><line x1="21" y1="20" x2="7.5" y2="11.5" stroke-width="1.2" opacity=".6"/><circle cx="12" cy="14.3" r="2.5" fill="currentColor"/></svg>
|
||||
Центроид
|
||||
</button>
|
||||
<button id="geo-btn-orthocenter" class="geo-tool-btn" onclick="geoSetTool('orthocenter',this)" title="Ортоцентр — 3 точки треугольника, строит 3 высоты">
|
||||
<svg viewBox="0 0 24 24" fill="none"><polygon points="12,3 3,20 21,20" stroke-width="1.5" fill="none"/><line x1="12" y1="3" x2="12" y2="20" stroke-width="1.2" stroke-dasharray="3,2" opacity=".6"/><line x1="3" y1="20" x2="16" y2="12" stroke-width="1.2" stroke-dasharray="3,2" opacity=".6"/><line x1="21" y1="20" x2="8" y2="12" stroke-width="1.2" stroke-dasharray="3,2" opacity=".6"/><circle cx="12" cy="14" r="2.5" fill="currentColor"/></svg>
|
||||
Ортоцентр
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="gp-section-title" style="margin-top:4px">Правильный многоугольник</div>
|
||||
<div class="geo-tool-grid">
|
||||
<button id="geo-btn-ngon" class="geo-tool-btn" onclick="geoSetTool('ngon',this)" title="Правильный n-угольник — клик центр, клик вершина">
|
||||
@@ -3913,6 +3933,19 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mark tools -->
|
||||
<div class="gp-section-title" style="margin-top:4px">Метки</div>
|
||||
<div class="geo-tool-grid">
|
||||
<button id="geo-btn-tick" class="geo-tool-btn" onclick="geoSetTool('tick',this)" title="Метки равных сторон — клик на отрезок или сторону (1–3 штриха)">
|
||||
<svg viewBox="0 0 24 24" fill="none"><line x1="3" y1="20" x2="21" y2="4" stroke-width="1.5"/><line x1="11" y1="7" x2="8" y2="11" stroke-width="2" stroke-linecap="round"/><line x1="13" y1="9" x2="10" y2="13" stroke-width="2" stroke-linecap="round"/></svg>
|
||||
Штрихи
|
||||
</button>
|
||||
<button id="geo-btn-arcmark" class="geo-tool-btn" onclick="geoSetTool('arcmark',this)" title="Метки равных углов — клик на вершину полигона (1–3 дуги)">
|
||||
<svg viewBox="0 0 24 24" fill="none"><path d="M4 20 L20 20 L20 4" stroke-width="1.5" fill="none"/><path d="M8 20 A12 12 0 0 1 20 8" stroke-width="1.5" fill="none"/><path d="M11 20 A9 9 0 0 1 20 11" stroke-width="1.5" fill="none"/></svg>
|
||||
Дуги
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Display options -->
|
||||
<div class="gp-section-title" style="margin-top:6px">Параметры</div>
|
||||
<label class="geo-toggle-row" onclick="geoToggle('showGrid',this)">
|
||||
@@ -5411,6 +5444,12 @@
|
||||
ngon: 'Клик — центр правильного многоугольника; второй клик — вершина',
|
||||
tangent: 'Кликни на окружность — построим касательные',
|
||||
translate: 'Кликни начало вектора A',
|
||||
tick: 'Кликни на отрезок или сторону — добавить штрих (1–3; ещё раз — убрать)',
|
||||
arcmark: 'Кликни на вершину полигона — добавить дугу (1–3; ещё раз — убрать)',
|
||||
altitude: 'Кликни на сторону треугольника (или прямую)',
|
||||
median: 'Кликни вершину A треугольника',
|
||||
centroid: 'Кликни первую вершину треугольника',
|
||||
orthocenter: 'Кликни первую вершину треугольника',
|
||||
};
|
||||
|
||||
function geoSetTool(name, btnEl) {
|
||||
@@ -5430,6 +5469,13 @@
|
||||
tangent_2: 'Теперь кликни на внешнюю точку — получишь две касательные',
|
||||
translate_2: 'Теперь кликни конец вектора B',
|
||||
translate_3: 'Теперь кликни точку P — она будет перенесена',
|
||||
altitude_2: 'Теперь кликни вершину — опустим из неё высоту',
|
||||
median_2: 'Теперь кликни вершину B (один конец основания)',
|
||||
median_3: 'Теперь кликни вершину C (второй конец основания)',
|
||||
centroid_2: 'Кликни вершину B',
|
||||
centroid_3: 'Кликни вершину C — построим центроид',
|
||||
orthocenter_2: 'Кликни вершину B',
|
||||
orthocenter_3: 'Кликни вершину C — построим ортоцентр',
|
||||
};
|
||||
|
||||
function _geoShowHint(name, phase) {
|
||||
@@ -5514,7 +5560,7 @@
|
||||
if (!geomSim) {
|
||||
geomSim = new GeoSim(canvas);
|
||||
geomSim.onUpdate = _geoUpdateStats;
|
||||
geomSim.onHintChange = (tool, phase) => _geoShowHint(tool, phase > 1);
|
||||
geomSim.onHintChange = (tool, phase) => _geoShowHint(tool, phase);
|
||||
geomSim.onDeleteRequest = _geoShowDeleteConfirm;
|
||||
|
||||
// keyboard shortcuts
|
||||
|
||||
Reference in New Issue
Block a user