From 2a6c214cd582111b2ac8682a299b4cff3862d73c Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Thu, 28 May 2026 18:19:26 +0300 Subject: [PATCH] =?UTF-8?q?feat(geom8):=20Wave=203=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B2=D1=8B=204=20=E2=80=94=20=C2=A78-=C2=A711=20(=D1=86=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D1=80=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9/=D0=B2?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=83=D0=B3?= =?UTF-8?q?=D0=BB=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit §8 Центральный/вписанный углы. Дуга: slider центрального угла α от 0 до 360° с подсветкой дуги; SVG с вписанным углом и его позицией; DnD центральный/вписанный/ни тот ни другой; калькулятор длины дуги ℓ=α/360·2πR; тренажёр; босс. §9 Свойство вписанного угла: dual slider центральный α + вписанный β=α/2 на одной дуге; 5-шаговое доказательство для случая O на стороне вписанного угла через равнобедренный △ и внешний угол; двунаправленный калькулятор; DnD верно/неверно; тренажёр; босс. §10 Вписанные углы на одну дугу: SVG с дугой AC и 3 вершинами B₁,B₂,B₃ на другой части — все углы AB_iC равны; 3-шаговое доказательство через половину центрального; калькулятор; DnD; тренажёр; босс. §11 Вписанный угол на диаметр: slider позиции C — угол ACB всегда 90°, прямоугольный треугольник вписан с гипотенузой = диаметр; 4-шаговое доказательство; калькулятор через Пифагор (диаметр+катет → другой катет); тренажёр; DnD; босс. File: 3060 → 4549 LOC. 11 of 16 §§ Главы 4. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/textbooks/geometry_8_ch4.html | 1499 +++++++++++++++++++++++- 1 file changed, 1494 insertions(+), 5 deletions(-) diff --git a/frontend/textbooks/geometry_8_ch4.html b/frontend/textbooks/geometry_8_ch4.html index 651240e..746e77c 100644 --- a/frontend/textbooks/geometry_8_ch4.html +++ b/frontend/textbooks/geometry_8_ch4.html @@ -359,7 +359,7 @@ const PARAS=[ function buildParaSelector(){const g=document.getElementById('psel-grid');g.innerHTML='';PARAS.forEach(p=>{const card=document.createElement('div');card.className='psel-card'+(p.final?' final':'');card.dataset.id=p.id;card.dataset.progCard=p.id;card.innerHTML=`
${p.num}
${p.name}
`;card.addEventListener('click',()=>goTo(p.id));g.appendChild(card);});} const BUILT=new Set(); -const BUILDERS={p1:()=>buildP1(),p2:()=>buildP2(),p3:()=>buildP3(),p4:()=>buildP4(),p5:()=>buildP5(),p6:()=>buildP6(),p7:()=>buildP7(),p8:()=>buildP8stub(),p9:()=>buildP9stub(),p10:()=>buildP10stub(),p11:()=>buildP11stub(),p12:()=>buildP12stub(),p13:()=>buildP13stub(),p14:()=>buildP14stub(),p15:()=>buildP15stub(),p16:()=>buildP16stub(),final4:()=>buildFinal4stub()}; +const BUILDERS={p1:()=>buildP1(),p2:()=>buildP2(),p3:()=>buildP3(),p4:()=>buildP4(),p5:()=>buildP5(),p6:()=>buildP6(),p7:()=>buildP7(),p8:()=>buildP8(),p9:()=>buildP9(),p10:()=>buildP10(),p11:()=>buildP11(),p12:()=>buildP12stub(),p13:()=>buildP13stub(),p14:()=>buildP14stub(),p15:()=>buildP15stub(),p16:()=>buildP16stub(),final4:()=>buildFinal4stub()}; function ensureBuilt(id){if(BUILT.has(id))return;const fn=BUILDERS[id];if(fn){fn();BUILT.add(id);}} function goTo(id){STATE.current=id;ensureBuilt(id);document.querySelectorAll('.sec').forEach(s=>s.classList.remove('active'));const el=document.getElementById('sec-'+id);if(el)el.classList.add('active');document.querySelectorAll('.psel-card').forEach(c=>c.classList.toggle('active',c.dataset.id===id));buildSidebar(id);window.scrollTo({top:0,behavior:'smooth'});if((STATE.progress[id]||0)<10)bumpProgress(id,10);if(window.renderMathInElement)setTimeout(()=>renderMath(el),0);setTimeout(()=>{try{wrapGlossary(el);}catch(e){}},60);markLastPara(id);} @@ -3045,10 +3045,1499 @@ function buildP7(){ if(window.renderMathInElement) try{renderMath(cont);}catch(e){} })(); } -function buildP8stub(){ document.getElementById('p8-body').innerHTML='

§8 — Волна 1: содержимое появится в следующем обновлении.

'+secNav('p7','p9'); } -function buildP9stub(){ document.getElementById('p9-body').innerHTML='

§9 — Волна 1: содержимое появится в следующем обновлении.

'+secNav('p8','p10'); } -function buildP10stub(){ document.getElementById('p10-body').innerHTML='

§10 — Волна 1: содержимое появится в следующем обновлении.

'+secNav('p9','p11'); } -function buildP11stub(){ document.getElementById('p11-body').innerHTML='

§11 — Волна 1: содержимое появится в следующем обновлении.

'+secNav('p10','p12'); } +function buildP8(){ + const box=document.getElementById('p8-body'); + let html=''; + + html+=makeCard('theory','Центральный угол и градусная мера дуги','8.1',` +

Определение. Центральный угол — угол с вершиной в центре окружности, стороны которого являются радиусами.

+

Градусная мера дуги равна градусной мере центрального угла, опирающегося на эту дугу.

+ +
+ + + + + + + + O + A + C + α + дуга AC = α° + +
`); + + html+=makeCard('theory','Вписанный угол','8.2',` +

Определение. Вписанный угол — угол, вершина которого лежит на окружности, а обе стороны являются хордами.

+

Вписанный угол опирается на дугу, заключённую между его сторонами (дугу, не содержащую вершину угла).

+
+ + + + + + + + + + O + A + C + B + дуга AC + ∠ABC + +
`); + + html+=makeCard('rule','Формула длины дуги','8.3',` +

Длина дуги через центральный угол $\alpha$ (в градусах) и радиус $R$:

+ $$\ell = \dfrac{\alpha}{360°} \cdot 2\pi R$$ +

Примеры: при $\alpha=90°$ дуга $= \dfrac{\pi R}{2}$; при $\alpha=180°$ дуга $= \pi R$.

+
+ + + + + + + + O + A + C + α + ℓ = α/360·2πR + R + +
`); + + /* ИНТЕРАКТИВ 1 — слайдер центрального угла */ + html+=`
+
ИНТЕРАКТИВ 1
Центральный угол и дуга
+
Двигай слайдер — наблюдай, как изменяется центральный угол и подсвеченная дуга.
+
+ +
+
+
+
`; + + /* ИНТЕРАКТИВ 2 — слайдер положения вершины вписанного угла */ + html+=`
+
ИНТЕРАКТИВ 2
Вписанный угол: вершина на окружности
+
Двигай слайдер — смотри, как меняется положение вершины $B$ вписанного угла $\angle ABC$.
+
+ +
+
+
+
`; + + /* ИНТЕРАКТИВ 3 — DnD-сортер */ + html+=`
+
ИНТЕРАКТИВ 3
Сортировщик: тип угла
+
Перетащи каждую карточку в нужную корзину: центральный, вписанный или ни тот ни другой.
+
+
+
Центральный
+
Вписанный
+
Ни тот ни другой
+
+
+ +
`; + + /* ИНТЕРАКТИВ 4 — калькулятор длины дуги */ + html+=`
+
ИНТЕРАКТИВ 4
Калькулятор: длина дуги
+
Введи радиус $R$ и центральный угол $\alpha$ — получи длину дуги по формуле $\ell = \dfrac{\alpha}{360} \cdot 2\pi R$.
+
+ + + +
+ +
`; + + /* ИНТЕРАКТИВ 5 — Тренажёр */ + html+=`
+
ИНТЕРАКТИВ 5
Тренажёр §8
+
5 задач на центральный и вписанный углы, градусную меру дуги.
+
Задача 1 / 5Очки: 0
+
+
+ + + +
+ +
`; + + /* ИНТЕРАКТИВ 6 — Босс §8 */ + html+=`
+
БОСС §8
Итоговые задачи
+
4 задачи повышенной сложности — каждая верная даёт +5 XP.
+
+
`; + + html+=`
+ +
`; + html+=secNav('p7','p9'); + box.innerHTML=html; + if(window.renderMathInElement) setTimeout(()=>renderMath(box),0); + + /* === INIT 1: слайдер центрального угла === */ + (function(){ + const sl=document.getElementById('p8-ca-sl'); + const valEl=document.getElementById('p8-ca-val'); + const svgWrap=document.getElementById('p8-ca-svg'); + const info=document.getElementById('p8-ca-info'); + const R=70, cx=130, cy=100, W=260, H=200; + function draw(){ + const alpha=+sl.value; + valEl.textContent=alpha; + const a1=-Math.PI/2; + const a2=a1+(alpha*Math.PI/180); + const x1=cx+R*Math.cos(a1), y1=cy+R*Math.sin(a1); + const x2=cx+R*Math.cos(a2), y2=cy+R*Math.sin(a2); + const large=alpha>180?1:0; + const angMid=a1+(alpha*Math.PI/360); + const labR=R+14; + const labX=cx+labR*Math.cos(angMid), labY=cy+labR*Math.sin(angMid); + const ax1=cx+18*Math.cos(a1), ay1=cy+18*Math.sin(a1); + const ax2=cx+18*Math.cos(a2), ay2=cy+18*Math.sin(a2); + svgWrap.innerHTML=` + + + + + + + + + + O + A + C + ${alpha}° + `; + info.textContent='Центральный угол AOC = '+alpha+'° → Дуга AC = '+alpha+'°'; + } + sl.addEventListener('input',draw); + draw(); + })(); + + /* === INIT 2: вписанный угол === */ + (function(){ + const sl=document.getElementById('p8-ins-sl'); + const valEl=document.getElementById('p8-ins-val'); + const svgWrap=document.getElementById('p8-ins-svg'); + const info=document.getElementById('p8-ins-info'); + const R=68, cx=130, cy=95, W=260, H=190; + const aA=(-80)*Math.PI/180; + const aC=(40)*Math.PI/180; + const arcDeg=((40-(-80))+360)%360; // arc from A to C going clockwise... let's use fixed A=−80°, C=40° + function draw(){ + const bDeg=+sl.value; + valEl.textContent=bDeg; + const aB=bDeg*Math.PI/180; + const Ax=cx+R*Math.cos(aA), Ay=cy+R*Math.sin(aA); + const Ccx=cx+R*Math.cos(aC), Ccy=cy+R*Math.sin(aC); + const Bx=cx+R*Math.cos(aB), By=cy+R*Math.sin(aB); + // arc A to C not through B (short arc, 120°) + const insAngle=(function(){ + const v1x=Ax-Bx, v1y=Ay-By; + const v2x=Ccx-Bx, v2y=Ccy-By; + const dot=v1x*v2x+v1y*v2y; + const m1=Math.sqrt(v1x*v1x+v1y*v1y), m2=Math.sqrt(v2x*v2x+v2y*v2y); + return Math.round(Math.acos(Math.max(-1,Math.min(1,dot/(m1*m2))))*180/Math.PI); + })(); + svgWrap.innerHTML=` + + + + + + + + + A + C + B + O + `; + info.textContent='Вписанный угол ∠ABC = '+insAngle+'° (вершина B на окружности, стороны — хорды BA и BC)'; + } + sl.addEventListener('input',draw); + draw(); + })(); + + /* === INIT 3: DnD-сортер === */ + (function(){ + const items=[ + {label:'Вершина угла — центр окружности, стороны — радиусы',cat:'ca'}, + {label:'Вершина на окружности, стороны — хорды',cat:'ins'}, + {label:'Вершина внутри окружности, стороны — хорды',cat:'none'}, + {label:'Угол ∠AOC, O — центр',cat:'ca'}, + {label:'Угол ∠ABC, B на окружности',cat:'ins'}, + {label:'Угол между двумя касательными из внешней точки',cat:'none'}, + ]; + const pool=document.getElementById('p8-dnd-pool'); + const boxes={ca:document.getElementById('p8-drop-ca-items'),ins:document.getElementById('p8-drop-ins-items'),none:document.getElementById('p8-drop-none-items')}; + const fb=document.getElementById('p8-dnd-fb'); + let placed={}; + function reset(){ + pool.innerHTML='';placed={}; + Object.values(boxes).forEach(b=>b.innerHTML=''); + fb.style.display='none'; + items.forEach((it,i)=>{ + const chip=document.createElement('div'); + chip.className='dnd-chip';chip.dataset.i=i;chip.textContent=it.label; + chip.addEventListener('click',()=>chip.classList.toggle('armed')); + Object.entries(boxes).forEach(([cat,box])=>{ + box.parentElement.addEventListener('click',()=>{ + if(!chip.classList.contains('armed'))return; + chip.classList.remove('armed'); + if(placed[i]!==undefined) boxes[placed[i]].removeChild(chip); + placed[i]=cat; + box.appendChild(chip); + }); + }); + pool.appendChild(chip); + }); + } + document.getElementById('p8-dnd-check').addEventListener('click',()=>{ + let ok=0; + items.forEach((it,i)=>{if(placed[i]===it.cat)ok++;}); + feedback(fb,ok===items.length,'Верно: '+ok+'/'+items.length+(ok===items.length?'. Отлично!':'. Попробуй ещё.')); + if(ok===items.length){addXp(8,'p8-dnd');bumpProgress('p8',15);} + }); + document.getElementById('p8-dnd-reset').addEventListener('click',reset); + reset(); + })(); + + /* === INIT 4: калькулятор дуги === */ + (function(){ + document.getElementById('p8-arc-btn').addEventListener('click',()=>{ + const R=parseFloat(document.getElementById('p8-cr').value); + const alpha=parseFloat(document.getElementById('p8-ca-inp').value); + const out=document.getElementById('p8-arc-out'); + out.style.display='block'; + if(isNaN(R)||isNaN(alpha)||R<=0||alpha<=0||alpha>360){out.style.background='#fee2e2';out.style.color='#7f1d1d';out.textContent='Введите корректные значения (R > 0, 0 < α ≤ 360).';return;} + const L=(alpha/360)*2*Math.PI*R; + out.style.background='var(--sec-acc-soft,#cffafe)';out.style.color='var(--sec-acc-d,#0e7490)'; + out.innerHTML='ℓ = '+alpha+'/360 · 2π · '+R+' = '+L.toFixed(4)+''+L.toFixed(2)+''; + }); + })(); + + /* === INIT 5: тренажёр === */ + (function(){ + const tasks=[ + {q:'Центральный угол $\\angle AOC = 72°$. Чему равна градусная мера дуги $AC$?',a:72,hint:'Дуга = центральный угол = 72°'}, + {q:'Дуга равна $150°$. Найди центральный угол, опирающийся на эту дугу.',a:150,hint:'Центральный угол = градусная мера дуги = 150°'}, + {q:'Радиус $R = 10$ см, центральный угол $\\alpha = 90°$. Найди длину дуги (округли до сотых).',a:15.71,hint:'ℓ = 90/360 · 2π · 10 = π·5 ≈ 15,71'}, + {q:'Дуга $AC = 240°$. Найди дугу $CA$ (меньшую дугу).',a:120,hint:'Полная окружность 360°. Меньшая дуга = 360 − 240 = 120°'}, + {q:'Радиус $R = 6$, длина дуги $\\ell = 2\\pi$. Найди центральный угол $\\alpha$ (в градусах).',a:60,hint:'2π = α/360 · 2π · 6 → α = 360 · 2π / (12π) = 60°'}, + ]; + let cur=0, score=0; + const iEl=document.getElementById('p8-tr-i'), scEl=document.getElementById('p8-tr-score'); + const taskEl=document.getElementById('p8-tr-task'), ansEl=document.getElementById('p8-tr-ans'); + const goBtn=document.getElementById('p8-tr-go'), startBtn=document.getElementById('p8-tr-start'); + const fb=document.getElementById('p8-tr-fb'); + function showTask(){ + if(cur>=tasks.length){taskEl.innerHTML='Тренажёр завершён! Очки: '+score+'/'+tasks.length+'';ansEl.style.display='none';goBtn.style.display='none';addXp(score*4,'p8-trainer');bumpProgress('p8',20);return;} + taskEl.innerHTML=tasks[cur].q;iEl.textContent=cur+1;ansEl.value='';fb.style.display='none'; + if(window.renderMathInElement) try{renderMath(taskEl);}catch(e){} + } + goBtn.addEventListener('click',()=>{ + const ans=parseFloat(ansEl.value.replace(',','.')); + const ok=Math.abs(ans-tasks[cur].a)<0.05; + feedback(fb,ok,ok?'Верно!':'Неверно. Подсказка: '+tasks[cur].hint); + if(ok){score++;scEl.textContent=score;cur++;setTimeout(showTask,900);} + }); + startBtn.addEventListener('click',()=>{cur=0;score=0;scEl.textContent=0;ansEl.style.display='';goBtn.style.display='';showTask();}); + showTask(); + })(); + + /* === INIT 6: Босс §8 === */ + (function(){ + const tasks=[ + {q:'Центральный угол $\\angle AOC = 140°$. Найди меньшую дугу $AC$.', + opts:['140°','70°','220°'],cor:0, + exp:'Дуга = центральный угол. Меньшая дуга $AC = 140°$.'}, + {q:'Полуокружность имеет градусную меру:', + opts:['90°','180°','360°'],cor:1, + exp:'Полуокружность — половина окружности: $360°/2 = 180°$.'}, + {q:'Радиус $R = 5$, угол $\\alpha = 120°$. Длина дуги:', + opts:['$\\dfrac{10\\pi}{3}$','$\\dfrac{5\\pi}{3}$','$5\\pi$'],cor:0, + exp:'$\\ell = \\dfrac{120}{360}\\cdot 2\\pi\\cdot 5 = \\dfrac{1}{3}\\cdot 10\\pi = \\dfrac{10\\pi}{3}$.'}, + {q:'Дуга $AB = 80°$, дуга $BC = 130°$. Найди дугу $CA$ (большую).', + opts:['150°','50°','210°'],cor:0, + exp:'$360° - 80° - 130° = 150°$.'}, + ]; + const cont=document.getElementById('p8-boss-tasks'); + let bhtml=''; + tasks.forEach((t,i)=>{ + bhtml+=`
+
${i+1}. ${t.q}
+
+ ${t.opts.map((o,j)=>``).join('')} +
+ +
`; + }); + cont.innerHTML=bhtml; + if(window.renderMathInElement) try{renderMath(cont);}catch(e){} + })(); +} +function buildP9(){ + const box=document.getElementById('p9-body'); + let html=''; + + html+=makeCard('rule','Теорема о вписанном угле','9.1',` +

Теорема. Вписанный угол равен половине центрального угла, опирающегося на ту же дугу.

+ $$\angle ABC = \dfrac{1}{2}\,\angle AOC = \dfrac{1}{2}\,\smile AC$$ +

Здесь $O$ — центр, $A$, $C$ — точки на окружности, $B$ — другая точка на окружности.

+
+ + + + + + + + + + + + O + A + C + B + ∠AOC + ∠ABC = ½∠AOC + +
`); + + html+=makeCard('theory','Доказательство (три случая)','9.2',` +

Доказательство рассматривает три случая расположения центра $O$ относительно вписанного угла $\angle ABC$:

+
    +
  1. Центр лежит на стороне угла ($O$ — на $AB$): треугольник $OBC$ — равнобедренный, внешний угол при $B$ даёт $\angle AOC = 2\angle ABC$.
  2. +
  3. Центр внутри угла: проводим диаметр через $B$, применяем случай 1 дважды и складываем.
  4. +
  5. Центр вне угла: аналогично — вычитаем.
  6. +
+
+ + + + + + + + + + + + O + B + A + C + диаметр + +
`); + + html+=makeCard('example','Применение теоремы','9.3',` +

Задача. Центральный угол $\angle AOC = 110°$. Найди вписанный угол $\angle ABC$, опирающийся на ту же дугу.

+

Решение. По теореме: $\angle ABC = \dfrac{1}{2} \cdot 110° = 55°$.

+

Задача 2. Вписанный угол $\angle ABC = 38°$. Найди центральный угол.

+

Решение. $\angle AOC = 2 \cdot 38° = 76°$.

`); + + /* ИНТЕРАКТИВ 1 — слайдер с обоими углами */ + html+=`
+
ИНТЕРАКТИВ 1
Центральный и вписанный угол на одной дуге
+
Двигай слайдер — наблюдай: вписанный угол всегда равен половине центрального.
+
+ +
+
+
+
`; + + /* ИНТЕРАКТИВ 2 — пошаговое доказательство */ + html+=`
+
ИНТЕРАКТИВ 2
Доказательство (случай: O на стороне угла)
+
Нажимай «Далее» — каждый шаг раскрывает ключевую идею доказательства.
+
+
+
+ + +
+
`; + + /* ИНТЕРАКТИВ 3 — калькулятор */ + html+=`
+
ИНТЕРАКТИВ 3
Калькулятор: центральный ↔ вписанный
+
Введи один из углов — получи второй.
+
+ + + + +
+ +
`; + + /* ИНТЕРАКТИВ 4 — DnD верно/неверно */ + html+=`
+
ИНТЕРАКТИВ 4
Верно или неверно?
+
Рассортируй утверждения о вписанном угле.
+
+
+
Верно
+
Неверно
+
+
+ +
`; + + /* ИНТЕРАКТИВ 5 — Тренажёр */ + html+=`
+
ИНТЕРАКТИВ 5
Тренажёр §9
+
5 задач на свойство вписанного угла.
+
Задача 1 / 5Очки: 0
+
+
+ + + +
+ +
`; + + /* ИНТЕРАКТИВ 6 — Босс §9 */ + html+=`
+
БОСС §9
Итоговые задачи
+
4 задачи повышенной сложности — каждая верная даёт +5 XP.
+
+
`; + + html+=`
+ +
`; + html+=secNav('p8','p10'); + box.innerHTML=html; + if(window.renderMathInElement) setTimeout(()=>renderMath(box),0); + + /* === INIT 1: слайдер обоих углов === */ + (function(){ + const sl=document.getElementById('p9-alpha-sl'); + const valEl=document.getElementById('p9-alpha-val'); + const svgWrap=document.getElementById('p9-dual-svg'); + const info=document.getElementById('p9-dual-info'); + const R=68, cx=130, cy=95, W=260, H=190; + function draw(){ + const alpha=+sl.value; + valEl.textContent=alpha; + const beta=alpha/2; + const a1=(-100)*Math.PI/180; + const a2=a1+(alpha*Math.PI/180); + const Ax=cx+R*Math.cos(a1), Ay=cy+R*Math.sin(a1); + const Ccx=cx+R*Math.cos(a2), Ccy=cy+R*Math.sin(a2); + const aBmid=a2+((2*Math.PI-(alpha*Math.PI/180))/2); + const Bx=cx+R*Math.cos(aBmid), By=cy+R*Math.sin(aBmid); + const large=alpha>180?1:0; + svgWrap.innerHTML=` + + + + + + + + + + + O + A + C + B + ∠AOC=${alpha}° + ∠ABC=${Math.round(beta)}° + `; + info.textContent='Центральный ∠AOC = '+alpha+'° → Вписанный ∠ABC = '+Math.round(beta)+'° (= '+alpha+'°/2)'; + } + sl.addEventListener('input',draw); + draw(); + })(); + + /* === INIT 2: пошаговое доказательство === */ + (function(){ + const R=58, cx=115, cy=80, W=260, H=165; + const aBval=(-90)*Math.PI/180; + const Bx=cx+R*Math.cos(aBval), By=cy+R*Math.sin(aBval); + const Ax=cx-R, Ay=cy; + const Ccx=cx+R*Math.cos(30*Math.PI/180), Ccy=cy+R*Math.sin(30*Math.PI/180); + const steps=[ + {text:'Дано: окружность с центром $O$. Вершина вписанного угла $B$ лежит так, что $O$ лежит на $AB$. Угол $\\angle ABC$ — вписанный, $\\angle AOC$ — центральный. Нужно доказать: $\\angle ABC = \\dfrac{1}{2}\\angle AOC$.'}, + {text:'Шаг 1. Соединим $O$ с $B$. Так как $OB = OC = R$ (радиусы), треугольник $OBC$ — равнобедренный. Поэтому $\\angle OBC = \\angle OCB$.'}, + {text:'Шаг 2. Угол $\\angle AOC$ — внешний угол треугольника $OBC$ при вершине $O$. По теореме о внешнем угле: $\\angle AOC = \\angle OBC + \\angle OCB = 2\\angle OBC$.'}, + {text:'Шаг 3. Следовательно, $\\angle OBC = \\dfrac{1}{2}\\angle AOC$. Но $\\angle OBC = \\angle ABC$ (т.к. $O$ лежит на луче $AB$). Значит, $\\angle ABC = \\dfrac{1}{2}\\angle AOC$. ч.т.д.'}, + ]; + let step=0; + const svgEl=document.getElementById('p9-proof-svg'), txtEl=document.getElementById('p9-proof-text'); + function draw(){ + let ex=''; + if(step>=1){ + ex+=``; + ex+=`OB=R`; + ex+=``; + ex+=`OC=R`; + } + if(step>=2){ + ex+=`∠AOC = внеш. угол △OBC`; + } + svgEl.innerHTML=` + + + + + + + + O + B + A + C + ${ex} + `; + txtEl.innerHTML=steps[step].text; + if(window.renderMathInElement) try{renderMath(txtEl);}catch(e){} + document.getElementById('p9-proof-next').textContent=step>=steps.length-1?'Готово':'Далее'; + } + document.getElementById('p9-proof-next').addEventListener('click',()=>{if(step{step=0;draw();}); + draw(); + })(); + + /* === INIT 3: калькулятор === */ + (function(){ + document.getElementById('p9-c2i-btn').addEventListener('click',()=>{ + const v=parseFloat(document.getElementById('p9-cinp').value); + const out=document.getElementById('p9-calc-out'); + out.style.display='block'; + if(isNaN(v)||v<=0||v>360){out.style.background='#fee2e2';out.style.color='#7f1d1d';out.textContent='Введите угол от 1 до 360.';return;} + out.style.background='var(--sec-acc-soft,#a5f3fc)';out.style.color='var(--sec-acc-d,#0891b2)'; + out.textContent='Центральный '+v+'° → Вписанный = '+v+'/2 = '+(v/2)+'°'; + }); + document.getElementById('p9-i2c-btn').addEventListener('click',()=>{ + const v=parseFloat(document.getElementById('p9-iinp').value); + const out=document.getElementById('p9-calc-out'); + out.style.display='block'; + if(isNaN(v)||v<=0||v>180){out.style.background='#fee2e2';out.style.color='#7f1d1d';out.textContent='Введите вписанный угол от 1 до 180.';return;} + out.style.background='var(--sec-acc-soft,#a5f3fc)';out.style.color='var(--sec-acc-d,#0891b2)'; + out.textContent='Вписанный '+v+'° → Центральный = 2·'+v+' = '+(2*v)+'°'; + }); + })(); + + /* === INIT 4: DnD верно/неверно === */ + (function(){ + const items=[ + {label:'Вписанный угол = ½ центрального на той же дуге',cat:'true'}, + {label:'Вписанный угол = центральному углу',cat:'false'}, + {label:'Центральный угол = 2 · вписанного на той же дуге',cat:'true'}, + {label:'Вписанный угол всегда тупой',cat:'false'}, + {label:'Дуга 100° → вписанный угол 50°',cat:'true'}, + {label:'Вписанный угол может быть больше 180°',cat:'false'}, + ]; + const pool=document.getElementById('p9-dnd-pool'); + const boxes={true:document.getElementById('p9-drop-true-items'),false:document.getElementById('p9-drop-false-items')}; + const fb=document.getElementById('p9-dnd-fb'); + let placed={}; + function reset(){ + pool.innerHTML='';placed={}; + Object.values(boxes).forEach(b=>b.innerHTML=''); + fb.style.display='none'; + items.forEach((it,i)=>{ + const chip=document.createElement('div'); + chip.className='dnd-chip';chip.dataset.i=i;chip.textContent=it.label; + chip.addEventListener('click',()=>chip.classList.toggle('armed')); + Object.entries(boxes).forEach(([cat,box])=>{ + box.parentElement.addEventListener('click',()=>{ + if(!chip.classList.contains('armed'))return; + chip.classList.remove('armed'); + if(placed[i]!==undefined) boxes[placed[i]].removeChild(chip); + placed[i]=cat; + box.appendChild(chip); + }); + }); + pool.appendChild(chip); + }); + } + document.getElementById('p9-dnd-check').addEventListener('click',()=>{ + let ok=0; + items.forEach((it,i)=>{if(placed[i]===it.cat)ok++;}); + feedback(fb,ok===items.length,'Верно: '+ok+'/'+items.length+(ok===items.length?'. Отлично!':'. Попробуй ещё.')); + if(ok===items.length){addXp(8,'p9-dnd');bumpProgress('p9',15);} + }); + document.getElementById('p9-dnd-reset').addEventListener('click',reset); + reset(); + })(); + + /* === INIT 5: тренажёр === */ + (function(){ + const tasks=[ + {q:'Центральный угол $\\angle AOC = 80°$. Найди вписанный угол $\\angle ABC$.',a:40,hint:'∠ABC = 80°/2 = 40°'}, + {q:'Вписанный угол $\\angle ABC = 65°$. Найди центральный угол.',a:130,hint:'∠AOC = 2·65° = 130°'}, + {q:'Дуга $AC = 200°$. Найди вписанный угол, опирающийся на эту дугу.',a:100,hint:'∠ABC = 200°/2 = 100°'}, + {q:'Вписанный угол $= 45°$. Найди дугу, на которую он опирается.',a:90,hint:'Дуга = 2·45° = 90°'}, + {q:'Центральный угол $= 176°$. Найди вписанный угол (в градусах).',a:88,hint:'∠вп = 176°/2 = 88°'}, + ]; + let cur=0, score=0; + const iEl=document.getElementById('p9-tr-i'), scEl=document.getElementById('p9-tr-score'); + const taskEl=document.getElementById('p9-tr-task'), ansEl=document.getElementById('p9-tr-ans'); + const goBtn=document.getElementById('p9-tr-go'), startBtn=document.getElementById('p9-tr-start'); + const fb=document.getElementById('p9-tr-fb'); + function showTask(){ + if(cur>=tasks.length){taskEl.innerHTML='Тренажёр завершён! Очки: '+score+'/'+tasks.length+'';ansEl.style.display='none';goBtn.style.display='none';addXp(score*4,'p9-trainer');bumpProgress('p9',20);return;} + taskEl.innerHTML=tasks[cur].q;iEl.textContent=cur+1;ansEl.value='';fb.style.display='none'; + if(window.renderMathInElement) try{renderMath(taskEl);}catch(e){} + } + goBtn.addEventListener('click',()=>{ + const ans=parseFloat(ansEl.value.replace(',','.')); + const ok=Math.abs(ans-tasks[cur].a)<0.5; + feedback(fb,ok,ok?'Верно!':'Неверно. Подсказка: '+tasks[cur].hint); + if(ok){score++;scEl.textContent=score;cur++;setTimeout(showTask,900);} + }); + startBtn.addEventListener('click',()=>{cur=0;score=0;scEl.textContent=0;ansEl.style.display='';goBtn.style.display='';showTask();}); + showTask(); + })(); + + /* === INIT 6: Босс §9 === */ + (function(){ + const tasks=[ + {q:'Вписанный угол $\\angle ABC = 55°$. Центральный угол на той же дуге:', + opts:['110°','55°','27,5°'],cor:0, + exp:'$\\angle AOC = 2 \\cdot 55° = 110°$.'}, + {q:'Центральный угол равен 180° (диаметр). Вписанный угол равен:', + opts:['180°','90°','45°'],cor:1, + exp:'$\\angle вп = 180°/2 = 90°$. Это теорема Фалеса (§11).'}, + {q:'Дуга $AC = 130°$, вершина $B$ на другой дуге. Угол $\\angle ABC$:', + opts:['65°','130°','260°'],cor:0, + exp:'$\\angle ABC = \\dfrac{1}{2} \\cdot 130° = 65°$.'}, + {q:'Вписанный угол $\\angle ABC = 90°$. Найди дугу $AC$.', + opts:['180°','90°','270°'],cor:0, + exp:'Дуга $= 2 \\cdot 90° = 180°$ — полуокружность, то есть $AC$ — диаметр.'}, + ]; + const cont=document.getElementById('p9-boss-tasks'); + let bhtml=''; + tasks.forEach((t,i)=>{ + bhtml+=`
+
${i+1}. ${t.q}
+
+ ${t.opts.map((o,j)=>``).join('')} +
+ +
`; + }); + cont.innerHTML=bhtml; + if(window.renderMathInElement) try{renderMath(cont);}catch(e){} + })(); +} +function buildP10(){ + const box=document.getElementById('p10-body'); + let html=''; + + html+=makeCard('rule','Следствие: вписанные углы на одной дуге','10.1',` +

Следствие из теоремы §9. Все вписанные углы, опирающиеся на одну и ту же дугу, равны между собой.

+ $$\angle AB_1C = \angle AB_2C = \angle AB_3C = \dfrac{1}{2}\,\smile AC$$ +

Почему? Каждый вписанный угол равен половине центрального, опирающегося на дугу $AC$. Центральный угол для данной дуги один и тот же — поэтому все вписанные углы равны.

+
+ + + + + + + + + + + + + + + + A + C + B₁ + B₂ + B₃ + O + +
`); + + html+=makeCard('theory','Доказательство следствия','10.2',` +

Пусть $B_1$ и $B_2$ — две точки на окружности, лежащие на одной стороне от хорды $AC$. Тогда:

+
    +
  • По теореме §9: $\angle AB_1C = \dfrac{1}{2}\angle AOC$
  • +
  • По теореме §9: $\angle AB_2C = \dfrac{1}{2}\angle AOC$
  • +
  • Следовательно: $\angle AB_1C = \angle AB_2C$. ч.т.д.
  • +
`); + + html+=makeCard('example','Пример','10.3',` +

Задача. Дуга $AC = 80°$. Три точки $B_1, B_2, B_3$ лежат на большей дуге. Найди все три вписанных угла.

+

Решение. Каждый вписанный угол = $80°/2 = 40°$. Все три угла равны $40°$.

+
+ + + + + + + + + + + + + + + + A + C + B₁=40° + B₂=40° + B₃=40° + O + +
`); + + /* ИНТЕРАКТИВ 1 — несколько вершин на одной дуге */ + html+=`
+
ИНТЕРАКТИВ 1
Несколько вписанных углов на одной дуге
+
Двигай слайдер — дуга $AC$ меняется. Углы $B_1, B_2, B_3$ остаются равными между собой.
+
+ +
+
+
+
`; + + /* ИНТЕРАКТИВ 2 — пошаговое доказательство */ + html+=`
+
ИНТЕРАКТИВ 2
Доказательство следствия — по шагам
+
Нажимай «Далее» для пошагового объяснения.
+
+
+
+ + +
+
`; + + /* ИНТЕРАКТИВ 3 — калькулятор проверки равенства */ + html+=`
+
ИНТЕРАКТИВ 3
Калькулятор: вписанные углы по дуге
+
Введи градусную меру дуги $AC$ — получи величину всех вписанных углов на ней.
+
+ + +
+ +
`; + + /* ИНТЕРАКТИВ 4 — DnD: равные углы */ + html+=`
+
ИНТЕРАКТИВ 4
DnD: равные вписанные углы
+
Перетащи утверждения: «Равны» или «Не обязательно равны».
+
+
+
Равны
+
Не обязательно равны
+
+
+ +
`; + + /* ИНТЕРАКТИВ 5 — Тренажёр */ + html+=`
+
ИНТЕРАКТИВ 5
Тренажёр §10
+
5 задач на равенство вписанных углов одной дуги.
+
Задача 1 / 5Очки: 0
+
+
+ + + +
+ +
`; + + /* ИНТЕРАКТИВ 6 — Босс §10 */ + html+=`
+
БОСС §10
Итоговые задачи
+
4 задачи повышенной сложности — каждая верная даёт +5 XP.
+
+
`; + + html+=`
+ +
`; + html+=secNav('p9','p11'); + box.innerHTML=html; + if(window.renderMathInElement) setTimeout(()=>renderMath(box),0); + + /* === INIT 1: многие вершины === */ + (function(){ + const sl=document.getElementById('p10-arc-sl'); + const valEl=document.getElementById('p10-arc-val'); + const svgWrap=document.getElementById('p10-multi-svg'); + const info=document.getElementById('p10-multi-info'); + const R=68, cx=130, cy=88, W=260, H=178; + function draw(){ + const arcDeg=+sl.value; + valEl.textContent=arcDeg; + const ins=arcDeg/2; + const aA=(-60-arcDeg/2)*Math.PI/180; + const aC=(-60+arcDeg/2)*Math.PI/180; + const Ax=cx+R*Math.cos(aA), Ay=cy+R*Math.sin(aA); + const Ccx=cx+R*Math.cos(aC), Ccy=cy+R*Math.sin(aC); + // three B points on opposite arc + const bAngles=[130,180,230]; + const bColors=['#dc2626','#10b981','#7c3aed']; + let bLines='', bDots='', bLabels=''; + bAngles.forEach((bd,k)=>{ + const bRad=bd*Math.PI/180; + const Bx=cx+R*Math.cos(bRad), By=cy+R*Math.sin(bRad); + bLines+=``; + bLines+=``; + bDots+=``; + const lx=Bx+(Bx>cx?8:-16), ly=By+(By>cy?16:-4); + bLabels+=`B${k+1}`; + bLabels+=`${Math.round(ins)}°`; + }); + svgWrap.innerHTML=` + + + ${bLines} + + + + ${bDots} + A + C + O + ${bLabels} + `; + info.textContent='Дуга AC = '+arcDeg+'° → Все вписанные углы = '+Math.round(ins)+'° (равны!)'; + } + sl.addEventListener('input',draw); + draw(); + })(); + + /* === INIT 2: доказательство по шагам === */ + (function(){ + const R=55, cx=110, cy=78, W=220, H=160; + const aA=(-80)*Math.PI/180, aC=(20)*Math.PI/180; + const Ax=cx+R*Math.cos(aA), Ay=cy+R*Math.sin(aA); + const Ccx=cx+R*Math.cos(aC), Ccy=cy+R*Math.sin(aC); + const aB1=150*Math.PI/180, aB2=200*Math.PI/180; + const B1x=cx+R*Math.cos(aB1), B1y=cy+R*Math.sin(aB1); + const B2x=cx+R*Math.cos(aB2), B2y=cy+R*Math.sin(aB2); + const steps=[ + {text:'Дано: Дуга $AC$ фиксирована. Точки $B_1$ и $B_2$ лежат на дуге, не содержащей $AC$. Нужно доказать: $\\angle AB_1C = \\angle AB_2C$.'}, + {text:'Шаг 1. По теореме §9: $\\angle AB_1C = \\dfrac{1}{2}\\angle AOC$ (центральный угол на дуге $AC$).'}, + {text:'Шаг 2. Аналогично: $\\angle AB_2C = \\dfrac{1}{2}\\angle AOC$.'}, + {text:'Шаг 3. Правые части равны, значит $\\angle AB_1C = \\angle AB_2C$. ч.т.д.'}, + ]; + let step=0; + const svgEl=document.getElementById('p10-proof-svg'), txtEl=document.getElementById('p10-proof-text'); + function draw(){ + let ex=''; + if(step>=1){ + ex+=``; + ex+=``; + ex+=`∠B₁=${Math.round(50)}°`; + } + if(step>=2){ + ex+=``; + ex+=``; + ex+=`∠B₂=${Math.round(50)}°`; + } + if(step>=1){ + ex+=``; + ex+=``; + ex+=`∠AOC`; + } + svgEl.innerHTML=` + + + + + + + + O + A + C + B₁ + B₂ + ${ex} + `; + txtEl.innerHTML=steps[step].text; + if(window.renderMathInElement) try{renderMath(txtEl);}catch(e){} + document.getElementById('p10-proof-next').textContent=step>=steps.length-1?'Готово':'Далее'; + } + document.getElementById('p10-proof-next').addEventListener('click',()=>{if(step{step=0;draw();}); + draw(); + })(); + + /* === INIT 3: калькулятор === */ + (function(){ + document.getElementById('p10-calc-btn').addEventListener('click',()=>{ + const arc=parseFloat(document.getElementById('p10-darc').value); + const out=document.getElementById('p10-calc-out'); + out.style.display='block'; + if(isNaN(arc)||arc<=0||arc>=360){out.style.background='#fee2e2';out.style.color='#7f1d1d';out.textContent='Введите дугу от 1 до 358°.';return;} + out.style.background='var(--sec-acc-soft,#e0f2fe)';out.style.color='var(--sec-acc-d,#0369a1)'; + const ins=arc/2; + out.textContent='Дуга AC = '+arc+'° → Все вписанные углы на этой дуге = '+ins+'°'; + }); + })(); + + /* === INIT 4: DnD === */ + (function(){ + const items=[ + {label:'∠AB₁C и ∠AB₂C, оба B на большей дуге AC',cat:'eq'}, + {label:'∠AB₁C и ∠AB₂C, B₁ и B₂ по разные стороны AC',cat:'ne'}, + {label:'Все вписанные углы на одной полуокружности',cat:'eq'}, + {label:'Вписанные углы на разных дугах одной хорды',cat:'ne'}, + {label:'∠AB₁C = ∠AB₃C, все три на одной дуге AC',cat:'eq'}, + ]; + const pool=document.getElementById('p10-dnd-pool'); + const boxes={eq:document.getElementById('p10-drop-eq-items'),ne:document.getElementById('p10-drop-ne-items')}; + const fb=document.getElementById('p10-dnd-fb'); + let placed={}; + function reset(){ + pool.innerHTML='';placed={}; + Object.values(boxes).forEach(b=>b.innerHTML=''); + fb.style.display='none'; + items.forEach((it,i)=>{ + const chip=document.createElement('div'); + chip.className='dnd-chip';chip.dataset.i=i;chip.textContent=it.label; + chip.addEventListener('click',()=>chip.classList.toggle('armed')); + Object.entries(boxes).forEach(([cat,box])=>{ + box.parentElement.addEventListener('click',()=>{ + if(!chip.classList.contains('armed'))return; + chip.classList.remove('armed'); + if(placed[i]!==undefined) boxes[placed[i]].removeChild(chip); + placed[i]=cat; + box.appendChild(chip); + }); + }); + pool.appendChild(chip); + }); + } + document.getElementById('p10-dnd-check').addEventListener('click',()=>{ + let ok=0; + items.forEach((it,i)=>{if(placed[i]===it.cat)ok++;}); + feedback(fb,ok===items.length,'Верно: '+ok+'/'+items.length+(ok===items.length?'. Отлично!':'. Попробуй ещё.')); + if(ok===items.length){addXp(8,'p10-dnd');bumpProgress('p10',15);} + }); + document.getElementById('p10-dnd-reset').addEventListener('click',reset); + reset(); + })(); + + /* === INIT 5: тренажёр === */ + (function(){ + const tasks=[ + {q:'Дуга $AC = 110°$. Три точки $B_1, B_2, B_3$ на другой дуге. Чему равен $\\angle AB_1C$?',a:55,hint:'∠AB₁C = 110°/2 = 55°'}, + {q:'Вписанный угол $\\angle AB_1C = 35°$. Чему равен $\\angle AB_2C$, если $B_2$ на той же дуге?',a:35,hint:'Все вписанные углы на одной дуге равны, значит ∠AB₂C = 35°'}, + {q:'Дуга $AC = 160°$. Найди все вписанные углы на другой дуге.',a:80,hint:'80° = 160°/2'}, + {q:'Вписанный угол $= 70°$. Найди дугу, на которую он опирается.',a:140,hint:'Дуга = 2·70° = 140°'}, + {q:'Дуга $AC = 90°$, $B_1$ и $B_2$ на большей дуге. Сумма $\\angle AB_1C + \\angle AB_2C = ?°$',a:90,hint:'Каждый = 45°, сумма = 90°'}, + ]; + let cur=0, score=0; + const iEl=document.getElementById('p10-tr-i'), scEl=document.getElementById('p10-tr-score'); + const taskEl=document.getElementById('p10-tr-task'), ansEl=document.getElementById('p10-tr-ans'); + const goBtn=document.getElementById('p10-tr-go'), startBtn=document.getElementById('p10-tr-start'); + const fb=document.getElementById('p10-tr-fb'); + function showTask(){ + if(cur>=tasks.length){taskEl.innerHTML='Тренажёр завершён! Очки: '+score+'/'+tasks.length+'';ansEl.style.display='none';goBtn.style.display='none';addXp(score*4,'p10-trainer');bumpProgress('p10',20);return;} + taskEl.innerHTML=tasks[cur].q;iEl.textContent=cur+1;ansEl.value='';fb.style.display='none'; + if(window.renderMathInElement) try{renderMath(taskEl);}catch(e){} + } + goBtn.addEventListener('click',()=>{ + const ans=parseFloat(ansEl.value.replace(',','.')); + const ok=Math.abs(ans-tasks[cur].a)<0.5; + feedback(fb,ok,ok?'Верно!':'Неверно. Подсказка: '+tasks[cur].hint); + if(ok){score++;scEl.textContent=score;cur++;setTimeout(showTask,900);} + }); + startBtn.addEventListener('click',()=>{cur=0;score=0;scEl.textContent=0;ansEl.style.display='';goBtn.style.display='';showTask();}); + showTask(); + })(); + + /* === INIT 6: Босс §10 === */ + (function(){ + const tasks=[ + {q:'Вписанные углы $\\angle AB_1C$ и $\\angle AB_2C$ опираются на одну дугу $AC = 120°$. Их сумма:', + opts:['120°','60°','240°'],cor:0, + exp:'Каждый = $60°$, сумма = $120°$.'}, + {q:'Дуга $AC = 180°$ (диаметр). Все вписанные углы на другой полуокружности равны:', + opts:['90°','60°','45°'],cor:0, + exp:'$180°/2 = 90°$. Это следствие §11.'}, + {q:'Точки $B_1$ и $B_2$ по разные стороны хорды $AC$. Их вписанные углы:', + opts:['Равны','В сумме дают 180°','Не связаны'],cor:1, + exp:'Вписанные углы $\\angle AB_1C$ (на меньшей дуге) и $\\angle AB_2C$ (на большей дуге) дополняют друг друга до $180°$.'}, + {q:'Дуга $AC = 70°$. Сколько вписанных углов можно провести через $A$ и $C$ со значением $35°$?', + opts:['Один','Два','Бесконечно много'],cor:2, + exp:'Любая точка большей дуги даёт угол $35°$ — таких точек бесконечно много.'}, + ]; + const cont=document.getElementById('p10-boss-tasks'); + let bhtml=''; + tasks.forEach((t,i)=>{ + bhtml+=`
+
${i+1}. ${t.q}
+
+ ${t.opts.map((o,j)=>``).join('')} +
+ +
`; + }); + cont.innerHTML=bhtml; + if(window.renderMathInElement) try{renderMath(cont);}catch(e){} + })(); +} +function buildP11(){ + const box=document.getElementById('p11-body'); + let html=''; + + html+=makeCard('rule','Вписанный угол на диаметре','11.1',` +

Следствие (Теорема Фалеса). Вписанный угол, опирающийся на диаметр, равен $90°$.

+ $$AB \text{ — диаметр} \implies \angle ACB = 90°$$ +

Почему? Диаметр стягивает полуокружность $= 180°$. По теореме §9: вписанный угол $= 180°/2 = 90°$.

+
+ + + + + + + + + + + A + B + C + O + ∠ACB = 90° + +
`); + + html+=makeCard('theory','Доказательство','11.2',` +

Пусть $AB$ — диаметр, $C$ — точка на окружности ($C \neq A, B$).

+
    +
  1. Полуокружность $AC$ (меньшая): $\smile AB = 180°$ (диаметр).
  2. +
  3. По теореме §9: $\angle ACB = \dfrac{1}{2} \cdot 180° = 90°$.
  4. +
+

ч.т.д.

+

Следствие: в прямоугольном треугольнике $ACB$ с прямым углом при $C$ гипотенуза $AB$ является диаметром описанной окружности.

`); + + html+=makeCard('example','Применение','11.3',` +

Задача. Диаметр $AB = 10$, $AC = 6$. Найди $BC$.

+

Решение. $\angle ACB = 90°$ (вписанный угол на диаметре). По теореме Пифагора:

+ $$BC = \sqrt{AB^2 - AC^2} = \sqrt{100 - 36} = \sqrt{64} = 8$$ +
+ + + + + + + + + + + A + B + C + AC=6 + BC=8 + AB=10 + +
`); + + /* ИНТЕРАКТИВ 1 — слайдер положения C */ + html+=`
+
ИНТЕРАКТИВ 1
Вписанный угол на диаметре всегда 90°
+
Двигай слайдер — перемещай точку $C$ по окружности. Угол $\angle ACB$ всегда остаётся прямым!
+
+ +
+
+
+
`; + + /* ИНТЕРАКТИВ 2 — пошаговое доказательство */ + html+=`
+
ИНТЕРАКТИВ 2
Доказательство — по шагам
+
Нажимай «Далее» для пошагового объяснения.
+
+
+
+ + +
+
`; + + /* ИНТЕРАКТИВ 3 — калькулятор Пифагора */ + html+=`
+
ИНТЕРАКТИВ 3
Калькулятор: прямоугольный треугольник на окружности
+
Диаметр = гипотенуза. Введи диаметр $AB$ и один катет — найди второй.
+
+ + + +
+ +
`; + + /* ИНТЕРАКТИВ 4 — Тренажёр */ + html+=`
+
ИНТЕРАКТИВ 4
Тренажёр §11
+
5 задач на вписанный угол на диаметре и теорему Пифагора.
+
Задача 1 / 5Очки: 0
+
+
+ + + +
+ +
`; + + /* ИНТЕРАКТИВ 5 — DnD верно/неверно */ + html+=`
+
ИНТЕРАКТИВ 5
Верно или неверно?
+
Рассортируй утверждения о вписанном угле на диаметре.
+
+
+
Верно
+
Неверно
+
+
+ +
`; + + /* ИНТЕРАКТИВ 6 — Босс §11 */ + html+=`
+
БОСС §11
Итоговые задачи
+
4 задачи повышенной сложности — каждая верная даёт +5 XP.
+
+
`; + + html+=`
+ +
`; + html+=secNav('p10','p12'); + box.innerHTML=html; + if(window.renderMathInElement) setTimeout(()=>renderMath(box),0); + + /* === INIT 1: слайдер положения C === */ + (function(){ + const sl=document.getElementById('p11-c-sl'); + const valEl=document.getElementById('p11-c-val'); + const svgWrap=document.getElementById('p11-diam-svg'); + const info=document.getElementById('p11-diam-info'); + const R=68, cx=130, cy=95, W=260, H=192; + const Ax=cx-R, Ay=cy; + const Bx=cx+R, By=cy; + function draw(){ + const cDeg=+sl.value; + valEl.textContent=cDeg; + const cRad=cDeg*Math.PI/180; + const Ccx=cx+R*Math.cos(cRad-Math.PI/2), Ccy=cy+R*Math.sin(cRad-Math.PI/2); + // right angle marker at C + const u={x:(Ax-Ccx), y:(Ay-Ccy)}; + const un=Math.sqrt(u.x*u.x+u.y*u.y); + const ux=u.x/un, uy=u.y/un; + const w={x:(Bx-Ccx), y:(By-Ccy)}; + const wn=Math.sqrt(w.x*w.x+w.y*w.y); + const wx=w.x/wn, wy=w.y/wn; + const s=9; + const m1x=Ccx+s*ux, m1y=Ccy+s*uy; + const m2x=m1x+s*wx, m2y=m1y+s*wy; + const m3x=Ccx+s*wx, m3y=Ccy+s*wy; + svgWrap.innerHTML=` + + + + + + + + + + A + B + C + O + `; + info.textContent='Положение C = '+cDeg+'°. Угол ∠ACB = 90° (всегда!)'; + } + sl.addEventListener('input',draw); + draw(); + })(); + + /* === INIT 2: пошаговое доказательство === */ + (function(){ + const R=55, cx=110, cy=80, W=230, H=165; + const Ax=cx-R, Ay=cy; + const Bx=cx+R, By=cy; + const cRad=(-60)*Math.PI/180; + const Ccx=cx+R*Math.cos(cRad), Ccy=cy+R*Math.sin(cRad); + const steps=[ + {text:'Дано: $AB$ — диаметр окружности, $C$ — точка на окружности, $C \\neq A, C \\neq B$. Доказать: $\\angle ACB = 90°$.'}, + {text:'Шаг 1. $AB$ — диаметр, значит центральный угол $\\angle AOB = 180°$ (развёрнутый). Дуга $ACB = 180°$ (полуокружность).'}, + {text:'Шаг 2. Вписанный угол $\\angle ACB$ опирается на дугу $AB = 180°$ (дугу, не содержащую $C$).'}, + {text:'Шаг 3. По теореме §9: $\\angle ACB = \\dfrac{1}{2} \\cdot 180° = 90°$. ч.т.д.'}, + ]; + let step=0; + const svgEl=document.getElementById('p11-proof-svg'), txtEl=document.getElementById('p11-proof-text'); + function draw(){ + let ex=''; + if(step>=1){ + ex+=`∠AOB=180°`; + ex+=``; + } + if(step>=2){ + ex+=``; + ex+=``; + } + if(step>=3){ + const u={x:(Ax-Ccx),y:(Ay-Ccy)},w={x:(Bx-Ccx),y:(By-Ccy)}; + const un=Math.sqrt(u.x*u.x+u.y*u.y),wn=Math.sqrt(w.x*w.x+w.y*w.y); + const ux=u.x/un,uy=u.y/un,wx=w.x/wn,wy=w.y/wn; + const s=8; + ex+=``; + ex+=`90°`; + } + svgEl.innerHTML=` + + + + + + + A + B + C + O + ${ex} + `; + txtEl.innerHTML=steps[step].text; + if(window.renderMathInElement) try{renderMath(txtEl);}catch(e){} + document.getElementById('p11-proof-next').textContent=step>=steps.length-1?'Готово':'Далее'; + } + document.getElementById('p11-proof-next').addEventListener('click',()=>{if(step{step=0;draw();}); + draw(); + })(); + + /* === INIT 3: калькулятор Пифагора === */ + (function(){ + document.getElementById('p11-pyth-btn').addEventListener('click',()=>{ + const d=parseFloat(document.getElementById('p11-diam').value); + const a=parseFloat(document.getElementById('p11-leg').value); + const out=document.getElementById('p11-pyth-out'); + out.style.display='block'; + if(isNaN(d)||isNaN(a)||d<=0||a<=0){out.style.background='#fee2e2';out.style.color='#7f1d1d';out.textContent='Введите положительные значения.';return;} + if(a>=d){out.style.background='#fee2e2';out.style.color='#7f1d1d';out.textContent='Катет должен быть меньше диаметра (гипотенузы).';return;} + const bc=Math.sqrt(d*d-a*a); + out.style.background='var(--sec-acc-soft,#dbeafe)';out.style.color='var(--sec-acc-d,#1d4ed8)'; + out.innerHTML='BC = √(AB²−AC²) = √('+d+'²−'+a+'²) = √'+((d*d-a*a).toFixed(2))+' = '+bc.toFixed(4)+''; + }); + })(); + + /* === INIT 4: тренажёр === */ + (function(){ + const tasks=[ + {q:'$AB$ — диаметр, $C$ на окружности. Чему равен $\\angle ACB$?',a:90,hint:'По теореме: вписанный угол на диаметре = 90°'}, + {q:'Диаметр $AB = 13$, катет $AC = 5$. Найди $BC$.',a:12,hint:'BC = √(169−25) = √144 = 12'}, + {q:'$\\angle ACB = 90°$, $BC = 8$, $AC = 6$. Найди диаметр $AB$.',a:10,hint:'AB = √(64+36) = √100 = 10'}, + {q:'Диаметр $AB = 2R = 20$, катет $BC = 16$. Найди $AC$.',a:12,hint:'AC = √(400−256) = √144 = 12'}, + {q:'Вписанный угол $\\angle ACB$, $AB$ — диаметр. Треугольник $ACB$ — прямоугольный. Верно ли это? (1 — да, 0 — нет)',a:1,hint:'Да, ∠ACB=90° означает прямоугольный треугольник'}, + ]; + let cur=0, score=0; + const iEl=document.getElementById('p11-tr-i'), scEl=document.getElementById('p11-tr-score'); + const taskEl=document.getElementById('p11-tr-task'), ansEl=document.getElementById('p11-tr-ans'); + const goBtn=document.getElementById('p11-tr-go'), startBtn=document.getElementById('p11-tr-start'); + const fb=document.getElementById('p11-tr-fb'); + function showTask(){ + if(cur>=tasks.length){taskEl.innerHTML='Тренажёр завершён! Очки: '+score+'/'+tasks.length+'';ansEl.style.display='none';goBtn.style.display='none';addXp(score*4,'p11-trainer');bumpProgress('p11',20);return;} + taskEl.innerHTML=tasks[cur].q;iEl.textContent=cur+1;ansEl.value='';fb.style.display='none'; + if(window.renderMathInElement) try{renderMath(taskEl);}catch(e){} + } + goBtn.addEventListener('click',()=>{ + const ans=parseFloat(ansEl.value.replace(',','.')); + const ok=Math.abs(ans-tasks[cur].a)<0.5; + feedback(fb,ok,ok?'Верно!':'Неверно. Подсказка: '+tasks[cur].hint); + if(ok){score++;scEl.textContent=score;cur++;setTimeout(showTask,900);} + }); + startBtn.addEventListener('click',()=>{cur=0;score=0;scEl.textContent=0;ansEl.style.display='';goBtn.style.display='';showTask();}); + showTask(); + })(); + + /* === INIT 5: DnD верно/неверно === */ + (function(){ + const items=[ + {label:'Вписанный угол на диаметре = 90°',cat:'true'}, + {label:'Вписанный угол на диаметре = 180°',cat:'false'}, + {label:'Гипотенуза прямоугольного треугольника — диаметр описанной окружности',cat:'true'}, + {label:'Диаметр всегда является вписанным углом',cat:'false'}, + {label:'Если ∠ACB = 90°, то AB — диаметр',cat:'true'}, + {label:'Вписанный угол на диаметре может быть тупым',cat:'false'}, + ]; + const pool=document.getElementById('p11-dnd-pool'); + const boxes={true:document.getElementById('p11-drop-true-items'),false:document.getElementById('p11-drop-false-items')}; + const fb=document.getElementById('p11-dnd-fb'); + let placed={}; + function reset(){ + pool.innerHTML='';placed={}; + Object.values(boxes).forEach(b=>b.innerHTML=''); + fb.style.display='none'; + items.forEach((it,i)=>{ + const chip=document.createElement('div'); + chip.className='dnd-chip';chip.dataset.i=i;chip.textContent=it.label; + chip.addEventListener('click',()=>chip.classList.toggle('armed')); + Object.entries(boxes).forEach(([cat,box])=>{ + box.parentElement.addEventListener('click',()=>{ + if(!chip.classList.contains('armed'))return; + chip.classList.remove('armed'); + if(placed[i]!==undefined) boxes[placed[i]].removeChild(chip); + placed[i]=cat; + box.appendChild(chip); + }); + }); + pool.appendChild(chip); + }); + } + document.getElementById('p11-dnd-check').addEventListener('click',()=>{ + let ok=0; + items.forEach((it,i)=>{if(placed[i]===it.cat)ok++;}); + feedback(fb,ok===items.length,'Верно: '+ok+'/'+items.length+(ok===items.length?'. Отлично!':'. Попробуй ещё.')); + if(ok===items.length){addXp(8,'p11-dnd');bumpProgress('p11',15);} + }); + document.getElementById('p11-dnd-reset').addEventListener('click',reset); + reset(); + })(); + + /* === INIT 6: Босс §11 === */ + (function(){ + const tasks=[ + {q:'$AB$ — диаметр, $C$ на окружности. Треугольник $ACB$ является:', + opts:['Прямоугольным с катетами $AC$, $BC$','Равнобедренным','Остроугольным'],cor:0, + exp:'$\\angle ACB = 90°$ — прямой, значит $ACB$ прямоугольный, $AB$ — гипотенуза.'}, + {q:'Диаметр $AB = 26$, $AC = 10$. Найди $BC$.', + opts:['24','16','12'],cor:0, + exp:'$BC = \\sqrt{26^2 - 10^2} = \\sqrt{676-100} = \\sqrt{576} = 24$.'}, + {q:'$\\angle ACB = 90°$, $AC = BC = 5$. Диаметр $AB = ?$', + opts:['$5\\sqrt{2}$','$10$','$5$'],cor:0, + exp:'$AB = \\sqrt{AC^2 + BC^2} = \\sqrt{25+25} = 5\\sqrt{2}$.'}, + {q:'Радиус $R = 7$. Сколько различных прямоугольных треугольников можно вписать в эту окружность с гипотенузой = диаметру?', + opts:['Один','Бесконечно много','Четыре'],cor:1, + exp:'Вершина $C$ может быть любой точкой окружности (кроме концов диаметра) — бесконечно много треугольников.'}, + ]; + const cont=document.getElementById('p11-boss-tasks'); + let bhtml=''; + tasks.forEach((t,i)=>{ + bhtml+=`
+
${i+1}. ${t.q}
+
+ ${t.opts.map((o,j)=>``).join('')} +
+ +
`; + }); + cont.innerHTML=bhtml; + if(window.renderMathInElement) try{renderMath(cont);}catch(e){} + })(); +} function buildP12stub(){ document.getElementById('p12-body').innerHTML='

§12 — Волна 1: содержимое появится в следующем обновлении.

'+secNav('p11','p13'); } function buildP13stub(){ document.getElementById('p13-body').innerHTML='

§13 — Волна 1: содержимое появится в следующем обновлении.

'+secNav('p12','p14'); } function buildP14stub(){ document.getElementById('p14-body').innerHTML='

§14 — Волна 1: содержимое появится в следующем обновлении.

'+secNav('p13','p15'); }