diff --git a/frontend/js/geom7_svg.js b/frontend/js/geom7_svg.js
index 1afcbc2..8b812c2 100644
--- a/frontend/js/geom7_svg.js
+++ b/frontend/js/geom7_svg.js
@@ -155,8 +155,8 @@ G.angle = function(V, A, B, opts){
const color = opts.color || '#dc2626';
let s = '';
if(opts.label){
- /* Центр подписи — середина биссектрисы */
- const midA = (a1 + a2) / 2 + (Math.abs(delta) > Math.PI ? Math.PI : 0);
+ /* Центр подписи — середина ДУГИ, в направлении sweep */
+ const midA = a1 + delta / 2;
const lr = r + (opts.labelOffset || 12);
const lx = V.x + lr * Math.cos(midA);
const ly = V.y + lr * Math.sin(midA);
diff --git a/frontend/textbooks/geometry_7_ch1.html b/frontend/textbooks/geometry_7_ch1.html
index dfaa864..329b572 100644
--- a/frontend/textbooks/geometry_7_ch1.html
+++ b/frontend/textbooks/geometry_7_ch1.html
@@ -1018,11 +1018,52 @@ function buildP5(){
+ '
'+angleViz(180,'#7c3aed','Развёрн.')+'
'
+ '';
+ /* SVG: обозначение одного угла 3 разными способами */
+ let svgNotation='';
+ if(G){
+ function notationVariant(label, mode){
+ const b=G.svgBox(180,160,{id:'p5-not-'+mode,cell:20});
+ const V={x:40,y:130}, A={x:160,y:130};
+ const B={x:V.x+115*Math.cos(Math.PI/3.5), y:V.y-115*Math.sin(Math.PI/3.5)};
+ let s=b.open;
+ /* Заливка-сектор */
+ const a1=0, a2=-Math.PI/3.5, wR=32;
+ const x1=V.x+wR, y1=V.y;
+ const x2=V.x+wR*Math.cos(a2), y2=V.y+wR*Math.sin(a2);
+ s += '';
+ s += G.segment(V,A,{color:'#0891b2',width:2.6});
+ s += G.segment(V,B,{color:'#0891b2',width:2.6});
+ s += G.angle(V,A,B,{color:'#dc2626',r:22,width:2,label:label,fontSize:14,labelOffset:14});
+ s += G.point(V.x,V.y,'',{r:4,color:'#0891b2'});
+ /* Подписи вершин по краям */
+ if(mode==='full'){
+ s += 'A';
+ s += 'B';
+ s += 'C';
+ s += '∠BAC';
+ } else if(mode==='short'){
+ s += 'A';
+ s += '∠A';
+ } else {
+ s += 'α (альфа)';
+ }
+ s += b.close;
+ return s;
+ }
+ svgNotation = ''
+ + '
'+notationVariant('∠BAC','full')+'
'
+ + '
'+notationVariant('∠A','short')+'
'
+ + '
'+notationVariant('α','greek')+'
'
+ + '
';
+ }
+
html += makeCard('theory', 'Что такое угол', '5.1', `
Если из точки провести два луча, получится угол.
Эти лучи называются сторонами угла, а их общая точка — вершиной.
Обозначение тремя буквами: $\\angle BAC$ — вершина $A$ записывается посередине. Если по рисунку понятно, какой угол — обозначают одной буквой: $\\angle A$.
- Часто углы обозначают малыми греческими буквами: $\\alpha, \\beta, \\gamma, \\varphi$.
`);
+ Часто углы обозначают малыми греческими буквами: $\\alpha, \\beta, \\gamma, \\varphi$.
+ Один и тот же угол можно обозначить тремя способами:
+ `+svgNotation+``);
html += makeCard('rule', 'Измерение углов. Градус', '5.2', `
Углы измеряют в градусах. Развёрнутый угол (стороны на одной прямой) равен $180°$.
@@ -1042,9 +1083,46 @@ function buildP5(){
`+svgAngles+`
`);
+ /* SVG: биссектриса угла — наглядно две равные половинки */
+ let svgBisector='';
+ if(G){
+ const b=G.svgBox(280,180,{id:'p5-bis',cell:20});
+ const V={x:60,y:140};
+ const A={x:240,y:140};
+ const fullAngle=Math.PI/3; /* 60° сверху от горизонтали */
+ const halfAngle=fullAngle/2;
+ const B={x:V.x+170*Math.cos(fullAngle), y:V.y-170*Math.sin(fullAngle)};
+ const D={x:V.x+150*Math.cos(halfAngle), y:V.y-150*Math.sin(halfAngle)};
+ /* Две залитые половинки разными цветами */
+ function wedgePath(a1,a2,r,fill){
+ const x1=V.x+r*Math.cos(a1), y1=V.y-r*Math.sin(a1);
+ const x2=V.x+r*Math.cos(a2), y2=V.y-r*Math.sin(a2);
+ return '';
+ }
+ svgBisector = b.open
+ + wedgePath(0, halfAngle, 42, '#10b981') /* нижняя половинка ∠DAC */
+ + wedgePath(halfAngle, fullAngle, 42, '#7c3aed') /* верхняя половинка ∠BAD */
+ + G.segment(V,A,{color:'#0891b2',width:2.6})
+ + G.segment(V,B,{color:'#0891b2',width:2.6})
+ + G.segment(V,D,{color:'#dc2626',width:2.5,dash:'5 3'})
+ /* Дуги равных половинок (одинаковое число штрихов = равные углы) */
+ + ''
+ + ''
+ + '35°'
+ + '35°'
+ + G.point(V.x,V.y,'',{r:4,color:'#0891b2'})
+ + 'A'
+ + 'B'
+ + 'C'
+ + 'D'
+ + 'AD — биссектриса ∠BAC = 70°'
+ + b.close;
+ }
+
html += makeCard('rule', 'Биссектриса угла', '5.4', `
Биссектрисой угла называется луч, исходящий из его вершины и делящий угол на два равных угла.
- Если $\\angle BAC = 70°$, а $AD$ — биссектриса, то $\\angle BAD = \\angle DAC = 35°$.
`);
+ Если $\\angle BAC = 70°$, а $AD$ — биссектриса, то $\\angle BAD = \\angle DAC = 35°$.
+ `+svgBisector+`
`);
html += ''
+''