fix(phys8): закрытие критических проблем ревью — миграции, ✓→✓, ConvectionSim

- Удалены legacy миграции 009/010/015 (создавали несуществующие physics-8-thermal/electro/optics)
- 037_physics_8_hub.sql сделана self-sufficient: INSERT OR IGNORE родителя + UPDATE
- 7 шт. literal ✓ заменены на ✓ в physics_8_lab.html (правило проекта)
- В phys.js добавлен createConvectionSim — главный визуал §4 (тороидальный поток частиц)
  закрытие плана Phase 0 Физики 8
This commit is contained in:
Maxim Dolgolyov
2026-05-30 09:44:51 +03:00
parent bf788c1c3a
commit 09cfaa3bd2
6 changed files with 98 additions and 66 deletions
+7 -7
View File
@@ -889,10 +889,10 @@ function build_lr4(){
+'<label>$R_2$, Ом: <b id="lr4-r2v">8</b><input type="range" id="lr4-r2" min="2" max="20" step="1" value="8"></label>'
+'<label>$U$, В: <b id="lr4-uv">12</b><input type="range" id="lr4-u" min="3" max="24" step="1" value="12"></label></div>'
+'<div class="score-display" style="margin-top:8px;flex-direction:column;align-items:flex-start;gap:3px">'
+'<span>Общий ток $I$ = <b id="lr4-i">1</b> А (одинаков везде )</span>'
+'<span>Общий ток $I$ = <b id="lr4-i">1</b> А (одинаков везде &#10003;)</span>'
+'<span>$U_1$ = <b id="lr4-u1">4</b> В, $U_2$ = <b id="lr4-u2">8</b> В</span>'
+'<span>$U_1+U_2$ = <b id="lr4-us">12</b> В = $U$ </span>'
+'<span>$R = R_1+R_2$ = <b id="lr4-rs">12</b> Ом, $U/I$ = <b id="lr4-rt">12</b> Ом </span></div></div>';
+'<span>$U_1+U_2$ = <b id="lr4-us">12</b> В = $U$ &#10003;</span>'
+'<span>$R = R_1+R_2$ = <b id="lr4-rs">12</b> Ом, $U/I$ = <b id="lr4-rt">12</b> Ом &#10003;</span></div></div>';
h += _labResult('lr4', '<p>Все 3 правила послед. соединения подтверждены опытом:</p>'
+'<ul style="padding-left:20px"><li>$I$ одинаков везде;</li><li>$U = U_1 + U_2$;</li><li>$R = R_1 + R_2$.</li></ul>'
+'<p><b>Вывод:</b> закон Ома и правила последовательного соединения выполняются.</p>');
@@ -938,10 +938,10 @@ function build_lr5(){
+'<label>$R_2$, Ом: <b id="lr5-r2v">12</b><input type="range" id="lr5-r2" min="2" max="20" step="1" value="12"></label>'
+'<label>$U$, В: <b id="lr5-uv">12</b><input type="range" id="lr5-u" min="3" max="24" step="1" value="12"></label></div>'
+'<div class="score-display" style="margin-top:8px;flex-direction:column;align-items:flex-start;gap:3px">'
+'<span>$U_1 = U_2 = U$ = <b id="lr5-u1">12</b> В </span>'
+'<span>$U_1 = U_2 = U$ = <b id="lr5-u1">12</b> В &#10003;</span>'
+'<span>$I_1$ = <b id="lr5-i1">2</b> А, $I_2$ = <b id="lr5-i2">1</b> А</span>'
+'<span>$I_1+I_2$ = <b id="lr5-is">3</b> А = $I$ </span>'
+'<span>$R_{общ}$ по формуле = <b id="lr5-r">4</b> Ом, $U/I$ = <b id="lr5-rt">4</b> Ом </span></div></div>';
+'<span>$I_1+I_2$ = <b id="lr5-is">3</b> А = $I$ &#10003;</span>'
+'<span>$R_{общ}$ по формуле = <b id="lr5-r">4</b> Ом, $U/I$ = <b id="lr5-rt">4</b> Ом &#10003;</span></div></div>';
h += _labResult('lr5', '<p>Все 3 правила параллельного соединения подтверждены:</p>'
+'<ul style="padding-left:20px"><li>$U$ одинаково на обеих ветвях;</li><li>$I = I_1 + I_2$;</li><li>$1/R = 1/R_1 + 1/R_2$.</li></ul>'
+'<p><b>Вывод:</b> общее $R$ <b>меньше</b> любого из $R_1$, $R_2$, что соответствует теории.</p>');
@@ -1031,7 +1031,7 @@ function build_lr7(){
h += '<div class="wg"><div class="wg-header"><span class="wg-badge">СИМ</span><div class="wg-title">Виртуальный опыт</div></div>'
+'<div class="sliders" style="margin-bottom:10px"><label>Угол падения $\\alpha$, &#176;: <b id="lr7-av">30</b><input type="range" id="lr7-a" min="10" max="80" step="5" value="30"></label></div>'
+'<svg id="lr7-sim" viewBox="0 0 460 220" style="width:100%;height:auto;background:#f8fafc;border-radius:9px;border:1px solid var(--border)"></svg>'
+'<div class="score-display" style="margin-top:8px"><span>$\\alpha$ = <b id="lr7-as">30&#176;</b></span><span>Измерено $\\beta$ = <b id="lr7-bs">30&#176;</b></span><span>$\\alpha = \\beta$ </span></div></div>';
+'<div class="score-display" style="margin-top:8px"><span>$\\alpha$ = <b id="lr7-as">30&#176;</b></span><span>Измерено $\\beta$ = <b id="lr7-bs">30&#176;</b></span><span>$\\alpha = \\beta$ &#10003;</span></div></div>';
/* таблица результатов */
h += '<div class="wg"><div class="wg-header"><span class="wg-badge">ТАБЛИЦА</span><div class="wg-title">Серия измерений</div></div>'
+'<table style="width:100%;border-collapse:collapse;font-size:.92rem"><thead><tr style="background:rgba(15,23,42,.04)"><th style="padding:6px">Опыт</th><th style="padding:6px;text-align:right">$\\alpha$, &#176;</th><th style="padding:6px;text-align:right">$\\beta$, &#176;</th><th style="padding:6px;text-align:right">$\\alpha - \\beta$</th></tr></thead>'