diff --git a/frontend/textbooks/geometry_8_ch2.html b/frontend/textbooks/geometry_8_ch2.html
index 36f6874..ee0cee2 100644
--- a/frontend/textbooks/geometry_8_ch2.html
+++ b/frontend/textbooks/geometry_8_ch2.html
@@ -4323,7 +4323,7 @@ function buildP9(){
(function(){
const tasks=[
{q:'Основания 15 и 25, $S_1=60$. Найти $S_2$.', ans:100, hint:'S₂=60·25/15=100.'},
- {q:'Общая высота двух треугольников h=12 см. $S_1+S_2=100\\,\\text{см}^2$, $S_1:S_2=2:3$. Найти $a_1$.', ans:10, hint:'S₁=40, S₂=60. a₁=2S₁/h=80/12≈6,67... перепроверь: h=12, S₁=2·40/12=6,7. Нет: a₁=2·40/12=6,(6). Или: S₁=½a₁·12 → a₁=2·40/12=20/3≈6,7. Задача: a₁=20/3. Ответ 10 — h=8, S₁=40, a₁=2·40/8=10.', ans_actual:10},
+ {q:'Общая высота двух треугольников h=8 см. $S_1+S_2=100\\,\\text{см}^2$, $S_1:S_2=2:3$. Найти $a_1$.', ans:10, hint:'S₁=40, S₂=60. a₁=2S₁/h=2·40/8=10.'},
{q:'Точка $D$ на стороне $BC$ делит её так, что $BD:DC=4:6$. $S_{\\triangle ABD}=16\\,\\text{см}^2$. Найти $S_{\\triangle ADC}$.', ans:24, hint:'S₂=16·6/4=24.'},
{q:'Два треугольника с общей высотой. Площади 36 и 54 см². Меньшее основание 6 см. Большее основание?', ans:9, hint:'a₂=6·54/36=9.'},
];
@@ -4703,22 +4703,27 @@ function buildP11(){
где $a$, $b$ — катеты, $c$ — гипотенуза.
Важно: гипотенуза — сторона, лежащая напротив прямого угла. Всегда наибольшая из трёх сторон.
-
`);
@@ -4893,30 +4898,35 @@ function buildP11(){
document.getElementById('p11-sl-a-val').textContent=a;
document.getElementById('p11-sl-b-val').textContent=b;
const c=Math.sqrt(a*a+b*b);
- const scale=12; // px per unit
+ // Dynamic scale: fit triangle + squares for side a (below) and side b (left)
+ // Total width needed: bx(square-b) + ax(triangle) + margin
+ // Total height needed: by(triangle) + ax(square-a) + margin
+ const maxSide=Math.max(a,b);
+ const scale=Math.min(9, Math.floor(160/maxSide));
const ax=a*scale, bx=b*scale;
const clen=+c.toFixed(3);
- // triangle: right angle at origin R=(80,220), B=(80+ax,220), A=(80,220-bx)
- const Rx=80, Ry=220;
+ // Place right-angle vertex R so square-b (bx×bx) fits left and square-a (ax×ax) fits below
+ // Rx=bx+20 ensures square-b starts at x=20; Ry=bx+20 gives apex A at y=20
+ const Rx=bx+20, Ry=bx+20;
const Bx=Rx+ax, By=Ry;
- const Ax=Rx, Ay=Ry-bx;
- let s='';
+ const Ax=Rx, Ay=Ry-bx; // vertical leg: A is bx above R
+ const H_dyn=Ry+ax+30; // height: R + square-a height + label margin
+ const W_dyn=Rx+ax+30; // width: R + hyp end + margin
+ let s='';
// triangle
s+='';
- // right angle at R
+ // right angle at R: arms +x and -y
s+='';
- // square on a (below triangle): R to B bottom side, extend down
- const sqAh=Math.max(16,Math.min(40,ax*0.4));
- s+='';
- s+='a²='+a*a+'';
- // square on b (left of triangle)
- const sqBw=Math.max(16,Math.min(40,bx*0.4));
- s+='';
- s+='b²='+b*b+'';
+ // square on a (ax × ax) below base: R=(Rx,Ry)→B=(Bx,Ry), extend down
+ s+='';
+ s+='a²='+a*a+'';
+ // square on b (bx × bx) left of vertical leg: A=(Rx,Ry-bx)→R=(Rx,Ry), extend left
+ s+='';
+ s+='b²='+b*b+'';
// labels
- s+='a='+a+'';
- s+='b='+b+'';
- s+='c='+clen+'';
+ s+='a='+a+'';
+ s+='b='+b+'';
+ s+='c='+clen+'';
s+='';
document.getElementById('p11-sq-svg-wrap').innerHTML=s;
document.getElementById('p11-sq-info').innerHTML=`
@@ -5444,7 +5454,7 @@ function buildP12(){
const tasks=[
{q:'Сторона равностороннего треугольника $12$ см. Найти высоту (округли до целых).', ans:10, hint:'h=12√3/2=6√3≈10,39≈10.'},
{q:'Периметр равностороннего треугольника $18$ см. Найти площадь $S$ (округли до целых).', ans:16, hint:'a=6, S=36√3/4=9√3≈15,6≈16.'},
- {q:'Высота равностороннего треугольника $h = 6\\sqrt{3}$ см. Найти его площадь (целое число).', ans:144, hint:'h=6√3 → a=12, S=144√3/4=36√3... нет: a=2h/√3=12√3/√3=12, S=12²√3/4=36√3≈62. Ответ: 62.'},
+ {q:'Высота равностороннего треугольника $h = 6\\sqrt{3}$ см. Найти его площадь (целое число).', ans:62, hint:'h=6√3 → a=2h/√3=12, S=144√3/4=36√3≈62.'},
{q:'Два равносторонних треугольника: стороны $4$ и $8$ см. Во сколько раз площадь большего больше меньшего?', ans:4, hint:'S∝a². (8/4)²=4.'},
];
const correct=[10,16,62,4];
@@ -6815,8 +6825,9 @@ function buildFinal2(){
-
-
+
+
+