Инструменты: циркуль (для окружностей и переноса длин) и линейка без делений (только проводить прямые через две точки). С их помощью решается удивительно широкий класс задач.
'
+ + '
6 базовых построений — основа всего курса:
'
+ + '
'
+ + '
Серединный перпендикуляр к отрезку $AB$. Из $A$ и $B$ радиусом $r > |AB|/2$ проводим окружности — они пересекутся в двух точках $P_1$ (сверху) и $P_2$ (снизу). Прямая $P_1 P_2$ — искомая.
'
+ + '
Биссектриса угла $\\angle AOB$. Из вершины $O$ — окружность; точки пересечения с лучами назовём $X$ и $Y$. Из $X$ и $Y$ — окружности равного радиуса; их пересечение $Z$ — внутри угла. Луч $OZ$ — биссектриса.
'
+ + '
Перпендикуляр к прямой через точку (на прямой или вне неё) — вариация серединного перпендикуляра.
'
+ + '
Параллельная прямая через точку — через построение равных накрест лежащих углов.
'
+ + '
Касательная к окружности из внешней точки $P$ — строим окружность с диаметром $OP$; её пересечения с данной окружностью — точки касания.
'
+ + '
Описанная окружность треугольника — центр в пересечении серединных перпендикуляров сторон. Вписанная — центр в пересечении биссектрис углов.
'
+ + '
'
+ + 'Почему серединный перпендикуляр работает?
'
+ + '
Точки $P_1$ и $P_2$ равноудалены от $A$ и $B$ (по построению $|P_i A| = |P_i B| = r$). Множество точек, равноудалённых от концов отрезка, — это серединный перпендикуляр (это его геометрическое определение). Значит, прямая $P_1 P_2$ и есть искомый перпендикуляр.
'
+ + '
');
+
+ html += makeCard('rule', 'Алгоритм решения задач на построение', '§ 11.2',
+ '
Любая «настоящая» задача на построение решается по 4 этапам:
'
+ + ''
+ + '
Анализ. Предположим, искомая фигура уже построена. Делаем «эскиз результата», ищем связи между известными и искомыми элементами. Часто отсюда «всплывает» вспомогательное построение (серединный $\\perp$, биссектриса, дуга...).
'
+ + '
Построение. Пошагово, циркулем и линейкой. Каждый шаг — точное действие: «Проведём окружность радиуса $r$ с центром в точке $M$», «Проведём прямую через точки $X$ и $Y$».
'
+ + '
Доказательство. Показываем, что построенная фигура удовлетворяет всем условиям задачи (опираясь на теоремы планиметрии).
'
+ + '
Исследование. При каких условиях задача имеет решение? Сколько решений? Единственно ли оно? Например: «построить треугольник по трём сторонам» возможно только при выполнении неравенства треугольника.
'
+ + ''
+ + '
В школьной практике этапы 1 и 4 часто опускают, но именно они отличают задачу на построение от простого описания построения.
');
+
+ /* === ИНТЕРАКТИВ 1 — Анимация серединного перпендикуляра === */
+ html += '
'
+ + '
анимация · 5 шагов
Построение серединного $\\perp$ к отрезку $AB$
'
+ + '
Двигай слайдер шагов — увидишь, как из двух дуг рождается серединный перпендикуляр. Дойди до шага 5 — +10 XP.
'
+ + ''
+ + '
'
+ + ''
+ + ''
+ + '
'
+ + ''
+ + '
';
+
+ /* === ИНТЕРАКТИВ 2 — Анимация биссектрисы === */
+ html += '
'
+ + '
анимация · 4 шага
Построение биссектрисы угла $\\angle AOB$
'
+ + '
Двигай слайдер шагов — биссектриса появится из пересечения двух дуг. Дойди до шага 4 — +10 XP.
'
+ + ''
+ + '
'
+ + ''
+ + ''
+ + '
'
+ + ''
+ + '
';
+
+ /* === ИНТЕРАКТИВ 3 — Квикфайр «Какое построение?» === */
+ html += '
'
+ + '
квикфайр · 6 вопросов
Какое базовое построение нужно?
'
+ + '
Для каждой ситуации выбери базовое построение. После 6 верных — +15 XP.
'
+ + ''
+ + '
Верно: 0 / 6
'
+ + '
';
+
+ html += secNavFor('p11');
+ html += readButton('p11');
+
+ box.innerHTML = html;
+ renderMath(box);
+
+ /* === IV1 — анимация серединного перпендикуляра === */
+ (function(){
+ const svg = document.getElementById('p11-iv1-svg');
+ const sl = document.getElementById('p11-iv1-step');
+ const sv = document.getElementById('p11-iv1-step-v');
+ const desc = document.getElementById('p11-iv1-desc');
+ let xpGiven = false, maxStep = 1;
+
+ /* координаты в SVG */
+ const A = {x:130, y:160}, B = {x:350, y:160};
+ const Mx = (A.x + B.x) / 2;
+ const r = 130; /* радиус > |AB|/2 = 110 */
+ /* пересечения двух окружностей */
+ const dx = (B.x - A.x);
+ const half = dx / 2;
+ const hY = Math.sqrt(Math.max(0, r*r - half*half));
+ const P1 = {x:Mx, y:160 - hY};
+ const P2 = {x:Mx, y:160 + hY};
+ const M = {x:Mx, y:160};
+
+ const TXT = [
+ 'Шаг 1. Дан отрезок $AB$. Его нужно разделить пополам перпендикуляром.',
+ 'Шаг 2. Проводим окружность радиуса $r > |AB|/2$ с центром в точке $A$.',
+ 'Шаг 3. Тем же радиусом — окружность с центром в точке $B$.',
+ 'Шаг 4. Окружности пересеклись в точках $P_1$ (сверху) и $P_2$ (снизу).',
+ 'Шаг 5. Прямая $P_1 P_2$ — серединный перпендикуляр; она пересекает $AB$ в середине $M$.'
+ ];
+
+ function draw(step){
+ let g = '';
+ /* фон-сетка */
+ g += '';
+ /* отрезок AB всегда */
+ g += '';
+ g += '';
+ g += '';
+ g += 'A';
+ g += 'B';
+
+ if(step >= 2){
+ g += '';
+ }
+ if(step >= 3){
+ g += '';
+ }
+ if(step >= 4){
+ g += '';
+ g += '';
+ g += 'P1';
+ g += 'P2';
+ }
+ if(step >= 5){
+ g += '';
+ g += '';
+ g += 'M';
+ /* пометка прямого угла */
+ g += '';
+ }
+ svg.innerHTML = g;
+ }
+ function update(){
+ const s = +sl.value;
+ sv.textContent = s;
+ desc.innerHTML = TXT[s-1];
+ try{ renderMath(desc); }catch(e){}
+ draw(s);
+ if(s > maxStep) maxStep = s;
+ if(maxStep >= 5 && !xpGiven){
+ xpGiven = true;
+ addXp(10, 'p11-iv1');
+ bumpProgress('p11', 25);
+ }
+ }
+ sl.addEventListener('input', update);
+ update();
+ })();
+
+ /* === IV2 — анимация биссектрисы === */
+ (function(){
+ const svg = document.getElementById('p11-iv2-svg');
+ const sl = document.getElementById('p11-iv2-step');
+ const sv = document.getElementById('p11-iv2-step-v');
+ const desc = document.getElementById('p11-iv2-desc');
+ let xpGiven = false, maxStep = 1;
+
+ /* угол с вершиной в O */
+ const O = {x:120, y:220};
+ const angA = -10 * Math.PI/180; /* луч OA — почти горизонтальный */
+ const angB = -55 * Math.PI/180; /* луч OB — выше */
+ const angBis = (angA + angB) / 2;
+ const Ld = 320; /* длина лучей */
+
+ const Aend = {x:O.x + Ld*Math.cos(angA), y:O.y + Ld*Math.sin(angA)};
+ const Bend = {x:O.x + Ld*Math.cos(angB), y:O.y + Ld*Math.sin(angB)};
+
+ const r1 = 110;
+ const X = {x:O.x + r1*Math.cos(angA), y:O.y + r1*Math.sin(angA)};
+ const Y = {x:O.x + r1*Math.cos(angB), y:O.y + r1*Math.sin(angB)};
+
+ /* пересечение Z двух одинаковых дуг из X и Y радиуса r2 — на биссектрисе */
+ const r2 = 90;
+ /* Z на луче биссектрисы от O */
+ const Zd = r1*Math.cos((angB-angA)/2) + Math.sqrt(Math.max(0, r2*r2 - (r1*Math.sin((angB-angA)/2))*(r1*Math.sin((angB-angA)/2))));
+ const Z = {x:O.x + Zd*Math.cos(angBis), y:O.y + Zd*Math.sin(angBis)};
+
+ const TXT = [
+ 'Шаг 1. Дан угол $\\angle AOB$ с вершиной в $O$. Нужно построить его биссектрису.',
+ 'Шаг 2. Окружность с центром $O$ — пересекает лучи в точках $X$ (на $OA$) и $Y$ (на $OB$).',
+ 'Шаг 3. Из $X$ и $Y$ — окружности равного радиуса. Они пересекаются в точке $Z$ внутри угла.',
+ 'Шаг 4. Луч $OZ$ — биссектриса; он делит угол $\\angle AOB$ ровно пополам.'
+ ];
+
+ function draw(step){
+ let g = '';
+ g += '';
+ /* лучи угла */
+ g += '';
+ g += '';
+ g += '';
+ g += 'O';
+ g += 'A';
+ g += 'B';
+
+ if(step >= 2){
+ g += '';
+ g += '';
+ g += '';
+ g += 'X';
+ g += 'Y';
+ }
+ if(step >= 3){
+ g += '';
+ g += '';
+ g += '';
+ g += 'Z';
+ }
+ if(step >= 4){
+ const Bend2 = {x:O.x + Ld*Math.cos(angBis), y:O.y + Ld*Math.sin(angBis)};
+ g += '';
+ /* стрелка */
+ const tipx = Bend2.x, tipy = Bend2.y;
+ const back = 14;
+ const bx = O.x + (Ld-back)*Math.cos(angBis), by = O.y + (Ld-back)*Math.sin(angBis);
+ const nx = -Math.sin(angBis), ny = Math.cos(angBis);
+ g += '';
+ }
+ svg.innerHTML = g;
+ }
+ function update(){
+ const s = +sl.value;
+ sv.textContent = s;
+ desc.innerHTML = TXT[s-1];
+ try{ renderMath(desc); }catch(e){}
+ draw(s);
+ if(s > maxStep) maxStep = s;
+ if(maxStep >= 4 && !xpGiven){
+ xpGiven = true;
+ addXp(10, 'p11-iv2');
+ bumpProgress('p11', 25);
+ }
+ }
+ sl.addEventListener('input', update);
+ update();
+ })();
+
+ /* === IV3 — квикфайр === */
+ (function(){
+ const tasks = [
+ { q:'Нужно разделить отрезок $AB$ пополам.', a:'midperp' },
+ { q:'Нужно разделить угол $\\angle AOB$ пополам.', a:'bisect' },
+ { q:'Из внешней точки $P$ провести прямую, касающуюся данной окружности.', a:'tangent' },
+ { q:'Через точку $P$ провести прямую, параллельную данной прямой $l$.', a:'parallel' },
+ { q:'Найти центр окружности, описанной около треугольника $ABC$.', a:'midperp' },
+ { q:'Найти центр окружности, вписанной в треугольник $ABC$.', a:'bisect' }
+ ];
+ const LABELS = {midperp:'Серединный $\\perp$', bisect:'Биссектриса', tangent:'Касательная', parallel:'Параллельная'};
+ const HINTS = {
+ midperp:'центр описанной окружности лежит в точке пересечения серединных перпендикуляров сторон',
+ bisect:'центр вписанной окружности — в точке пересечения биссектрис углов',
+ tangent:'строится через окружность с диаметром на отрезке от центра до внешней точки',
+ parallel:'строится через копирование угла или равное расстояние'
+ };
+ const area = document.getElementById('p11-iv3-area');
+ const scoreEl = document.getElementById('p11-iv3-score');
+ const solved = new Set();
+ let xpGiven = false;
+
+ area.innerHTML = tasks.map(function(t, i){
+ return '
';
+
+ /* === Часть Б — анонс 5 боссов === */
+ html += '
'
+ + '
'
+ + '
' + ICONS.rule + '
'
+ + '
Боссы раздела 4
'
+ + '
5
'
+ + '
'
+ + '
'
+ + '
5 интегрированных задач — каждая опирается на темы § 8, § 9, § 10 или их синтез. За каждого побеждённого босса: +10 XP, +18% к прогрессу. Победишь всех — ачивка «Магистр повторения» и +50 XP бонус.
'
+ + '
Для расчётов с $\\pi$ используй $\\pi\\approx 3{,}14$. Допуск — $\\pm 0{,}05$ (для больших чисел — $\\pm 0{,}5$).
'
+ + '
'
+ + '
';
+
+ html += '';
+
+ /* Прогресс-итог + ачивка */
+ html += '
'
+ + '
Прогресс по боссам
'
+ + '
0 / 5 боссов побеждено
'
+ + '
'
+ + ''
+ + '
'
+ + '
'
+ + '
Геометрия 11 пройдена!
'
+ + '
Все 4 раздела изучены. Готовы к финалу курса! +50 XP бонус, ачивка «Магистр повторения».