${C.hero.h}
${C.hero.p}
// Генератор physics_9_ch{1..5}.html — Phase 0 skeleton со STUB-builder'ами. // По образцу gen_phys10_ch.js. Главы: ch1..ch4 — параграфы §1..§36, ch5 — ЛР1..ЛР12. 'use strict'; const fs = require('fs'); const path = require('path'); const TBOOKS = path.join(__dirname, '..', '..', 'frontend', 'textbooks'); // === Данные параграфов (§1..§36) === const PARA_NAMES = { p1:'Механическое движение', p2:'Относительность движения. Система отсчёта', p3:'Скалярные и векторные величины. Действия над векторами', p4:'Проекция вектора на ось', p5:'Путь и перемещение', p6:'Равномерное прямолинейное движение. Скорость', p7:'Графическое представление равномерного движения', p8:'Неравномерное движение. Средняя и мгновенная скорость', p9:'Сложение скоростей', p10:'Ускорение', p11:'Скорость при равноускоренном движении', p12:'Перемещение, координата и путь при равноускоренном движении', p13:'Линейная и угловая скорости', p14:'Ускорение точки при движении по окружности', p15:'Взаимодействие тел. Сила. ИСО. 1-й закон Ньютона', p16:'Масса', p17:'Второй закон Ньютона', p18:'Третий закон Ньютона. Принцип относительности Галилея', p19:'Деформация тел. Сила упругости. Закон Гука', p20:'Силы трения. Силы сопротивления среды', p21:'Движение тела под действием силы тяжести', p22:'Движение тела, брошенного под углом к горизонту', p23:'Закон всемирного тяготения', p24:'Вес. Невесомость и перегрузки', p25:'Условия равновесия тел. Момент силы', p26:'Простые механизмы. Рычаги. Блоки', p27:'Наклонная плоскость. «Золотое правило» механики. КПД', p28:'Центр тяжести. Виды равновесия', p29:'Закон Архимеда. Выталкивающая сила', p30:'Плавание судов. Воздухоплавание', p31:'Импульс тела. Импульс системы тел', p32:'Закон сохранения импульса. Реактивное движение', p33:'Механическая работа. Мощность', p34:'Потенциальная энергия', p35:'Кинетическая энергия. Полная энергия системы тел', p36:'Закон сохранения энергии', }; const PARA_SUBS = { p1:'материальная точка', p2:'СО · относительность', p3:'$\\vec a + \\vec b$', p4:'$a_x = a\\cos\\alpha$', p5:'$s$ vs $\\Delta\\vec r$', p6:'$\\Delta\\vec r = \\vec v t$', p7:'графики $v(t)$, $x(t)$', p8:'$\\langle v\\rangle = s/t$', p9:'$\\vec v_{1,3} = \\vec v_{1,2} + \\vec v_{2,3}$', p10:'$\\vec a = \\Delta\\vec v/\\Delta t$', p11:'$\\vec v = \\vec v_0 + \\vec a t$', p12:'$x = x_0 + v_0 t + at^2/2$', p13:'$v = \\omega R$', p14:'$a_n = v^2/R$', p15:'1-й закон Ньютона', p16:'$m_1/m_2 = a_2/a_1$', p17:'$\\vec F = m\\vec a$', p18:'$\\vec F_{12} = -\\vec F_{21}$', p19:'$F = -kx$', p20:'$F_{тр} = \\mu N$', p21:'$h = gt^2/2$', p22:'$L = v_0^2\\sin 2\\alpha/g$', p23:'$F = Gm_1m_2/r^2$', p24:'$P = m(g \\pm a)$', p25:'$M = Fl$', p26:'$F_1 l_1 = F_2 l_2$', p27:'$\\eta = A_{пол}/A_{сов}$', p28:'ЦТ · равновесие', p29:'$F_A = \\rho g V$', p30:'$\\rho_т \\le \\rho_ж$', p31:'$\\vec p = m\\vec v$', p32:'$\\sum\\vec p = \\text{const}$', p33:'$A = F\\Delta r\\cos\\alpha$', p34:'$E_п = mgh$', p35:'$E_к = mv^2/2$', p36:'$E_к + E_п = \\text{const}$', }; const PARA_WM = { p1:'движ.', p2:'СО', p3:'&vec;a', p4:'a_x', p5:'Δr', p6:'v·t', p7:'v(t)', p8:'〈v〉', p9:'v_1+v_2', p10:'a', p11:'v_0+at', p12:'at²/2', p13:'ωR', p14:'v²/R', p15:'ma=F', p16:'m', p17:'F=ma', p18:'F_12=-F_21', p19:'kx', p20:'μN', p21:'g', p22:'∂', p23:'G', p24:'P=mg', p25:'M', p26:'l_1F_1', p27:'η', p28:'ЦТ', p29:'F_A', p30:'ρ', p31:'p=mv', p32:'∑p', p33:'A', p34:'mgh', p35:'mv²/2', p36:'E=const', final1:'★', final2:'★', final3:'★', final4:'★', final5:'★', }; // === Данные ЛР1..ЛР12 (для Ch5) === const LR_NAMES = { lr1:'Определение абсолютной и относительной погрешностей прямых измерений', lr2:'Измерение ускорения при равноускоренном движении', lr3:'Изучение движения тела по окружности', lr4:'Проверка закона Гука', lr5:'Измерение коэффициента трения скольжения', lr6:'Изучение движения тела, брошенного горизонтально', lr7:'Проверка условия равновесия рычага', lr8:'Изучение неподвижного и подвижного блоков', lr9:'Изучение наклонной плоскости и измерение её КПД', lr10:'Изучение выталкивающей силы', lr11:'Проверка закона сохранения импульса', lr12:'Проверка закона сохранения механической энергии', }; const LR_SUBS = { lr1:'$\\Delta t$, $\\varepsilon_t$', lr2:'$a = 2l/t^2$', lr3:'$a_n = 4\\pi^2 R/T^2$', lr4:'$k = F/x$', lr5:'$\\mu = F_{тр}/P$', lr6:'$v_0 = l\\sqrt{g/(2h)}$', lr7:'$F_1 l_1 = F_2 l_2$', lr8:'$P h_1 = F h_2$', lr9:'$\\eta = mgh/A_{сов}$', lr10:'$F_A = F_1 - F_2$', lr11:'$m_1 l_1 = m_1 l_1\' + m_2 l_2\'$', lr12:'$F|x| = ml^2 g/(2h)$', }; const LR_WM = { lr1:'Δ', lr2:'a', lr3:'ω', lr4:'k', lr5:'μ', lr6:'v_0', lr7:'l_1F_1', lr8:'F=P/2', lr9:'η', lr10:'F_A', lr11:'∑p', lr12:'E', }; // === Главы === const CHAPTERS = { ch1: { paras: ['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10','p11','p12','p13','p14'], final: 'final1', title: 'Основы кинематики', headerSub: 'Механическое движение · векторы · путь и перемещение · равноускоренное движение · движение по окружности', hero: { h:'Кинематика — как описывать движение', p:'Раздел физики, изучающий движение тел без выяснения причин, его вызывающих. Изучаем векторы, скорость, ускорение и графики движения.' }, pri:'#2563eb', priD:'#1d4ed8', priSoft:'#dbeafe', priLight:'#60a5fa', headerGrad:'linear-gradient(110deg,#1e3a8a 0%,#2563eb 55%,#60a5fa 100%)', chNum:1, watermarkHero:'v', }, ch2: { paras: ['p15','p16','p17','p18','p19','p20','p21','p22','p23','p24'], final: 'final2', title: 'Основы динамики', headerSub: 'Законы Ньютона · масса · сила Гука · трение · гравитация · вес и невесомость', hero: { h:'Динамика — почему тела движутся', p:'Динамика выясняет причины движения: силы и массы. Три закона Ньютона, закон всемирного тяготения, силы упругости и трения.' }, pri:'#059669', priD:'#047857', priSoft:'#d1fae5', priLight:'#34d399', headerGrad:'linear-gradient(110deg,#064e3b 0%,#059669 55%,#34d399 100%)', chNum:2, watermarkHero:'F', }, ch3: { paras: ['p25','p26','p27','p28','p29','p30'], final: 'final3', title: 'Основы статики', headerSub: 'Момент силы · рычаги · блоки · наклонная плоскость · КПД · центр тяжести · закон Архимеда', hero: { h:'Статика — равновесие тел', p:'Статика изучает условия покоя тел. Момент силы, простые механизмы, центр тяжести, закон Архимеда — основа техники.' }, pri:'#7c3aed', priD:'#6d28d9', priSoft:'#ede9fe', priLight:'#a78bfa', headerGrad:'linear-gradient(110deg,#3b0764 0%,#7c3aed 55%,#a78bfa 100%)', chNum:3, watermarkHero:'M', }, ch4: { paras: ['p31','p32','p33','p34','p35','p36'], final: 'final4', title: 'Законы сохранения', headerSub: 'Импульс · реактивное движение · работа · мощность · кинетическая и потенциальная энергия · закон сохранения энергии', hero: { h:'Законы сохранения — фундамент физики', p:'Импульс и энергия сохраняются в замкнутых системах. Эти законы лежат в основе всего, от движения ракет до колебаний маятников.' }, pri:'#db2777', priD:'#be185d', priSoft:'#fce7f3', priLight:'#f472b6', headerGrad:'linear-gradient(110deg,#831843 0%,#db2777 55%,#f472b6 100%)', chNum:4, watermarkHero:'p·E', }, ch5: { paras: ['lr1','lr2','lr3','lr4','lr5','lr6','lr7','lr8','lr9','lr10','lr11','lr12'], final: 'final5', title: 'Лабораторный практикум', headerSub: '12 лабораторных работ: погрешности · ускорение · окружность · Гук · трение · бросок · рычаг · блоки · наклонная плоскость · Архимед · импульс · энергия', hero: { h:'Лабораторный практикум — физика руками', p:'12 классических лабораторных работ. Каждая: цель, оборудование, вывод формул, ход работы, таблица измерений, контрольные вопросы и суперзадание.' }, pri:'#0891b2', priD:'#0e7490', priSoft:'#cffafe', priLight:'#22d3ee', headerGrad:'linear-gradient(110deg,#164e63 0%,#0891b2 55%,#22d3ee 100%)', chNum:5, watermarkHero:'Δt', }, }; // === Краткие подсказки в боковой панели (минимальный набор; расширяется в Phase 5) === const SIDEBAR_ROWS = { p1: [['Кинематика','описывает движение без причин'],['Мат. точка','тело с пренебр. размерами'],['Поступательное','все точки движутся одинаково']], p2: [['СО','тело отсчёта + оси + часы'],['Относ.','скорость, путь, траектория'],['Земля','чаще всего тело отсчёта']], p3: [['Скаляр','число'],['Вектор','число + направление'],['$\\vec a + \\vec b$','правило треугольника / параллелограмма']], p4: [['Проекция','$a_x = a\\cos\\alpha$'],['Знак','зависит от $\\alpha$'],['Сумма','$(\\vec a + \\vec b)_x = a_x + b_x$']], p5: [['Путь','скаляр $s \\ge 0$'],['Перемещ.','вектор $\\Delta\\vec r$'],['$s \\ge |\\Delta\\vec r|$','']], p6: [['$\\vec v = \\text{const}$','равномерное'],['$\\Delta\\vec r = \\vec v t$',''],['$x = x_0 + v_x t$','координата']], p7: [['$v(t)$','прямая'],['$x(t)$','наклонная прямая'],['Площадь','под $v(t)$ = путь']], p8: [['Средняя','$\\langle v\\rangle = s/t$'],['Мгновенная','предел $\\Delta s/\\Delta t$'],['Спидометр','показывает мгн. $v$']], p9: [['$\\vec v_{1,3} = \\vec v_{1,2} + \\vec v_{2,3}$',''],['Лодка/река','$\\vec v_{л,б} = \\vec v_{л,в} + \\vec v_{в,б}$'],['По теч.','скорости складываются']], p10: [['$\\vec a = \\Delta\\vec v/\\Delta t$',''],['Ед.','м/с²'],['Знак','совпадает с $\\Delta\\vec v$']], p11: [['$\\vec v = \\vec v_0 + \\vec a t$',''],['Проекция','$v_x = v_{0x} + a_x t$'],['','']], p12: [['$\\Delta\\vec r = \\vec v_0 t + \\vec a t^2/2$',''],['$v^2 - v_0^2 = 2a_x\\Delta x$','без $t$'],['','']], p13: [['$\\omega = 2\\pi/T$',''],['$v = \\omega R$',''],['$\\omega$','рад/с']], p14: [['$a_n = v^2/R$',''],['$a_n = \\omega^2 R$',''],['К центру','направление']], p15: [['ИСО','системы, в которых выполняется 1-й закон'],['1-й Н.','$\\sum\\vec F = 0 \\Rightarrow \\vec v = \\text{const}$'],['Инерция','свойство сохранять скорость']], p16: [['Масса','мера инертности'],['$m_1/m_2 = a_2/a_1$',''],['Ед.','кг (эталон)']], p17: [['$\\vec a = \\vec F/m$',''],['$\\vec F = m\\vec a$',''],['Принцип суперп.','$\\vec F = \\sum\\vec F_i$']], p18: [['3-й Н.','$\\vec F_{12} = -\\vec F_{21}$'],['Разные тела','силы действуют на разные тела'],['Галилей','законы одинаковы во всех ИСО']], p19: [['Закон Гука','$F = -kx$'],['Жёсткость','$k$, ед. Н/м'],['Лин. упр.','при малых деформациях']], p20: [['Покоя','до начала движения'],['Скольж.','$F_{тр} = \\mu N$'],['$\\mu$','коэф. трения']], p21: [['$g \\approx 9{,}81$ м/с²',''],['$h = gt^2/2$','свободное падение'],['$v = gt$','']], p22: [['$L = v_0^2 \\sin 2\\alpha / g$','дальность'],['$H = v_0^2\\sin^2\\alpha/(2g)$','высота'],['$\\alpha = 45°$','макс. дальность']], p23: [['$F = G m_1 m_2 / r^2$',''],['$G = 6{,}67\\cdot 10^{-11}$ Н·м²/кг²',''],['$g = GM/R^2$','на поверх. Земли']], p24: [['Вес $P$','сила на опору/подвес'],['$P = m(g \\pm a)$',''],['$P = 0$','невесомость']], p25: [['$M = Fl$','момент силы'],['$\\sum\\vec F = 0$ и $\\sum M = 0$',''],['Плечо','$l$ — расст. от оси до линии действия']], p26: [['Рычаг','$F_1 l_1 = F_2 l_2$'],['Неподв. блок','без выигрыша'],['Подв. блок','выигрыш в силе в 2 раза']], p27: [['Накл. пл.','выигрыш = $l/h$'],['«Золотое правило»','выигр. в силе = проигр. в пути'],['$\\eta = A_{пол}/A_{сов}$','КПД']], p28: [['ЦТ','точка прилож. силы тяжести'],['Устойч.','ЦТ при отклонении поднимается'],['Безразл.','ЦТ не меняется']], p29: [['$F_A = \\rho g V_{погр}$',''],['Вверх','направление'],['Архимед','выталкивающая сила']], p30: [['Плав.','$\\rho_т \\le \\rho_ж$'],['Ватерлиния','граница погружения'],['Воздухопл.','подъёмная сила']], p31: [['$\\vec p = m\\vec v$','импульс тела'],['Ед.','кг·м/с'],['Сумма','$\\vec p_{сист} = \\sum \\vec p_i$']], p32: [['ЗСИ','$\\sum\\vec p_{до} = \\sum\\vec p_{после}$'],['Замкн. сист.','без внеш. сил'],['Ракета','$m_р\\vec v_р + m_г\\vec v_г = 0$']], p33: [['$A = F\\Delta r\\cos\\alpha$',''],['Ед.','Дж'],['Мощность','$P = A/\\Delta t$, Вт']], p34: [['$E_п = mgh$','тяжести'],['$E_п = kx^2/2$','упругости'],['$A = -\\Delta E_п$','']], p35: [['$E_к = mv^2/2$',''],['Теорема','$A = \\Delta E_к$'],['$E = E_к + E_п$','полная']], p36: [['ЗСЭ','$E = \\text{const}$ в замкн. консервативной сист.'],['Превращ.','один вид → другой'],['Трение','диссипация $\\to$ тепло']], // ЛР sidebars — краткие lr1: [['Цель','$\\Delta t$, $\\varepsilon_t$'],['Обор.','мерная лента, шарик, секундомер'],['Формула','$\\varepsilon_t = \\Delta t/\\langle t\\rangle \\cdot 100\\%$']], lr2: [['Цель','измерить $a$ при равноускор.'],['Обор.','жёлоб, шарик, секундомер'],['Формула','$a = 2l/t^2$']], lr3: [['Цель','$T$, $a_n$, $\\omega$, $v$'],['Обор.','штатив, нить, шарик'],['Формула','$a_n = 4\\pi^2 R/T^2$']], lr4: [['Цель','$k$ пружины'],['Обор.','штатив, динамометр, грузы'],['Формула','$k = mg/|x|$']], lr5: [['Цель','$\\mu$ дерево/дерево'],['Обор.','брусок, доска, динамометр'],['Формула','$\\mu = F_{упр}/P$']], lr6: [['Цель','$v_0$ гориз. бросок'],['Обор.','лоток, шарик, копир. бумага'],['Формула','$v_0 = l\\sqrt{g/(2h)}$']], lr7: [['Цель','правило рычага'],['Обор.','рычаг, грузы'],['Формула','$F_1 l_1 = F_2 l_2$']], lr8: [['Цель','выигр. подв. блока'],['Обор.','блоки, динамометр'],['Формула','$P h_1 = F h_2$']], lr9: [['Цель','КПД накл. плоскости'],['Обор.','доска, брусок, динамометр'],['Формула','$\\eta = mgh/(F_{упр}l)\\cdot 100\\%$']], lr10: [['Цель','$F_A$ для разных жидк.'],['Обор.','цилиндры, динамометр, вода, соль'],['Формула','$F_A = F_{упр1} - F_{упр2}$']], lr11: [['Цель','проверить ЗСИ'],['Обор.','лоток, два шара, бумага'],['Формула','$m_1 l_1 = m_1 l_1\' + m_2 l_2\'$']], lr12: [['Цель','проверить ЗСЭ'],['Обор.','лоток, шар, пружина, бумага'],['Формула','$F|x| = ml^2g/(2h)$']], }; const TIPS_HTML = { p1: 'Кинематика — раздел физики о движении без причин. Мат. точка — тело, размерами которого можно пренебречь.', p2: 'СО = тело отсчёта + система координат + часы. Скорость, путь и траектория зависят от выбора СО.', p3: 'Скаляры — число (масса, путь). Векторы — число + направление (сила, скорость). Сумма векторов: правило треугольника или параллелограмма.', p4: 'Проекция вектора $\\vec a$ на ось: $a_x = a\\cos\\alpha$. Знак зависит от угла $\\alpha$. Сумма проекций = проекция суммы.', p5: 'Путь $s$ — скаляр $\\ge 0$. Перемещение $\\Delta\\vec r$ — вектор. Всегда $s \\ge |\\Delta\\vec r|$.', p6: 'Равномерное движение: $\\vec v = \\text{const}$. $\\Delta\\vec r = \\vec v t$, координата $x = x_0 + v_x t$.', p7: 'График $v(t)$ — прямая параллельная оси $t$. График $x(t)$ — наклонная прямая. Площадь под $v(t)$ = пройденный путь.', p8: 'Средняя скорость: $\\langle v\\rangle = s/t$. Мгновенная — предел $\\Delta s/\\Delta t$ при $\\Delta t \\to 0$. Спидометр показывает мгновенную.', p9: 'Закон сложения скоростей: $\\vec v_{1,3} = \\vec v_{1,2} + \\vec v_{2,3}$. По течению — скорости складываются, против — вычитаются.', p10: 'Ускорение: $\\vec a = \\Delta\\vec v / \\Delta t$. Единица м/с². Направление совпадает с $\\Delta\\vec v$.', p11: 'При равноускоренном движении: $\\vec v = \\vec v_0 + \\vec a t$. В проекциях: $v_x = v_{0x} + a_x t$.', p12: 'Перемещение: $\\Delta\\vec r = \\vec v_0 t + \\vec a t^2/2$. Без времени: $v^2 - v_0^2 = 2a_x\\Delta x$.', p13: 'Угловая скорость $\\omega = 2\\pi/T = 2\\pi\\nu$ (рад/с). Связь с линейной: $v = \\omega R$.', p14: 'Центростремит. ускорение: $a_n = v^2/R = \\omega^2 R$. Направлено к центру окружности.', p15: 'ИСО — система, в которой выполняется 1-й закон Ньютона. В отсутствие сил тело сохраняет скорость (инерция).', p16: 'Масса — мера инертности. $m_1/m_2 = a_2/a_1$. Единица — килограмм, эталонная.', p17: '2-й закон Ньютона: $\\vec a = \\vec F/m$. Или $\\vec F = m\\vec a$. Принцип суперпозиции: $\\vec F = \\sum \\vec F_i$.', p18: '3-й закон Ньютона: $\\vec F_{12} = -\\vec F_{21}$. Силы приложены к разным телам! Принцип относ. Галилея: законы одинаковы во всех ИСО.', p19: 'Закон Гука: $F_{упр} = -kx$, где $k$ — жёсткость пружины (Н/м). Линейность только при малых деформациях.', p20: 'Сила трения скольжения: $F_{тр} = \\mu N$, где $\\mu$ — коэф. трения. Сила сопротивления среды растёт со скоростью.', p21: 'Свободное падение: $g \\approx 9{,}81$ м/с² у поверхности Земли. $h = gt^2/2$, $v = gt$.', p22: 'Тело, брошенное под углом: $L = v_0^2 \\sin 2\\alpha/g$ — дальность; $H = v_0^2\\sin^2\\alpha/(2g)$ — высота. Макс. $L$ при $\\alpha = 45°$.', p23: 'Закон всемирного тяготения: $F = G m_1 m_2/r^2$. $G = 6{,}67\\cdot 10^{-11}$ Н·м²/кг². У поверхности: $g = GM/R^2$.', p24: 'Вес $P$ — сила, с которой тело давит на опору / тянет подвес. $P = m(g \\pm a)$. При свободном падении $P = 0$ — невесомость.', p25: 'Условия равновесия: $\\sum\\vec F = 0$ И $\\sum M = 0$. Момент силы $M = F \\cdot l$, где $l$ — плечо.', p26: 'Рычаг в равновесии: $F_1 l_1 = F_2 l_2$. Неподвижный блок выигрыша не даёт. Подвижный — выигрыш в силе в 2 раза.', p27: 'Накл. плоскость: выигрыш в силе = $l/h$. «Золотое правило»: выигрываем в силе — проигрываем в пути. КПД: $\\eta = A_{пол}/A_{сов}$.', p28: 'Центр тяжести — точка приложения равнодействующей сил тяжести. Устойчивое равновесие: ЦТ при отклонении поднимается.', p29: 'Закон Архимеда: $F_A = \\rho_ж g V_{погр}$. Направлен вверх. Не зависит от глубины, формы тела или плотности тела.', p30: 'Условие плавания: $\\rho_т \\le \\rho_ж$. Подъёмная сила воздухоплавательного аппарата — разность веса вытесненного воздуха и веса аппарата.', p31: 'Импульс тела: $\\vec p = m\\vec v$ (кг·м/с). Импульс системы — сумма импульсов всех тел.', p32: 'ЗСИ: в замкнутой системе $\\sum\\vec p = \\text{const}$. Реактивное движение: $m_р\\vec v_р + m_г\\vec v_г = 0$.', p33: 'Работа силы: $A = F \\Delta r \\cos\\alpha$ (Дж). Мощность: $P = A/\\Delta t = Fv\\cos\\alpha$ (Вт).', p34: 'Потенц. энергия тяжести: $E_п = mgh$. Упругости: $E_п = kx^2/2$. Работа консерват. силы: $A = -\\Delta E_п$.', p35: 'Кинет. энергия: $E_к = mv^2/2$. Теорема: $A = \\Delta E_к$. Полная мех. энергия: $E = E_к + E_п$.', p36: 'ЗСЭ: в замкнутой консервативной системе $E_к + E_п = \\text{const}$. При трении мех. энергия превращается в тепло.', // ЛР tips lr1: 'ЛР1: погрешности прямых измерений. $\\Delta t = \\Delta t_{сист} + \\Delta t_{случ}$. Результат в интервальной форме: $t = \\langle t\\rangle \\pm \\Delta t$.', lr2: 'ЛР2: ускорение шарика по наклонному жёлобу. $a = 2l/t^2$ (из $s = at^2/2$ при $v_0 = 0$).', lr3: 'ЛР3: движение по окружности. Измеряем $T$, считаем $a_n = 4\\pi^2 R/T^2$, $\\omega = 2\\pi/T$, $v = \\omega R$.', lr4: 'ЛР4: закон Гука. Подвешиваем грузы, строим график $F_{упр}(x)$. Жёсткость $k = mg/|x|$.', lr5: 'ЛР5: коэффициент трения скольжения дерева по дереву. $\\mu = F_{упр}/P$.', lr6: 'ЛР6: тело, брошенное горизонтально. Измеряем дальность $l$ и высоту $h$. $v_0 = l\\sqrt{g/(2h)}$.', lr7: 'ЛР7: условие равновесия рычага. Проверяем $F_1 l_1 = F_2 l_2$.', lr8: 'ЛР8: блоки. Неподв. — без выигрыша; подвижный — выигрыш в силе в 2 раза, проигрыш в пути в 2 раза.', lr9: 'ЛР9: КПД наклонной плоскости. $\\eta = A_{пол}/A_{сов} = mgh/(F_{упр}l)\\cdot 100\\%$. Сравниваем при 30° и 45°.', lr10: 'ЛР10: выталкивающая сила Архимеда. $F_A = F_{упр1} - F_{упр2}$ (вес в воздухе минус вес в жидкости).', lr11: 'ЛР11: ЗСИ. Шар $m_1$ скатывается, сталкивается с покоящимся шаром $m_2$. Проверяем $m_1 l_1 = m_1 l_1\' + m_2 l_2\'$.', lr12: 'ЛР12: ЗСЭ. Сжатая пружина → шар → дальность полёта. $F_{упр}|x| = ml^2 g/(2h)$.', final1: 'Финал главы 1 — интегрированные задачи по §§1–14. В разработке (Phase 1+).', final2: 'Финал главы 2 — интегрированные задачи по §§15–24. В разработке (Phase 2+).', final3: 'Финал главы 3 — интегрированные задачи по §§25–30. В разработке (Phase 3+).', final4: 'Финал главы 4 — интегрированные задачи по §§31–36. В разработке (Phase 4+).', final5: 'Финал главы 5 — итоговый отчёт по 12 ЛР. В разработке (Phase 5+).', }; // Helper: prefix для номера секции (§ или ЛР или ★ для финала) function numLabel(pid){ if (pid.startsWith('final')) return '★'; if (pid.startsWith('lr')) return 'ЛР ' + pid.slice(2); return '§ ' + pid.slice(1); } function nameOf(pid){ if (pid.startsWith('final')) return 'Финал главы'; if (pid.startsWith('lr')) return LR_NAMES[pid]; return PARA_NAMES[pid]; } function subOf(pid){ if (pid.startsWith('final')) return ''; if (pid.startsWith('lr')) return LR_SUBS[pid] || ''; return PARA_SUBS[pid] || ''; } function wmOf(pid){ if (pid.startsWith('lr')) return LR_WM[pid] || '?'; return PARA_WM[pid] || '?'; } // === Билд одного ch === function buildCh(chKey) { const C = CHAPTERS[chKey]; const slug = 'physics-9-' + chKey; const lsPrefix = 'physics9_' + chKey; const xpKey = 'physics9_xp'; const allParas = [...C.paras, C.final]; // PARAS JS literal const parasArr = allParas.map(pid => { if (pid.startsWith('final')) { return ` { id:${JSON.stringify(pid)}, num:'\\u2605', name:'Финал главы', sub:${JSON.stringify('Итоги · боссы главы ' + C.chNum)}, final:true }`; } const sub = subOf(pid); const num = pid.startsWith('lr') ? `ЛР ${pid.slice(2)}` : `§ ${pid.slice(1)}`; return ` { id:${JSON.stringify(pid)}, num:${JSON.stringify(num)}, name:${JSON.stringify(nameOf(pid))}, sub:${JSON.stringify(sub)} }`; }).join(',\n'); const total = allParas.length; // ACH_LABELS const achLabels = [ ` start:"Начало главы ${C.chNum}!"`, ...C.paras.map(pid => ` ${pid}_done:${JSON.stringify(nameOf(pid) + ' освоен!')}`), ` ${chKey}_done:"Глава ${C.chNum} пройдена!"`, ].join(',\n'); // SIDEBARS const sidebarObj = allParas.map(pid => { const rows = pid.startsWith('final') ? [[`§§${C.paras[0].replace(/^[pl]r?/,'')}–${C.paras[C.paras.length-1].replace(/^[pl]r?/,'')}`, `теория главы ${C.chNum}`],['Награда','+50 XP']] : (SIDEBAR_ROWS[pid] || [['В разработке',`шпаргалка ${pid}`]]); const titleStr = pid.startsWith('final') ? `Финал главы ${C.chNum}` : (pid.startsWith('lr') ? `Шпаргалка ЛР ${pid.slice(2)}` : `Шпаргалка §${pid.slice(1)}`); const rowsLit = rows.map(([k,v]) => `[${JSON.stringify(k)},${JSON.stringify(v)}]`).join(','); return ` ${pid}:{title:${JSON.stringify(titleStr)},rows:[${rowsLit}]}`; }).join(',\n'); // TIPS const tipsArr = allParas.map(pid => { const html = TIPS_HTML[pid] || `Подсказка к ${pid} — в разработке.`; return ` {sec:${JSON.stringify(pid)},html:${JSON.stringify(html)}}`; }).join(',\n'); // STUB-builder для каждого const builders = allParas.map(pid => { const isFinal = pid.startsWith('final'); const isLR = pid.startsWith('lr'); const name = isFinal ? `Финал главы ${C.chNum}` : nameOf(pid); const num = isFinal ? '★' : (isLR ? `ЛР ${pid.slice(2)}` : `§${pid.slice(1)}`); const idx = allParas.indexOf(pid); const prev = idx > 0 ? allParas[idx-1] : null; const next = idx < allParas.length - 1 ? allParas[idx+1] : null; const prevStr = prev ? `'${prev}'` : 'null'; const nextStr = next ? `'${next}'` : 'null'; const bodyHtml = isLR ? `
${name} — лабораторная работа в разработке (Phase 5+).
Здесь появятся: Цель · Оборудование · Проверьте себя · Вывод расчётных формул · Ход работы · Таблица измерений · Контрольные вопросы · Суперзадание — по учебной программе.
Phase 0: создан скелет. Phase 5: наполнение ЛР пошаговой работой с интерактивной таблицей измерений.
` : `${name} — этот параграф в разработке (Phase ${C.chNum}+).
Здесь появятся: теория, формулы, разобранные примеры и 3–4 интерактива в стиле «физики 10» — векторные диаграммы, графики движения, ползунки и автопроверяемые тренажёры.
Phase 0: создан скелет. Phase 5: наполнение по учебной программе «Физика 9» (2019).
`; return `function build_${pid}(){ const box = document.getElementById('${pid}-body'); let html = ''; html += makeCard('theory', ${JSON.stringify(name)}, ${JSON.stringify(num)}, \` ${bodyHtml} \`); html += secNav(${prevStr}, ${nextStr}); html += readButton('${pid}'); box.innerHTML = html; renderMath(box); wireReadBtn('${pid}'); }`; }).join('\n\n'); const buildersMap = allParas.map(pid => `${pid}:()=>build_${pid}()`).join(', '); // sec node HTML const secNodes = allParas.map(pid => { const isFinal = pid.startsWith('final'); const isLR = pid.startsWith('lr'); const num = isFinal ? '★' : (isLR ? `ЛР ${pid.slice(2)}` : `§ ${pid.slice(1)}`); const titleHtml = isFinal ? 'Финал главы' : nameOf(pid); const wm = wmOf(pid); const numHtml = isFinal ? `★` : `${num}`; return `${C.hero.p}