@@ -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 += '
';
// одна сторона (выделим)
@@ -837,7 +839,7 @@ function buildP16(){
Меняй радиус $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);