diff --git a/frontend/textbooks/geometry_9_ch4.html b/frontend/textbooks/geometry_9_ch4.html index bd45857..b809491 100644 --- a/frontend/textbooks/geometry_9_ch4.html +++ b/frontend/textbooks/geometry_9_ch4.html @@ -543,7 +543,7 @@ function buildP15(){
ИНТЕРАКТИВ 1
Три эталонных многоугольника
Меняй радиус $R$ — увидишь сразу 3 правильных многоугольника с одинаковой описанной окружностью.
- +
@@ -615,13 +615,15 @@ function buildP15(){ {x:350, y:130, n:4, label:'Квадрат', aStr:'R\\sqrt{2}'}, {x:580, y:130, n:6, label:'6-угольник', aStr:'R'}]; function draw(){ - const R = +sl.value; - lab.textContent = R; + const R = +sl.value; // в условных единицах (2..5) + lab.textContent = R.toFixed(1); + const K = 20; // px / ед. + const Rpx = R * K; let s = ''; centers.forEach(c=>{ - const pts = regularPoly(c.x, c.y, R, c.n); + const pts = regularPoly(c.x, c.y, Rpx, c.n); // описанная окр - s += ''; + s += ''; // многоугольник s += ''; // одна сторона (выделим) @@ -837,7 +839,7 @@ function buildP16(){
ИНТЕРАКТИВ 1
Окружность, круг и сектор
Меняй радиус $R$ и угол сектора $\\alpha$ — следи за длиной окружности, площадью круга, длиной дуги и площадью сектора.
- +
@@ -912,34 +914,36 @@ function buildP16(){ const seen = new Set(); const cx = 200, cy = 200; function draw(){ - const R = +slR.value, alpha = +slA.value; - labR.textContent = R; labA.textContent = alpha; + const R = +slR.value, alpha = +slA.value; // R в условных единицах (2..6) + labR.textContent = R.toFixed(1); labA.textContent = alpha; + const K = 25; // px / ед. + const Rpx = R * K; let s = ''; // основная окружность (контур) - s += ''; + s += ''; // сектор — рисуем path if(alpha > 0){ if(alpha >= 360){ // целый круг - s += ''; + s += ''; } else { const rad = alpha * Math.PI / 180; - const x1 = cx + R, y1 = cy; - const x2 = cx + R*Math.cos(rad), y2 = cy + R*Math.sin(rad); + const x1 = cx + Rpx, y1 = cy; + const x2 = cx + Rpx*Math.cos(rad), y2 = cy + Rpx*Math.sin(rad); const large = alpha > 180 ? 1 : 0; - s += ''; + s += ''; } } // радиус (на 0°) - s += ''; + s += ''; // радиус на углу alpha - const ax = cx + R*Math.cos(alpha*Math.PI/180), ay = cy + R*Math.sin(alpha*Math.PI/180); + const ax = cx + Rpx*Math.cos(alpha*Math.PI/180), ay = cy + Rpx*Math.sin(alpha*Math.PI/180); s += ''; // центр O s += ''; s += 'O'; // подпись R - s += 'R'; + s += 'R='+R.toFixed(1)+''; svg.innerHTML = s; const PI = Math.PI; const C = 2*PI*R; @@ -947,7 +951,7 @@ function buildP16(){ const L = PI*R*alpha/180; const Ssec = PI*R*R*alpha/360; out.innerHTML = - '$R = '+R+'$,  $\\alpha = '+alpha+'^\\circ$
' + '$R = '+R.toFixed(1)+'$,  $\\alpha = '+alpha+'^\\circ$
' +'$C = 2\\pi R \\approx '+C.toFixed(2)+'$,  $S_{\\text{круга}} = \\pi R^2 \\approx '+Scircle.toFixed(2)+'$
' +'$\\ell_{\\text{дуги}} = \\dfrac{\\pi R \\alpha}{180} \\approx '+L.toFixed(2)+'$,  $S_{\\text{сектора}} = \\dfrac{\\pi R^2 \\alpha}{360} \\approx '+Ssec.toFixed(2)+'$'; renderMath(out); @@ -1247,8 +1251,11 @@ function buildP13(){ s += 'r'; svg.innerHTML = s; const beta = 180*(n-2)/n; + // R = 130 px ↔ R = 10 ед., K = 13 px/ед. + const K = 13; + const Ru = R / K, ru = r / K; out.innerHTML = '$n = '+n+'$,  $\\beta = \\dfrac{180^\\circ \\cdot '+(n-2)+'}{'+n+'} = '+beta.toFixed(2)+'^\\circ$
' - + '$R = '+R+'$ px,  $r = R\\cos\\dfrac{180^\\circ}{'+n+'} \\approx '+r.toFixed(2)+'$ px'; + + '$R = '+Ru.toFixed(2)+'$,  $r = R\\cos\\dfrac{180^\\circ}{'+n+'} \\approx '+ru.toFixed(2)+'$'; renderMath(out); seen.add(n); if(seen.size >= 5 && !seen.has('_done')){ addXp(10,'p13-iv1'); bumpProgress('p13', 15); seen.add('_done'); } @@ -1410,7 +1417,7 @@ function buildP14(){
Меняй $n$ и $R$ — увидишь, как пересчитываются сторона $a$, апофема $r$, периметр $P$ и площадь $S$.
- +
@@ -1488,16 +1495,19 @@ function buildP14(){ const cx = 180, cy = 180; function draw(){ const n = +sln.value; - const R = +slr.value; - labN.textContent = n; labR.textContent = R; + const R = +slr.value; // R в условных единицах (2..8) + labN.textContent = n; labR.textContent = R.toFixed(1); + const K = 18; // px на единицу + const Rpx = R * K; const a = 2*R*Math.sin(Math.PI/n); const r = R*Math.cos(Math.PI/n); const P = n*a; const S = 0.5*n*R*R*Math.sin(2*Math.PI/n); - const pts = regularPoly(cx, cy, R, n); + const pts = regularPoly(cx, cy, Rpx, n); + const rPx = Rpx*Math.cos(Math.PI/n); let s = ''; - s += ''; - s += ''; + s += ''; + s += ''; s += ''; const P0 = pts[0], P1 = pts[1]; s += ''; @@ -1506,8 +1516,7 @@ function buildP14(){ s += ''; s += ''; svg.innerHTML = s; - // в "условных" единицах (px), но показываем как есть - out.innerHTML = '$n = '+n+'$,  $R = '+R+'$
' + out.innerHTML = '$n = '+n+'$,  $R = '+R.toFixed(1)+'$
' + '$a = 2R\\sin\\dfrac{180^\\circ}{'+n+'} \\approx '+a.toFixed(2)+'$,  $r = R\\cos\\dfrac{180^\\circ}{'+n+'} \\approx '+r.toFixed(2)+'$
' + '$P = n a \\approx '+P.toFixed(2)+'$,  $S = \\tfrac{1}{2} n R^2 \\sin\\dfrac{360^\\circ}{'+n+'} \\approx '+S.toFixed(2)+'$'; renderMath(out);