fix(geom7): cache-bust geom7_svg.js (?v=3) + 3-й SVG в §5 (транспортир)
Скорее всего у пользователя был закэширован старый geom7_svg.js, из-за чего часть API изменилась и SVG-блоки в §5 рендерились пустыми (angleViz и notationVariant возвращали '' если G не было). Что сделано: 1. Везде src="/js/geom7_svg.js?v=3" — форсит браузер скачать заново - geometry_7_ch1.html - geometry_7_ch2.html 2. notationVariant: function declaration внутри if(G) заменён на const arrow expression — для надёжности в strict mode + блоке 3. Добавлен 3-й SVG в §5 — карточка 5.2 «Измерение углов»: - полукруглый транспортир радиусом 90px с делениями каждые 10° - три цветных луча, отложенные на 40°, 90°, 140° от одной стороны - цветные подписи градусных мер в правильных местах Теперь в §5 ТРИ SVG-рисунка: - 5.1 «Что такое угол» — три обозначения одного угла - 5.2 «Измерение углов» — транспортир с 3 примерами (НОВОЕ) - 5.3 «Виды углов» — 4 типа углов с заливкой - 5.4 «Биссектриса» — деление угла пополам Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
onload="renderMathInElement(document.body,{delimiters:[{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false},{left:'\\[',right:'\\]',display:true},{left:'\\(',right:'\\)',display:false}],throwOnError:false})"></script>
|
||||
<script src="/js/api.js" defer></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/geom7_svg.js" defer></script>
|
||||
<script src="/js/geom7_svg.js?v=3" defer></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Manrope:wght@600;700;800;900&family=Unbounded:wght@700;800;900&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root{
|
||||
@@ -1021,7 +1021,7 @@ function buildP5(){
|
||||
/* SVG: обозначение одного угла 3 разными способами */
|
||||
let svgNotation='';
|
||||
if(G){
|
||||
function notationVariant(label, mode){
|
||||
const notationVariant = function(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)};
|
||||
@@ -1049,8 +1049,8 @@ function buildP5(){
|
||||
}
|
||||
s += b.close;
|
||||
return s;
|
||||
}
|
||||
svgNotation = '<div style="display:flex;gap:8px;flex-wrap:wrap;justify-content:center">'
|
||||
};
|
||||
svgNotation = '<div style="display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:8px">'
|
||||
+ '<div>'+notationVariant('∠BAC','full')+'</div>'
|
||||
+ '<div>'+notationVariant('∠A','short')+'</div>'
|
||||
+ '<div>'+notationVariant('α','greek')+'</div>'
|
||||
@@ -1065,10 +1065,30 @@ function buildP5(){
|
||||
<p style="font-size:.9rem;color:var(--muted);text-align:center;margin-top:10px"><b>Один и тот же угол можно обозначить тремя способами:</b></p>
|
||||
`+svgNotation+``);
|
||||
|
||||
/* SVG: транспортир с измерением 3 углов */
|
||||
let svgProtractor='';
|
||||
if(G){
|
||||
const b=G.svgBox(320,180,{id:'p5-prot',cell:20});
|
||||
const V={x:160,y:160};
|
||||
svgProtractor = b.open
|
||||
+ G.protractor(V,90,{color:'#0891b2',fill:'#fef3c7'})
|
||||
/* Три цветных луча с разными углами */
|
||||
+ G.segment(V,{x:V.x+105*Math.cos(-Math.PI*40/180), y:V.y-105*Math.sin(Math.PI*40/180)},{color:'#10b981',width:2.6})
|
||||
+ G.segment(V,{x:V.x+105*Math.cos(-Math.PI*90/180), y:V.y-105*Math.sin(Math.PI*90/180)},{color:'#dc2626',width:2.6})
|
||||
+ G.segment(V,{x:V.x+105*Math.cos(-Math.PI*140/180), y:V.y-105*Math.sin(Math.PI*140/180)},{color:'#7c3aed',width:2.6})
|
||||
/* Подписи углов */
|
||||
+ '<text x="'+(V.x+50)+'" y="'+(V.y-30)+'" font-size="13" fill="#047857" font-weight="800" font-family="JetBrains Mono">40°</text>'
|
||||
+ '<text x="'+(V.x+8)+'" y="'+(V.y-55)+'" font-size="13" fill="#b91c1c" font-weight="800" font-family="JetBrains Mono">90°</text>'
|
||||
+ '<text x="'+(V.x-90)+'" y="'+(V.y-15)+'" font-size="13" fill="#6d28d9" font-weight="800" font-family="JetBrains Mono">140°</text>'
|
||||
+ b.close;
|
||||
}
|
||||
|
||||
html += makeCard('rule', 'Измерение углов. Градус', '5.2', `
|
||||
<p>Углы измеряют в <b>градусах</b>. Развёрнутый угол (стороны на одной прямой) равен <b>$180°$</b>.</p>
|
||||
<p>$1°$ — это $\\dfrac{1}{180}$ часть развёрнутого угла.</p>
|
||||
<p>Углы измеряют <b>транспортиром</b>. Транспортир позволяет также построить угол данной градусной меры.</p>
|
||||
<div class="svg-host">`+svgProtractor+`</div>
|
||||
<p style="text-align:center;font-size:.85rem;color:var(--muted);margin-top:-4px">Три угла (40°, 90°, 140°), отложенные транспортиром от общей стороны.</p>
|
||||
<p><b>Аксиома измерения углов.</b> Если внутри угла из его вершины провести луч, он разобьёт угол на два, сумма градусных мер которых равна градусной мере исходного.</p>
|
||||
<p><b>Аксиома откладывания углов.</b> От любого луча в данную полуплоскость можно отложить угол данной градусной меры, и притом только один.</p>`);
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
onload="renderMathInElement(document.body,{delimiters:[{left:'$$',right:'$$',display:true},{left:'$',right:'$',display:false},{left:'\\[',right:'\\]',display:true},{left:'\\(',right:'\\)',display:false}],throwOnError:false})"></script>
|
||||
<script src="/js/api.js" defer></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/geom7_svg.js" defer></script>
|
||||
<script src="/js/geom7_svg.js?v=3" defer></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Manrope:wght@600;700;800;900&family=Unbounded:wght@700;800;900&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root{
|
||||
|
||||
Reference in New Issue
Block a user