diff --git a/frontend/textbooks/geometry_9_ch3.html b/frontend/textbooks/geometry_9_ch3.html
index d887f18..54b2eb5 100644
--- a/frontend/textbooks/geometry_9_ch3.html
+++ b/frontend/textbooks/geometry_9_ch3.html
@@ -628,10 +628,13 @@ function buildP10(){
svg.innerHTML=s;
const sinA=Math.sin(deg2rad(A))||1e-9;
- const ratio = 2*R; // в наших экранных единицах
- out.innerHTML = '$A = '+A+'°$, $B = '+B+'°$, $C = '+C+'°$
'
- + '$\\dfrac{a}{\\sin A} = \\dfrac{b}{\\sin B} = \\dfrac{c}{\\sin C} = 2R = '+(2*R).toFixed(0)+'$ (в пикселях SVG)
'
- + '$a \\approx '+a.toFixed(1)+'$, $b \\approx '+b.toFixed(1)+'$, $c \\approx '+c.toFixed(1)+'$ · $a/\\sin A \\approx '+(a/sinA).toFixed(1)+'$';
+ // R = 130 px ↔ R = 5 ед., коэффициент K = 26 px / ед.
+ const K = 26;
+ const Ru = R / K; // = 5
+ const au = a / K, bu = b / K, cu = c / K;
+ out.innerHTML = '$A = '+A+'°$, $B = '+B+'°$, $C = '+C+'°$ · $R = '+Ru.toFixed(2)+'$
'
+ + '$\\dfrac{a}{\\sin A} = \\dfrac{b}{\\sin B} = \\dfrac{c}{\\sin C} = 2R = '+(2*Ru).toFixed(2)+'$
'
+ + '$a \\approx '+au.toFixed(2)+'$, $b \\approx '+bu.toFixed(2)+'$, $c \\approx '+cu.toFixed(2)+'$ · $a/\\sin A \\approx '+(au/sinA).toFixed(2)+'$';
renderMath(out);
seen.add(A+'|'+B);
if(seen.size>=4 && !seen.has('done')){ addXp(10,'p10-iv1'); bumpProgress('p10',15); seen.add('done'); }
@@ -871,14 +874,17 @@ function buildP11(){
const svg=document.getElementById('p11-iv1-svg');
const out=document.getElementById('p11-iv1-out');
const seen=new Set();
- const b=100, c=150;
+ // Стороны зафиксированы: b = 4 ед., c = 6 ед. Масштаб K = 25 px/ед.
+ const bU = 4, cU = 6, K = 25;
+ const bPx = bU * K, cPx = cU * K;
function draw(){
const A=+sA.value; lA.textContent=A;
- // A_v в позиции (90, 240), B_v = A_v + (c, 0) = (240, 240). C_v под углом A от A_v на расстояние b.
+ // A_v — вершина с углом A (низ-лево), B_v — на расстоянии c (низ-право), C_v — под углом A от A_v на расстояние b.
const Av={x:90, y:240};
- const Bv={x:Av.x+c, y:Av.y};
- const Cv={x:Av.x+b*Math.cos(deg2rad(A)), y:Av.y-b*Math.sin(deg2rad(A))};
- const a=Math.hypot(Bv.x-Cv.x, Bv.y-Cv.y);
+ const Bv={x:Av.x+cPx, y:Av.y};
+ const Cv={x:Av.x+bPx*Math.cos(deg2rad(A)), y:Av.y-bPx*Math.sin(deg2rad(A))};
+ const aPx=Math.hypot(Bv.x-Cv.x, Bv.y-Cv.y);
+ const aU=aPx/K;
let s='';
s += '';
// треугольник
@@ -890,13 +896,13 @@ function buildP11(){
if(Math.abs(A-90)<0.5){
s += '';
}
- // подписи сторон
+ // подписи сторон в единицах
const midAB={x:(Av.x+Bv.x)/2, y:(Av.y+Bv.y)/2};
const midAC={x:(Av.x+Cv.x)/2, y:(Av.y+Cv.y)/2};
const midBC={x:(Bv.x+Cv.x)/2, y:(Bv.y+Cv.y)/2};
- s += 'c = '+c+'';
- s += 'b = '+b+'';
- s += 'a = '+a.toFixed(1)+'';
+ s += 'c = '+cU+'';
+ s += 'b = '+bU+'';
+ s += 'a ≈ '+aU.toFixed(2)+'';
// подпись угла A
s += 'A = '+A+'°';
// вершины
@@ -908,9 +914,9 @@ function buildP11(){
svg.innerHTML=s;
const cosA=Math.cos(deg2rad(A));
- const a2 = b*b + c*c - 2*b*c*cosA;
- let info = '$a^2 = b^2 + c^2 - 2bc \\cos A = '+(b*b)+' + '+(c*c)+' - '+(2*b*c)+' \\cdot \\cos '+A+'° \\approx '+a2.toFixed(1)+'$
'
- + '$a \\approx '+Math.sqrt(a2).toFixed(2)+'$';
+ const a2u = bU*bU + cU*cU - 2*bU*cU*cosA;
+ let info = '$a^2 = b^2 + c^2 - 2bc \\cos A = '+(bU*bU)+' + '+(cU*cU)+' - '+(2*bU*cU)+' \\cdot \\cos '+A+'° \\approx '+a2u.toFixed(2)+'$
'
+ + '$a \\approx '+Math.sqrt(Math.max(0,a2u)).toFixed(2)+'$';
if(Math.abs(A-90)<0.5) info += '
✓ Прямой угол — это теорема Пифагора!';
out.innerHTML=info;
renderMath(out);