fix(textbooks): Физика 9 — STATE collision, KaTeX escape, авто-init симуляций
Три бага из жалобы пользователя: 1) phys9_legacy.js упал с 'Identifier STATE has already been declared' — const STATE в монолите конфликтовал с const STATE в chapter inline JS. Скрипт extract_phys9_legacy.cjs теперь оборачивает извлечённый код в IIFE и явно экспортит через window 70 функций (upd*/draw*/init*/start*/lab*/ check*/toggle*/render*/show*/...) + 7 const-массивов (TASKS_PN, PUZ_PN). 2) В боковой панели формулы рендерились как 'Delta vecr' вместо Δr⃗ — мой переход на JSON.stringify в gen_phys9_ch.js добавил лишний слой escape backslash. Уменьшил \\ → \ в SIDEBAR_ROWS, TIPS_HTML, PARA_SUBS, LR_SUBS (90 строк). Цепочка теперь: source \Delta → string \Delta → JSON "\\Delta" → HTML JS \Delta → runtime \Delta → KaTeX \Delta ✓. 3) 'не работают симуляции' — функции из legacy.js были доступны, но chapter goTo(id) их не вызывал. Добавлен авто-вызов upd<N>(), startAnim<N>(), init<N>(), draw<N>() при переключении на параграф, и updLab<N>(), drawLab<N>() — для ЛР.
This commit is contained in:
@@ -15,7 +15,6 @@
|
||||
<script src="/js/api.js" defer></script>
|
||||
<script src="/js/xp.js" defer></script>
|
||||
<script src="/js/phys.js" defer></script>
|
||||
<script src="/js/phys9_legacy.js" 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{
|
||||
@@ -635,17 +634,17 @@ const _TB_SLUG = 'physics-9-ch1';
|
||||
const PARAS = [
|
||||
{ id:"p1", num:"§ 1", name:"Механическое движение", sub:"материальная точка" },
|
||||
{ id:"p2", num:"§ 2", name:"Относительность движения. Система отсчёта", sub:"СО · относительность" },
|
||||
{ id:"p3", num:"§ 3", name:"Скалярные и векторные величины. Действия над векторами", sub:"$\\\\vec a + \\\\vec b$" },
|
||||
{ id:"p4", num:"§ 4", name:"Проекция вектора на ось", sub:"$a_x = a\\\\cos\\\\alpha$" },
|
||||
{ id:"p5", num:"§ 5", name:"Путь и перемещение", sub:"$s$ vs $\\\\Delta\\\\vec r$" },
|
||||
{ id:"p6", num:"§ 6", name:"Равномерное прямолинейное движение. Скорость", sub:"$\\\\Delta\\\\vec r = \\\\vec v t$" },
|
||||
{ id:"p3", num:"§ 3", name:"Скалярные и векторные величины. Действия над векторами", sub:"$\\vec a + \\vec b$" },
|
||||
{ id:"p4", num:"§ 4", name:"Проекция вектора на ось", sub:"$a_x = a\\cos\\alpha$" },
|
||||
{ id:"p5", num:"§ 5", name:"Путь и перемещение", sub:"$s$ vs $\\Delta\\vec r$" },
|
||||
{ id:"p6", num:"§ 6", name:"Равномерное прямолинейное движение. Скорость", sub:"$\\Delta\\vec r = \\vec v t$" },
|
||||
{ id:"p7", num:"§ 7", name:"Графическое представление равномерного движения", sub:"графики $v(t)$, $x(t)$" },
|
||||
{ id:"p8", num:"§ 8", name:"Неравномерное движение. Средняя и мгновенная скорость", sub:"$\\\\langle v\\\\rangle = s/t$" },
|
||||
{ id:"p9", num:"§ 9", name:"Сложение скоростей", sub:"$\\\\vec v_{1,3} = \\\\vec v_{1,2} + \\\\vec v_{2,3}$" },
|
||||
{ id:"p10", num:"§ 10", name:"Ускорение", sub:"$\\\\vec a = \\\\Delta\\\\vec v/\\\\Delta t$" },
|
||||
{ id:"p11", num:"§ 11", name:"Скорость при равноускоренном движении", sub:"$\\\\vec v = \\\\vec v_0 + \\\\vec a t$" },
|
||||
{ id:"p8", num:"§ 8", name:"Неравномерное движение. Средняя и мгновенная скорость", sub:"$\\langle v\\rangle = s/t$" },
|
||||
{ id:"p9", num:"§ 9", name:"Сложение скоростей", sub:"$\\vec v_{1,3} = \\vec v_{1,2} + \\vec v_{2,3}$" },
|
||||
{ id:"p10", num:"§ 10", name:"Ускорение", sub:"$\\vec a = \\Delta\\vec v/\\Delta t$" },
|
||||
{ id:"p11", num:"§ 11", name:"Скорость при равноускоренном движении", sub:"$\\vec v = \\vec v_0 + \\vec a t$" },
|
||||
{ id:"p12", num:"§ 12", name:"Перемещение, координата и путь при равноускоренном движении", sub:"$x = x_0 + v_0 t + at^2/2$" },
|
||||
{ id:"p13", num:"§ 13", name:"Линейная и угловая скорости", sub:"$v = \\\\omega R$" },
|
||||
{ id:"p13", num:"§ 13", name:"Линейная и угловая скорости", sub:"$v = \\omega R$" },
|
||||
{ id:"p14", num:"§ 14", name:"Ускорение точки при движении по окружности", sub:"$a_n = v^2/R$" },
|
||||
{ id:"final1", num:'\u2605', name:'Финал главы', sub:"Итоги · боссы главы 1", final:true }
|
||||
];
|
||||
@@ -786,24 +785,42 @@ function goTo(id){
|
||||
window.scrollTo({top:0,behavior:'smooth'});
|
||||
if((STATE.progress[id]||0)<10) bumpProgress(id, 10);
|
||||
if(window.renderMathInElement) setTimeout(()=>renderMath(el), 0);
|
||||
// Auto-init legacy simulations: call upd<N>() / startAnim<N>() / draw<N>() if defined in phys9_legacy.js.
|
||||
if(id.startsWith('p')){
|
||||
const n = id.slice(1);
|
||||
setTimeout(()=>{
|
||||
['upd','startAnim','init','draw'].forEach(prefix=>{
|
||||
const fn = window[prefix + n];
|
||||
if(typeof fn === 'function'){ try{ fn(); }catch(e){ console.warn(prefix + n + ' init:', e.message); } }
|
||||
});
|
||||
}, 50);
|
||||
} else if(id.startsWith('lr')){
|
||||
const n = id.slice(2);
|
||||
setTimeout(()=>{
|
||||
['updLab','drawLab'].forEach(prefix=>{
|
||||
const fn = window[prefix + n];
|
||||
if(typeof fn === 'function'){ try{ fn(); }catch(e){} }
|
||||
});
|
||||
}, 50);
|
||||
}
|
||||
markLastPara(id);
|
||||
}
|
||||
|
||||
const SIDEBARS = {
|
||||
p1:{title:"Шпаргалка §1",rows:[["Кинематика","описывает движение без причин"],["Мат. точка","тело с пренебр. размерами"],["Поступательное","все точки движутся одинаково"]]},
|
||||
p2:{title:"Шпаргалка §2",rows:[["СО","тело отсчёта + оси + часы"],["Относ.","скорость, путь, траектория"],["Земля","чаще всего тело отсчёта"]]},
|
||||
p3:{title:"Шпаргалка §3",rows:[["Скаляр","число"],["Вектор","число + направление"],["$\\\\vec a + \\\\vec b$","правило треугольника / параллелограмма"]]},
|
||||
p4:{title:"Шпаргалка §4",rows:[["Проекция","$a_x = a\\\\cos\\\\alpha$"],["Знак","зависит от $\\\\alpha$"],["Сумма","$(\\\\vec a + \\\\vec b)_x = a_x + b_x$"]]},
|
||||
p5:{title:"Шпаргалка §5",rows:[["Путь","скаляр $s \\\\ge 0$"],["Перемещ.","вектор $\\\\Delta\\\\vec r$"],["$s \\\\ge |\\\\Delta\\\\vec r|$",""]]},
|
||||
p6:{title:"Шпаргалка §6",rows:[["$\\\\vec v = \\\\text{const}$","равномерное"],["$\\\\Delta\\\\vec r = \\\\vec v t$",""],["$x = x_0 + v_x t$","координата"]]},
|
||||
p3:{title:"Шпаргалка §3",rows:[["Скаляр","число"],["Вектор","число + направление"],["$\\vec a + \\vec b$","правило треугольника / параллелограмма"]]},
|
||||
p4:{title:"Шпаргалка §4",rows:[["Проекция","$a_x = a\\cos\\alpha$"],["Знак","зависит от $\\alpha$"],["Сумма","$(\\vec a + \\vec b)_x = a_x + b_x$"]]},
|
||||
p5:{title:"Шпаргалка §5",rows:[["Путь","скаляр $s \\ge 0$"],["Перемещ.","вектор $\\Delta\\vec r$"],["$s \\ge |\\Delta\\vec r|$",""]]},
|
||||
p6:{title:"Шпаргалка §6",rows:[["$\\vec v = \\text{const}$","равномерное"],["$\\Delta\\vec r = \\vec v t$",""],["$x = x_0 + v_x t$","координата"]]},
|
||||
p7:{title:"Шпаргалка §7",rows:[["$v(t)$","прямая"],["$x(t)$","наклонная прямая"],["Площадь","под $v(t)$ = путь"]]},
|
||||
p8:{title:"Шпаргалка §8",rows:[["Средняя","$\\\\langle v\\\\rangle = s/t$"],["Мгновенная","предел $\\\\Delta s/\\\\Delta t$"],["Спидометр","показывает мгн. $v$"]]},
|
||||
p9:{title:"Шпаргалка §9",rows:[["$\\\\vec v_{1,3} = \\\\vec v_{1,2} + \\\\vec v_{2,3}$",""],["Лодка/река","$\\\\vec v_{л,б} = \\\\vec v_{л,в} + \\\\vec v_{в,б}$"],["По теч.","скорости складываются"]]},
|
||||
p10:{title:"Шпаргалка §10",rows:[["$\\\\vec a = \\\\Delta\\\\vec v/\\\\Delta t$",""],["Ед.","м/с²"],["Знак","совпадает с $\\\\Delta\\\\vec v$"]]},
|
||||
p11:{title:"Шпаргалка §11",rows:[["$\\\\vec v = \\\\vec v_0 + \\\\vec a t$",""],["Проекция","$v_x = v_{0x} + a_x t$"],["",""]]},
|
||||
p12:{title:"Шпаргалка §12",rows:[["$\\\\Delta\\\\vec r = \\\\vec v_0 t + \\\\vec a t^2/2$",""],["$v^2 - v_0^2 = 2a_x\\\\Delta x$","без $t$"],["",""]]},
|
||||
p13:{title:"Шпаргалка §13",rows:[["$\\\\omega = 2\\\\pi/T$",""],["$v = \\\\omega R$",""],["$\\\\omega$","рад/с"]]},
|
||||
p14:{title:"Шпаргалка §14",rows:[["$a_n = v^2/R$",""],["$a_n = \\\\omega^2 R$",""],["К центру","направление"]]},
|
||||
p8:{title:"Шпаргалка §8",rows:[["Средняя","$\\langle v\\rangle = s/t$"],["Мгновенная","предел $\\Delta s/\\Delta t$"],["Спидометр","показывает мгн. $v$"]]},
|
||||
p9:{title:"Шпаргалка §9",rows:[["$\\vec v_{1,3} = \\vec v_{1,2} + \\vec v_{2,3}$",""],["Лодка/река","$\\vec v_{л,б} = \\vec v_{л,в} + \\vec v_{в,б}$"],["По теч.","скорости складываются"]]},
|
||||
p10:{title:"Шпаргалка §10",rows:[["$\\vec a = \\Delta\\vec v/\\Delta t$",""],["Ед.","м/с²"],["Знак","совпадает с $\\Delta\\vec v$"]]},
|
||||
p11:{title:"Шпаргалка §11",rows:[["$\\vec v = \\vec v_0 + \\vec a t$",""],["Проекция","$v_x = v_{0x} + a_x t$"],["",""]]},
|
||||
p12:{title:"Шпаргалка §12",rows:[["$\\Delta\\vec r = \\vec v_0 t + \\vec a t^2/2$",""],["$v^2 - v_0^2 = 2a_x\\Delta x$","без $t$"],["",""]]},
|
||||
p13:{title:"Шпаргалка §13",rows:[["$\\omega = 2\\pi/T$",""],["$v = \\omega R$",""],["$\\omega$","рад/с"]]},
|
||||
p14:{title:"Шпаргалка §14",rows:[["$a_n = v^2/R$",""],["$a_n = \\omega^2 R$",""],["К центру","направление"]]},
|
||||
final1:{title:"Финал главы 1",rows:[["§§1–14","теория главы 1"],["Награда","+50 XP"]]}
|
||||
};
|
||||
|
||||
@@ -811,17 +828,17 @@ const TIPS=[
|
||||
{sec:"p1",html:"Кинематика — раздел физики о движении без причин. Мат. точка — тело, размерами которого можно пренебречь."},
|
||||
{sec:"p2",html:"СО = тело отсчёта + система координат + часы. Скорость, путь и траектория зависят от выбора СО."},
|
||||
{sec:"p3",html:"Скаляры — число (масса, путь). Векторы — число + направление (сила, скорость). Сумма векторов: правило треугольника или параллелограмма."},
|
||||
{sec:"p4",html:"Проекция вектора $\\\\vec a$ на ось: $a_x = a\\\\cos\\\\alpha$. Знак зависит от угла $\\\\alpha$. Сумма проекций = проекция суммы."},
|
||||
{sec:"p5",html:"Путь $s$ — скаляр $\\\\ge 0$. Перемещение $\\\\Delta\\\\vec r$ — вектор. Всегда $s \\\\ge |\\\\Delta\\\\vec r|$."},
|
||||
{sec:"p6",html:"Равномерное движение: $\\\\vec v = \\\\text{const}$. $\\\\Delta\\\\vec r = \\\\vec v t$, координата $x = x_0 + v_x t$."},
|
||||
{sec:"p4",html:"Проекция вектора $\\vec a$ на ось: $a_x = a\\cos\\alpha$. Знак зависит от угла $\\alpha$. Сумма проекций = проекция суммы."},
|
||||
{sec:"p5",html:"Путь $s$ — скаляр $\\ge 0$. Перемещение $\\Delta\\vec r$ — вектор. Всегда $s \\ge |\\Delta\\vec r|$."},
|
||||
{sec:"p6",html:"Равномерное движение: $\\vec v = \\text{const}$. $\\Delta\\vec r = \\vec v t$, координата $x = x_0 + v_x t$."},
|
||||
{sec:"p7",html:"График $v(t)$ — прямая параллельная оси $t$. График $x(t)$ — наклонная прямая. Площадь под $v(t)$ = пройденный путь."},
|
||||
{sec:"p8",html:"Средняя скорость: $\\\\langle v\\\\rangle = s/t$. Мгновенная — предел $\\\\Delta s/\\\\Delta t$ при $\\\\Delta t \\\\to 0$. Спидометр показывает мгновенную."},
|
||||
{sec:"p9",html:"Закон сложения скоростей: $\\\\vec v_{1,3} = \\\\vec v_{1,2} + \\\\vec v_{2,3}$. По течению — скорости складываются, против — вычитаются."},
|
||||
{sec:"p10",html:"Ускорение: $\\\\vec a = \\\\Delta\\\\vec v / \\\\Delta t$. Единица м/с². Направление совпадает с $\\\\Delta\\\\vec v$."},
|
||||
{sec:"p11",html:"При равноускоренном движении: $\\\\vec v = \\\\vec v_0 + \\\\vec a t$. В проекциях: $v_x = v_{0x} + a_x t$."},
|
||||
{sec:"p12",html:"Перемещение: $\\\\Delta\\\\vec r = \\\\vec v_0 t + \\\\vec a t^2/2$. Без времени: $v^2 - v_0^2 = 2a_x\\\\Delta x$."},
|
||||
{sec:"p13",html:"Угловая скорость $\\\\omega = 2\\\\pi/T = 2\\\\pi\\\\nu$ (рад/с). Связь с линейной: $v = \\\\omega R$."},
|
||||
{sec:"p14",html:"Центростремит. ускорение: $a_n = v^2/R = \\\\omega^2 R$. Направлено к центру окружности."},
|
||||
{sec:"p8",html:"Средняя скорость: $\\langle v\\rangle = s/t$. Мгновенная — предел $\\Delta s/\\Delta t$ при $\\Delta t \\to 0$. Спидометр показывает мгновенную."},
|
||||
{sec:"p9",html:"Закон сложения скоростей: $\\vec v_{1,3} = \\vec v_{1,2} + \\vec v_{2,3}$. По течению — скорости складываются, против — вычитаются."},
|
||||
{sec:"p10",html:"Ускорение: $\\vec a = \\Delta\\vec v / \\Delta t$. Единица м/с². Направление совпадает с $\\Delta\\vec v$."},
|
||||
{sec:"p11",html:"При равноускоренном движении: $\\vec v = \\vec v_0 + \\vec a t$. В проекциях: $v_x = v_{0x} + a_x t$."},
|
||||
{sec:"p12",html:"Перемещение: $\\Delta\\vec r = \\vec v_0 t + \\vec a t^2/2$. Без времени: $v^2 - v_0^2 = 2a_x\\Delta x$."},
|
||||
{sec:"p13",html:"Угловая скорость $\\omega = 2\\pi/T = 2\\pi\\nu$ (рад/с). Связь с линейной: $v = \\omega R$."},
|
||||
{sec:"p14",html:"Центростремит. ускорение: $a_n = v^2/R = \\omega^2 R$. Направлено к центру окружности."},
|
||||
{sec:"final1",html:"Финал главы 1 — интегрированные задачи по §§1–14. В разработке (Phase 1+)."}
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user