feat: планиметрия фазы 8.3–10.2 — метки параллельности, средняя линия, параллелограмм, диагонали, подобие; geometry в онлайн-уроке
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3916,6 +3916,36 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="gp-section-title" style="margin-top:4px">Средняя линия и четырёхугольники</div>
|
||||
<div class="geo-tool-grid">
|
||||
<button id="geo-btn-midline" class="geo-tool-btn" onclick="geoSetTool('midline',this)" title="Средняя линия треугольника — 3 вершины 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="7.5" y1="11.5" x2="16.5" y2="11.5" stroke-width="2"/><circle cx="7.5" cy="11.5" r="2" fill="currentColor"/><circle cx="16.5" cy="11.5" r="2" fill="currentColor"/></svg>
|
||||
Средняя линия
|
||||
</button>
|
||||
<button id="geo-btn-parallelogram" class="geo-tool-btn" onclick="geoSetTool('parallelogram',this)" title="Параллелограмм — 3 точки A, B, C → вычисляет D">
|
||||
<svg viewBox="0 0 24 24" fill="none"><polygon points="6,19 3,5 18,5 21,19" stroke-width="1.5" fill="none"/></svg>
|
||||
Параллелограмм
|
||||
</button>
|
||||
<button id="geo-btn-diagonal" class="geo-tool-btn" onclick="geoSetTool('diagonal',this)" title="Диагонали — клик внутри многоугольника (4+ вершин)">
|
||||
<svg viewBox="0 0 24 24" fill="none"><rect x="3" y="3" width="18" height="18" stroke-width="1.5" fill="none"/><line x1="3" y1="3" x2="21" y2="21" stroke-width="1.5" stroke-dasharray="4,2"/><line x1="21" y1="3" x2="3" y2="21" stroke-width="1.5" stroke-dasharray="4,2"/></svg>
|
||||
Диагонали
|
||||
</button>
|
||||
<button id="geo-btn-scale" class="geo-tool-btn" onclick="geoSetTool('scale',this)" title="Подобие — клик центр O, затем клик точку P → P' = O + k·(P − O)">
|
||||
<svg viewBox="0 0 24 24" fill="none"><circle cx="12" cy="12" r="2" fill="currentColor"/><line x1="12" y1="12" x2="20" y2="6" stroke-width="1.5"/><circle cx="20" cy="6" r="2.5" stroke-width="1.5"/><line x1="12" y1="12" x2="17" y2="18" stroke-width="1.5" stroke-dasharray="3,2"/><circle cx="17" cy="18" r="2.5" stroke-width="1.5" stroke-dasharray="3,2"/></svg>
|
||||
Подобие
|
||||
</button>
|
||||
</div>
|
||||
<div class="geo-ngon-ctrl" id="geo-scale-ctrl" style="gap:6px;padding:2px 0 4px">
|
||||
<span style="font-size:11px;opacity:.7">k =</span>
|
||||
<button class="geo-ngon-btn" onclick="geoScaleK(-0.5)">
|
||||
<svg viewBox="0 0 16 16" fill="none"><line x1="3" y1="8" x2="13" y2="8" stroke-width="2" stroke-linecap="round"/></svg>
|
||||
</button>
|
||||
<span id="geo-scale-k">2</span>
|
||||
<button class="geo-ngon-btn" onclick="geoScaleK(+0.5)">
|
||||
<svg viewBox="0 0 16 16" fill="none"><line x1="8" y1="3" x2="8" y2="13" stroke-width="2" stroke-linecap="round"/><line x1="3" y1="8" x2="13" y2="8" stroke-width="2" stroke-linecap="round"/></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-угольник — клик центр, клик вершина">
|
||||
@@ -3944,6 +3974,10 @@
|
||||
<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>
|
||||
<button id="geo-btn-parallelmark" class="geo-tool-btn" onclick="geoSetTool('parallelmark',this)" title="Метки параллельных сторон — клик на отрезок (1–2 стрелки)">
|
||||
<svg viewBox="0 0 24 24" fill="none"><line x1="3" y1="8" x2="21" y2="8" stroke-width="1.5"/><polyline points="9,5 13,8 9,11" stroke-width="1.8" fill="none" stroke-linecap="round" stroke-linejoin="round"/><line x1="3" y1="16" x2="21" y2="16" stroke-width="1.5"/><polyline points="9,13 13,16 9,19" stroke-width="1.8" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
Параллельность
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Display options -->
|
||||
@@ -5446,10 +5480,15 @@
|
||||
translate: 'Кликни начало вектора A',
|
||||
tick: 'Кликни на отрезок или сторону — добавить штрих (1–3; ещё раз — убрать)',
|
||||
arcmark: 'Кликни на вершину полигона — добавить дугу (1–3; ещё раз — убрать)',
|
||||
parallelmark: 'Кликни на отрезок или сторону — добавить метку параллельности (1–2; ещё раз — убрать)',
|
||||
altitude: 'Кликни на сторону треугольника (или прямую)',
|
||||
median: 'Кликни вершину A треугольника',
|
||||
centroid: 'Кликни первую вершину треугольника',
|
||||
orthocenter: 'Кликни первую вершину треугольника',
|
||||
midline: 'Кликни вершину A треугольника',
|
||||
parallelogram:'Кликни вершину A параллелограмма',
|
||||
diagonal: 'Кликни внутри четырёхугольника — построим диагонали',
|
||||
scale: 'Кликни центр подобия O',
|
||||
};
|
||||
|
||||
function geoSetTool(name, btnEl) {
|
||||
@@ -5476,6 +5515,11 @@
|
||||
centroid_3: 'Кликни вершину C — построим центроид',
|
||||
orthocenter_2: 'Кликни вершину B',
|
||||
orthocenter_3: 'Кликни вершину C — построим ортоцентр',
|
||||
midline_2: 'Кликни вершину B (конец первой стороны)',
|
||||
midline_3: 'Кликни вершину C (конец второй стороны) — построим среднюю линию',
|
||||
parallelogram_2: 'Кликни вершину B (смежная с A)',
|
||||
parallelogram_3: 'Кликни вершину C — построим параллелограмм ABCD',
|
||||
scale_2: 'Кликни точку P — построим P\' = O + k·(P − O)',
|
||||
};
|
||||
|
||||
function _geoShowHint(name, phase) {
|
||||
@@ -5495,6 +5539,15 @@
|
||||
if (el) el.textContent = geomSim._ngonSides;
|
||||
}
|
||||
|
||||
function geoScaleK(delta) {
|
||||
if (!geomSim) return;
|
||||
const k = Math.round((geomSim._scaleK + delta) * 10) / 10;
|
||||
if (k < 0.1) return;
|
||||
geomSim.setScaleK(k);
|
||||
const el = document.getElementById('geo-scale-k');
|
||||
if (el) el.textContent = k;
|
||||
}
|
||||
|
||||
function geoToggle(prop, rowEl) {
|
||||
if (!geomSim) return;
|
||||
geomSim[prop] = !geomSim[prop];
|
||||
|
||||
Reference in New Issue
Block a user