'use strict'; // Lab simulation initializers — extracted from lab.html // Depends on engine files in /js/labs/ and shared globals from lab.html /* ════════════════════════════════ GRAPH SIMULATOR ════════════════════════════════ */ var FN_COLORS = ['#9B5DE5', '#06D6E0', '#F15BB5']; var gSim = null; var pSim = null; var cSim = null; var tSim = null; var mSim = null; var gasSim = null; var brownSim = null; var statesSim = null; var diffSim = null; var rdxSim = null; var ioxSim = null; var chemSandSim = null; var cellDivSim = null; var photosynSim = null; var quadSim = null; var eqSim = null; var lensSim = null; var titrSim = null; var refrSim = null; var probSim = null; var bohrSim = null; var elecSim = null; var wavesSim = null; var geomSim = null; var ALL_SIM_BODIES = ['sim-graph','sim-proj','sim-coll','sim-tri','sim-trigcircle','sim-mag', 'sim-molphys', 'sim-coulomb','sim-circuit','sim-chemistry','sim-dynamics', 'sim-crystal','sim-orbitals','sim-stereo','sim-chemsandbox', 'sim-celldivision','sim-photosynthesis','sim-angrybirds', 'sim-quadratic','sim-normaldist','sim-graphtransform', 'sim-pendulum','sim-equilibrium','sim-thinlens','sim-titration', 'sim-refraction','sim-mirrors','sim-isoprocess','sim-probability','sim-bohratom','sim-electrolysis', 'sim-waves','sim-hydro','sim-geometry']; var ALL_CTRL_BARS = ['ctrl-graph','ctrl-proj','ctrl-coll','ctrl-tri','ctrl-trigcircle','ctrl-mag', 'ctrl-molphys', 'ctrl-coulomb','ctrl-circuit','ctrl-chemistry','ctrl-dynamics','ctrl-chemsandbox', 'ctrl-celldivision','ctrl-photosynthesis','ctrl-angrybirds','ctrl-waves','ctrl-hydro', 'ctrl-geometry']; /* ── sim routing ── */ function openSim(id) { if (_disabledSimIds.has(id.split(':')[0])) return; document.getElementById('lab-home').style.display = 'none'; document.getElementById('lab-sim').classList.add('open'); // hide all inner bodies + controls ALL_SIM_BODIES.forEach(bid => document.getElementById(bid).style.display = 'none'); ALL_CTRL_BARS.forEach(bid => document.getElementById(bid).style.display = 'none'); // load theory for this sim loadTheory(id.includes(':') ? id.split(':')[0] : id); if (id === 'graph') _openGraph(); if (id === 'projectile') _openProjectile(); if (id === 'collision') _openCollision(); if (id === 'triangle') _openTriangle(); if (id === 'trigcircle') _openTrigCircle(); if (id === 'magnetic') _openMagnetic(); if (id === 'molphys') _openMolPhys(); if (id.startsWith('molphys:')) { _openMolPhys(id.split(':')[1]); } if (id === 'coulomb') _openCoulomb(); if (id === 'circuit') _openCircuit(); if (id === 'chemistry') _openChemistry(); if (id.startsWith('chemistry:')) { _openChemistry(id.split(':')[1]); } if (id === 'dynamics') _openDynamics(); if (id.startsWith('dynamics:')) { _openDynamics(id.split(':')[1]); } if (id === 'crystal') _openCrystal(); if (id === 'orbitals') _openOrbitals(); if (id === 'stereo') _openStereo(); if (id === 'chemsandbox') _openChemSandbox(); if (id === 'celldivision') _openCellDivision(); if (id === 'photosynthesis') _openPhotosynthesis(); if (id === 'angrybirds') _openAngryBirds(); if (id === 'quadratic') _openQuadratic(); if (id === 'normaldist') _openNormalDist(); if (id === 'graphtransform') _openGraphTransform(); if (id === 'pendulum') _openPendulum(); if (id === 'equilibrium') _openEquilibrium(); if (id === 'thinlens') _openThinLens(); if (id === 'mirrors') _openMirror(); if (id === 'isoprocess') _openIsoprocess(); if (id === 'titration') _openTitration(); if (id === 'refraction') _openRefraction(); if (id === 'probability') _openProbability(); if (id === 'bohratom') _openBohrAtom(); if (id === 'electrolysis') _openElectrolysis(); if (id === 'waves') _openWaves(); if (id === 'hydrostatics') _openHydro(); if (id.startsWith('hydrostatics:')) _openHydro(id.split(':')[1]); if (id === 'geometry') _openGeometry(); } function _simShow(elId) { // restore display:flex (overrides the display:none set above) document.getElementById(elId).style.display = 'flex'; } /* ── Touch-to-mouse bridge + ResizeObserver for canvas simulations ── */ function _addTouchSupport(canvas, sim) { let _tx0 = 0, _ty0 = 0, _tyLast = 0, _isScroll = false; function _syn(t) { return { clientX: t.clientX, clientY: t.clientY, button: 0 }; } canvas.addEventListener('touchstart', function(e) { e.preventDefault(); const t = e.changedTouches[0]; _tx0 = t.clientX; _ty0 = t.clientY; _tyLast = t.clientY; _isScroll = false; if (sim.handleMouseDown) sim.handleMouseDown(_syn(t)); // if no drag started (touched empty area), treat as scroll gesture if (!sim._drag) _isScroll = true; }, { passive: false }); canvas.addEventListener('touchmove', function(e) { e.preventDefault(); const t = e.changedTouches[0]; if (_isScroll && sim.handleWheel) { const dy = _tyLast - t.clientY; sim.handleWheel({ clientY: t.clientY, deltaY: dy * 2, preventDefault: function(){} }); } else if (sim.handleMouseMove) { sim.handleMouseMove(_syn(t)); } _tyLast = t.clientY; }, { passive: false }); canvas.addEventListener('touchend', function(e) { e.preventDefault(); const t = e.changedTouches[0]; const dist = Math.hypot(t.clientX - _tx0, t.clientY - _ty0); if (sim.handleMouseUp) sim.handleMouseUp(_syn(t)); if (dist < 10 && sim.handleClick) sim.handleClick(_syn(t)); _isScroll = false; }, { passive: false }); canvas.addEventListener('touchcancel', function(e) { if (e.changedTouches[0] && sim.handleMouseUp) sim.handleMouseUp(_syn(e.changedTouches[0])); _isScroll = false; }, { passive: false }); // ResizeObserver: refit canvas on orientation change / resize if (window.ResizeObserver && sim.fit) { const ro = new ResizeObserver(function() { sim.fit(); if (sim.draw) sim.draw(); }); ro.observe(canvas.parentElement || canvas); } } function closeSim() { if (pSim) pSim.pause(); if (cSim) cSim.pause(); if (mSim && mSim.particleOn) mSim.toggleParticle(); if (gasSim) gasSim.stop(); if (brownSim) brownSim.stop(); if (statesSim) statesSim.stop(); if (diffSim) diffSim.stop(); if (cirSim) cirSim.destroy(); if (reacSim) reacSim.stop(); if (flaskSim) flaskSim.stop(); if (rdxSim) rdxSim.stop(); if (ioxSim) ioxSim.stop(); if (newtonSim) newtonSim.stop(); if (sandboxSim) sandboxSim.destroy(); if (crystalSim) crystalSim.stop(); if (orbitalsSim) orbitalsSim.stop(); if (stereoSim) stereoSim.stop(); if (chemSandSim) chemSandSim.stop(); if (cellDivSim) cellDivSim.stop(); if (photosynSim) photosynSim.stop(); if (angryBirdsSim) angryBirdsSim.stop(); if (trigSim) trigSim.stop(); if (pendSim) pendSim.stop(); if (eqSim) eqSim.stop(); if (titrSim) titrSim.stop(); if (probSim) probSim.stop(); if (bohrSim) bohrSim.stop(); if (elecSim) elecSim.stop(); if (wavesSim) wavesSim.stop(); // tSim, csSim, quadSim, ndSim, gtSim, lensSim, refrSim have no animation loops — nothing to stop document.getElementById('stereo-stats').style.display = 'none'; document.getElementById('lab-sim').classList.remove('open'); document.getElementById('lab-home').style.display = ''; // close theory panel _theoryOpen = false; document.getElementById('theory-panel').classList.remove('open'); if (window.lucide) lucide.createIcons(); } /* ── graph ── */ /* ── theory panel ── */ const THEORY = { graph: { title: 'График функции', sections: [ { head: 'Линейная функция', formula: 'y = kx + b', text: 'k — угловой коэффициент (наклон), b — свободный член (сдвиг по оси Y).' }, { head: 'Квадратичная функция', formula: 'y = ax^2 + bx + c', text: 'Парабола. Ветви вверх при a>0, вниз при a<0. Вершина: x = -b/(2a).' }, { head: 'Тригонометрия', formula: 'y = A\\sin(\\omega x + \\varphi)', vars: [['A','амплитуда'],['ω','частота'],['φ','начальная фаза']] }, ] }, projectile: { title: 'Бросок тела', sections: [ { head: 'Координаты', formula: 'x = v_0 \\cos\\alpha \\cdot t', text: '' }, { formula: 'y = h_0 + v_0 \\sin\\alpha \\cdot t - \\frac{g t^2}{2}' }, { head: 'Дальность', formula: 'L = \\frac{v_0^2 \\sin 2\\alpha}{g}', text: 'Максимальная дальность при α = 45° (без воздуха).' }, { head: 'Макс. высота', formula: 'H = h_0 + \\frac{v_0^2 \\sin^2\\alpha}{2g}' }, { head: 'Сила сопротивления', formula: 'F_{drag} = \\frac{1}{2} C_d \\rho A v^2', vars: [['Cd','коэф. лобового сопротивления'],['ρ','плотность воздуха, 1.225 кг/м³'],['A','площадь сечения'],['v','скорость']] }, { text: 'С воздухом траектория асимметрична: снижение дальности, более крутой спуск.' }, { head: 'Переменные', vars: [['v₀','начальная скорость, м/с'],['α','угол броска'],['h₀','начальная высота, м'],['g','ускорение свободного падения, 9.81 м/с²']] }, ] }, collision: { title: 'Столкновение шаров', sections: [ { head: 'Закон сохранения импульса', formula: 'm_1 v_1 + m_2 v_2 = m_1 v_1\' + m_2 v_2\'' }, { head: 'Закон сохранения энергии (упругий)', formula: '\\frac{m_1 v_1^2}{2} + \\frac{m_2 v_2^2}{2} = \\frac{m_1 v_1\'^2}{2} + \\frac{m_2 v_2\'^2}{2}' }, { head: 'Коэффициент восстановления', formula: 'e = \\frac{v_2\' - v_1\'}{v_1 - v_2}', text: 'e=1 — упругий, e=0 — абсолютно неупругий удар.' }, ] }, magnetic: { title: 'Магнитное поле', sections: [ { head: 'Поле прямого тока', formula: 'B = \\frac{\\mu_0 I}{2\\pi r}', vars: [['μ₀','4π·10⁻⁷ Тл·м/А'],['I','сила тока, А'],['r','расстояние от провода, м']] }, { head: 'Суперпозиция', formula: '\\vec{B} = \\sum_i \\vec{B}_i', text: 'Результирующее поле — векторная сумма полей всех проводов.' }, { head: 'Сила Лоренца', formula: '\\vec{F} = q\\vec{v} \\times \\vec{B}', text: 'Заряженная частица движется по окружности в однородном поле.' }, ] }, coulomb: { title: 'Закон Кулона', sections: [ { head: 'Сила взаимодействия', formula: 'F = k \\frac{|q_1 q_2|}{r^2}', vars: [['k','8.99·10⁹ Н·м²/Кл²'],['q','заряд, Кл'],['r','расстояние, м']] }, { head: 'Напряжённость поля', formula: '\\vec{E} = k \\frac{q}{r^2} \\hat{r}', text: 'Вектор направлен от «+» и к «−» заряду.' }, { head: 'Потенциал', formula: '\\varphi = k \\frac{q}{r}', text: 'Эквипотенциальные линии — окружности вокруг заряда.' }, ] }, circuit: { title: 'Электрические цепи', sections: [ { head: 'Закон Ома', formula: 'I = \\frac{U}{R}', vars: [['I','ток, А'],['U','напряжение, В'],['R','сопротивление, Ом']] }, { head: 'Последовательное', formula: 'R_{\\Sigma} = R_1 + R_2 + \\ldots' }, { head: 'Параллельное', formula: '\\frac{1}{R_{\\Sigma}} = \\frac{1}{R_1} + \\frac{1}{R_2} + \\ldots' }, { head: 'Закон Кирхгофа (токи)', formula: '\\sum I_{вх} = \\sum I_{вых}', text: 'Алгебраическая сумма токов в узле равна нулю.' }, { head: 'Ёмкость конденсатора', formula: 'Q = CU', vars: [['C','ёмкость, Ф'],['Q','заряд, Кл']] }, ] }, dynamics: { title: 'Динамика', sections: [ { head: 'I закон Ньютона (инерция)', text: 'Тело сохраняет состояние покоя или прямолинейного движения, пока на него не действуют внешние силы.' }, { head: 'II закон Ньютона', formula: '\\vec{F} = m\\vec{a}', text: 'Ускорение тела прямо пропорционально силе и обратно пропорционально массе.' }, { head: 'III закон Ньютона', formula: '\\vec{F}_{12} = -\\vec{F}_{21}', text: 'Тела действуют друг на друга с силами, равными по модулю и противоположными по направлению.' }, { head: 'Импульс', formula: '\\vec{p} = m\\vec{v}', text: 'Закон сохранения: суммарный импульс замкнутой системы постоянен.' }, { head: 'Сила трения', formula: 'F_{\\text{тр}} = \\mu N', text: 'Направлена против движения. N — сила нормальной реакции опоры.' }, { head: 'Кинетическая энергия', formula: 'E_к = \\frac{1}{2}mv^2', text: 'Энергия движущегося тела.' }, { head: 'Потенциальная энергия', formula: 'E_п = mgh', text: 'Энергия тела в поле тяжести относительно опоры.' }, { head: 'Закон сохранения энергии', formula: 'E_к + E_п + Q = \\text{const}', text: 'Полная энергия системы сохраняется. Q — потери на трение и неупругие удары.' }, { head: 'Наклонная плоскость', formula: 'a = g(\\sin\\alpha - \\mu\\cos\\alpha)', text: 'Тело скользит вниз, если mg·sinα > μ·mg·cosα. Иначе трение удерживает.' }, { head: 'Разложение сил на горке', formula: 'F_{\\parallel} = mg\\sin\\alpha,\\quad N = mg\\cos\\alpha', text: 'Сила тяжести раскладывается на составляющую вдоль склона и нормальную.' }, ] }, triangle: { title: 'Геометрия треугольника', sections: [ { head: 'Медиана', text: 'Отрезок от вершины до середины противоположной стороны. Три медианы пересекаются в центроиде (делят друг друга 2:1).' }, { head: 'Высота', text: 'Перпендикуляр из вершины к противоположной стороне. Пересечение — ортоцентр.' }, { head: 'Описанная окружность', formula: 'R = \\frac{abc}{4S}', text: 'Проходит через все три вершины. Центр — пересечение серединных перпендикуляров.' }, { head: 'Вписанная окружность', formula: 'r = \\frac{S}{p}', vars: [['S','площадь'],['p','полупериметр']] }, { head: 'Теорема синусов', formula: '\\frac{a}{\\sin A} = \\frac{b}{\\sin B} = \\frac{c}{\\sin C} = 2R', text: 'Отношение стороны к синусу противолежащего угла одинаково и равно диаметру описанной окружности.' }, { head: 'Теорема косинусов', formula: 'c^2 = a^2 + b^2 - 2ab\\cos C', text: 'Обобщение теоремы Пифагора на произвольный треугольник.' }, { head: 'Теорема Пифагора', formula: 'a^2 + b^2 = c^2', text: 'В прямоугольном треугольнике квадрат гипотенузы равен сумме квадратов катетов.' }, ] }, molphys: { title: 'Молекулярная физика', sections: [ { head: 'Уравнение состояния', formula: 'PV = nRT', vars: [['P','давление, Па'],['V','объём, м³'],['n','количество вещества, моль'],['R','8.314 Дж/(моль·К)'],['T','температура, К']] }, { head: 'Средняя кинетическая энергия', formula: '\\langle E_к \\rangle = \\frac{3}{2} k_B T', text: 'kB = 1.38·10⁻²³ Дж/К — постоянная Больцмана.' }, { head: 'Распределение Максвелла', text: 'С ростом T максимум кривой распределения скоростей сдвигается вправо и уширяется.' }, { head: 'Среднеквадратичное смещение', formula: '\\langle r^2 \\rangle = 2dDt', vars: [['d','размерность (2 для 2D)'],['D','коэф. диффузии'],['t','время']] }, { head: 'Формула Эйнштейна', formula: 'D = \\frac{k_B T}{6\\pi \\eta R}', vars: [['η','вязкость среды'],['R','радиус частицы']] }, { head: 'Потенциал Леннарда-Джонса', formula: 'U(r) = 4\\varepsilon \\left[\\left(\\frac{\\sigma}{r}\\right)^{12} - \\left(\\frac{\\sigma}{r}\\right)^{6}\\right]', text: 'ε — глубина ямы, σ — эффективный размер частицы.' }, { head: 'Фазовые переходы', text: 'При повышении T: кристалл жидкость (плавление) газ (испарение). Обратно — конденсация, кристаллизация.' }, { head: 'Закон Фика', formula: 'J = -D \\frac{\\partial c}{\\partial x}', vars: [['J','поток вещества'],['D','коэф. диффузии'],['c','концентрация']] }, { head: 'Энтропия', formula: 'S = k_B \\ln W', text: 'Смешивание газов — необратимый процесс, энтропия растёт.' }, ] }, chemistry: { title: 'Химические реакции', sections: [ { head: 'Закон действующих масс', formula: 'v = k [A]^a [B]^b', vars: [['k','константа скорости'],['[A],[B]','концентрации'],['a,b','порядки реакции']] }, { head: 'Уравнение Аррениуса', formula: 'k = A \\cdot e^{-E_a / RT}', vars: [['Eₐ','энергия активации, Дж/моль'],['A','предэкспоненциальный множитель']] }, { head: 'Реакция металл + кислота', formula: 'Zn + 2HCl \\to ZnCl_2 + H_2\\uparrow' }, { head: 'Ряд активности', text: 'Li > K > Ca > Na > Mg > Al > Zn > Fe > Ni > Sn > Pb > H₂ > Cu > Ag > Au' }, { head: 'Окисление', formula: 'Red \\to Ox + ne^-', text: 'Восстановитель отдаёт электроны, степень окисления растёт.' }, { head: 'Восстановление', formula: 'Ox + ne^- \\to Red', text: 'Окислитель принимает электроны, степень окисления падает.' }, { head: 'Электронный баланс', text: 'Число отданных e⁻ = числу принятых e⁻.' }, { head: 'Ионный обмен', text: 'Реакция идёт до конца, если образуется: осадок (), газ () или слабый электролит (H₂O).' }, { head: 'Полное ионное уравнение', text: 'Все сильные электролиты записываются в виде ионов. Краткое — без ионов-наблюдателей.' }, ] }, crystal: { title: 'Кристаллическая решётка', sections: [ { head: 'Ионная решётка (NaCl)', text: 'В узлах — катионы Na⁺ и анионы Cl⁻. Электростатическое притяжение. Высокая температура плавления.' }, { head: 'Ковалентная (алмаз)', text: 'Каждый атом C связан с четырьмя соседями sp³-гибридизацией. Самый твёрдый минерал.' }, { head: 'ОЦК (металл)', text: 'Объёмно-центрированная кубическая. 8 атомов в вершинах + 1 в центре куба. Fe, Cr, W.' }, { head: 'ГЦК (металл)', text: 'Гранецентрированная кубическая. 8 в вершинах + 6 в центрах граней. Cu, Al, Au, Ag.' }, { head: 'Координационное число', vars: [['NaCl','6'],['Алмаз','4'],['ОЦК','8'],['ГЦК','12']] }, ] }, orbitals: { title: 'Молекулярные орбитали', sections: [ { head: 's-орбиталь', text: 'Сферическая форма. Электрон с равной вероятностью находится на любом расстоянии от ядра.' }, { head: 'p-орбитали', text: 'Три гантелеобразные орбитали (px, py, pz) взаимно перпендикулярны. В каждой — до 2 электронов.' }, { head: 'd-орбитали', text: 'Пять орбиталей сложной формы (четырёхлепестковые и с «поясом»). Заполняются в d-элементах.' }, { head: 'σ-связь', formula: '\\psi_{\\sigma} = c_1 \\psi_A + c_2 \\psi_B', text: 'Перекрывание орбиталей вдоль линии связи. H₂ — простейший пример.' }, { head: 'Молекула H₂O', text: 'Угол связи 104.5°. Кислород: 2 связывающие пары (O-H) и 2 неподелённые пары.' }, ] }, stereo: { title: 'Стереометрия', sections: [ { head: 'Куб', formula: 'V = a^3,\\; S = 6a^2', text: 'Все грани — квадраты, все рёбра равны. Диагональ: d = a√3.' }, { head: 'Параллелепипед', formula: 'V = abc,\\; S = 2(ab+bc+ac)', text: 'Три измерения a, b, c. Диагональ: d = √(a²+b²+c²).' }, { head: 'Пирамида', formula: 'V = \\frac{1}{3} S_{\\text{осн}} \\cdot h', text: 'Объём — треть произведения площади основания на высоту.' }, { head: 'Тетраэдр', formula: 'V = \\frac{a^3\\sqrt{2}}{12}', text: 'Правильный тетраэдр: все 4 грани — равносторонние треугольники.' }, { head: 'Цилиндр', formula: 'V = \\pi r^2 h,\\; S_{\\text{бок}} = 2\\pi r h', text: 'Боковая поверхность при развёртке — прямоугольник.' }, { head: 'Конус', formula: 'V = \\frac{1}{3}\\pi r^2 h,\\; l = \\sqrt{r^2+h^2}', text: 'l — образующая. Боковая поверхность: πrl.' }, { head: 'Сечение', text: 'Плоскость пересекает тело, образуя многоугольник. Площадь сечения зависит от положения секущей плоскости.' }, { head: 'Сфера', formula: 'V = \\frac{4}{3}\\pi R^3,\\; S = 4\\pi R^2', text: 'Вписанная сфера касается всех граней, описанная проходит через все вершины.' }, ] }, pendulum: { title: 'Маятник', sections: [ { head: 'Уравнение движения', formula: '\\ddot{\\theta} = -\\frac{g}{L}\\sin\\theta', text: 'Нелинейное уравнение. Для малых углов sin θ ≈ θ — гармонические колебания.' }, { head: 'Период (малые θ)', formula: 'T = 2\\pi\\sqrt{\\frac{L}{g}}', text: 'Не зависит от амплитуды и массы (при малых углах).' }, { head: 'Кинетическая энергия', formula: 'E_к = \\frac{1}{2}mL^2\\dot{\\theta}^2', text: 'Максимальна в нижней точке.' }, { head: 'Потенциальная энергия', formula: 'E_п = mgL(1 - \\cos\\theta)', text: 'Максимальна в крайних точках.' }, { head: 'Затухание', formula: '\\ddot{\\theta} = -\\frac{g}{L}\\sin\\theta - \\gamma\\dot{\\theta}', text: 'γ — коэффициент затухания. Амплитуда экспоненциально убывает.' }, ] }, graphtransform: { title: 'Трансформации графиков', sections: [ { head: 'Вертикальное растяжение', formula: 'y = a \\cdot f(x)', text: '|a| > 1 — растяжение, 0 < |a| < 1 — сжатие по вертикали. a < 0 — отражение относительно оси x.' }, { head: 'Горизонтальное сжатие', formula: 'y = f(kx)', text: '|k| > 1 — сжатие, 0 < |k| < 1 — растяжение по горизонтали. k < 0 — отражение относительно оси y.' }, { head: 'Горизонтальный сдвиг', formula: 'y = f(x + b)', text: 'b > 0 — сдвиг влево, b < 0 — сдвиг вправо. Противоинтуитивно: знак b противоположен направлению сдвига.' }, { head: 'Вертикальный сдвиг', formula: 'y = f(x) + c', text: 'c > 0 — сдвиг вверх, c < 0 — сдвиг вниз.' }, { head: 'Общая формула', formula: 'y = a \\cdot f(k(x - x_0)) + y_0', text: 'Порядок преобразований: сначала горизонтальные (внутри аргумента), затем вертикальные (снаружи).' }, ] }, normaldist: { title: 'Нормальное распределение', sections: [ { head: 'Плотность', formula: 'f(x) = \\frac{1}{\\sigma\\sqrt{2\\pi}} e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}', vars: [['μ','математическое ожидание'],['σ','стандартное отклонение']] }, { head: 'Правило трёх сигм', text: '68.27% значений лежат в μ ± 1σ, 95.45% в μ ± 2σ, 99.73% в μ ± 3σ.' }, { head: 'Z-оценка', formula: 'z = \\frac{x - \\mu}{\\sigma}', text: 'Стандартизованное отклонение от среднего. Z = 0 в точке μ.' }, { head: 'Дисперсия', formula: 'D = \\sigma^2 = \\frac{1}{n}\\sum(x_i - \\mu)^2' }, { head: 'Свойства', text: 'Симметрична относительно μ. Площадь под всей кривой = 1. Максимум в точке x = μ.' }, ] }, quadratic: { title: 'Квадратное уравнение', sections: [ { head: 'Общий вид', formula: 'ax^2 + bx + c = 0', text: 'a ≠ 0 — старший коэффициент, b — средний, c — свободный член.' }, { head: 'Дискриминант', formula: 'D = b^2 - 4ac', text: 'D > 0 — два корня, D = 0 — один корень, D < 0 — нет действительных корней.' }, { head: 'Формула корней', formula: 'x_{1,2} = \\frac{-b \\pm \\sqrt{D}}{2a}' }, { head: 'Теорема Виета', formula: 'x_1 + x_2 = -\\frac{b}{a},\\quad x_1 \\cdot x_2 = \\frac{c}{a}' }, { head: 'Вершина параболы', formula: 'x_в = -\\frac{b}{2a},\\quad y_в = -\\frac{D}{4a}', text: 'При a > 0 — минимум, при a < 0 — максимум.' }, { head: 'Ось симметрии', formula: 'x = -\\frac{b}{2a}', text: 'Парабола симметрична относительно вертикальной прямой через вершину.' }, ] }, trigcircle: { title: 'Тригонометрическая окружность', sections: [ { head: 'Единичная окружность', formula: 'x^2 + y^2 = 1', text: 'Окружность радиуса 1 с центром в начале координат. Точка на окружности: (cos α, sin α).' }, { head: 'Синус и косинус', formula: '\\sin\\alpha = y,\\quad \\cos\\alpha = x', text: 'Синус — ордината, косинус — абсцисса точки на единичной окружности.' }, { head: 'Тангенс и котангенс', formula: '\\tan\\alpha = \\frac{\\sin\\alpha}{\\cos\\alpha},\\quad \\cot\\alpha = \\frac{\\cos\\alpha}{\\sin\\alpha}' }, { head: 'Основное тождество', formula: '\\sin^2\\alpha + \\cos^2\\alpha = 1' }, { head: 'Формулы приведения', text: 'sin(π−α) = sin α, cos(π−α) = −cos α. Функция «меняется» при π/2 ± α, «не меняется» при π ± α.' }, { head: 'Чётность', text: 'cos(−α) = cos α (чётная), sin(−α) = −sin α (нечётная), tan(−α) = −tan α (нечётная).' }, { head: 'Период', formula: 'T_{\\sin,\\cos} = 2\\pi,\\quad T_{\\tan,\\cot} = \\pi' }, ] }, celldivision: { title: 'Деление клетки', sections: [ { head: 'Клеточный цикл', text: 'G₁ S (репликация ДНК) G₂ M (митоз). Интерфаза = G₁ + S + G₂ — подготовка к делению.' }, { head: 'Митоз', text: 'Профаза Метафаза Анафаза Телофаза. Результат: 2 дочерние клетки с идентичным набором хромосом (2n).' }, { head: 'Профаза', text: 'Хромосомы конденсируются, ядерная оболочка разрушается, формируется веретено деления.' }, { head: 'Метафаза', text: 'Хромосомы выстраиваются в экваториальной плоскости. Кинетохоры присоединяются к нитям веретена.' }, { head: 'Анафаза', text: 'Центромеры делятся, хроматиды расходятся к полюсам клетки.' }, { head: 'Мейоз', text: 'Два последовательных деления. Результат: 4 гаплоидные клетки (n). Кроссинговер обеспечивает генетическое разнообразие.' }, { head: 'Формула', formula: '2n \\xrightarrow{\\text{мейоз I}} n \\xrightarrow{\\text{мейоз II}} n', text: 'Первое деление — редукционное (уменьшение числа хромосом вдвое).' }, ] }, photosynthesis: { title: 'Фотосинтез и дыхание', sections: [ { head: 'Суммарное уравнение', formula: '6CO_2 + 6H_2O \\xrightarrow{h\\nu} C_6H_{12}O_6 + 6O_2' }, { head: 'Световая фаза', text: 'Происходит в тилакоидах. Фотосистемы I и II поглощают свет, расщепляют воду (фотолиз), выделяют O₂. Образуются АТФ и НАДФН.' }, { head: 'Темновая фаза (цикл Кальвина)', text: 'В строме хлоропласта. CO₂ фиксируется ферментом РуБисКО. АТФ и НАДФН восстанавливают C₃ до Г3Ф глюкоза.' }, { head: 'Клеточное дыхание', formula: 'C_6H_{12}O_6 + 6O_2 \\to 6CO_2 + 6H_2O + 38\\text{АТФ}' }, { head: 'Гликолиз', text: 'Цитоплазма. Глюкоза 2 пирувата + 2 АТФ + 2 НАДН. Анаэробный процесс.' }, { head: 'Цикл Кребса', text: 'Матрикс митохондрий. Ацетил-КоА CO₂ + НАДН + ФАДН₂ + ГТФ.' }, { head: 'Окислительное фосфорилирование', text: 'Электрон-транспортная цепь на внутренней мембране митохондрий. Основной выход АТФ (~34).' }, ] }, chemsandbox: { title: 'Химическая песочница', sections: [ { head: 'Реакция нейтрализации', formula: '\\text{Кислота} + \\text{Основание} \\to \\text{Соль} + H_2O', text: 'Экзотермическая реакция. pH раствора стремится к 7.' }, { head: 'Осадок ()', text: 'Нерастворимое вещество выпадает из раствора. Правила растворимости: все нитраты растворимы, хлориды — кроме AgCl, PbCl₂.' }, { head: 'Газовыделение ()', text: 'Признак реакции: карбонаты + кислота CO₂, активные металлы + кислота H₂.' }, { head: 'Ряд активности металлов', text: 'Li K Ca Na Mg Al Zn Fe Ni Sn Pb (H₂) Cu Hg Ag Pt Au. Металл вытесняет из раствора все металлы правее него.' }, { head: 'Индикаторы', text: 'Фенолфталеин: бесцветный малиновый в щёлочи. Лакмус: красный в кислоте, синий в щёлочи.' }, ] }, angrybirds: { title: 'Физика полёта', sections: [ { head: 'Баллистическая траектория', formula: 'y = x\\tan\\alpha - \\frac{gx^2}{2v_0^2\\cos^2\\alpha}', text: 'Параболическая траектория без сопротивления воздуха.' }, { head: 'Дальность полёта', formula: 'L = \\frac{v_0^2 \\sin 2\\alpha}{g}', text: 'Максимум при α = 45°.' }, { head: 'Импульс', formula: '\\vec{p} = m\\vec{v}', text: 'При ударе передаётся импульс. Чем больше масса и скорость, тем сильнее удар.' }, { head: 'Кинетическая энергия', formula: 'E_к = \\frac{1}{2}mv^2', text: 'Энергия разрушения зависит от скорости в момент столкновения.' }, { head: 'Сопротивление воздуха', formula: 'F_{\\text{drag}} = \\frac{1}{2}C_d \\rho A v^2', text: 'Снижает дальность полёта. Ветер изменяет горизонтальную составляющую.' }, ] }, equilibrium: { title: 'Химическое равновесие', sections: [ { head: 'Закон действующих масс', formula: 'K_{eq} = \\frac{[C]^c[D]^d}{[A]^a[B]^b}', text: 'Константа равновесия — отношение произведений концентраций продуктов к реагентам.' }, { head: 'Коэффициент реакции', formula: 'Q = \\frac{[C][D]}{[A][B]}', text: 'Q < Keq — реакция идёт вправо, Q > Keq — влево, Q = Keq — равновесие.' }, { head: 'Принцип Ле Шателье', text: 'Если внешнее воздействие выводит систему из равновесия, система смещается так, чтобы ослабить это воздействие.' }, { head: 'Влияние температуры', text: 'Повышение T сдвигает равновесие в сторону эндотермической реакции. Понижение — в сторону экзотермической.' }, { head: 'Энергия активации', formula: 'k = A \\cdot e^{-E_a / RT}', text: 'Уравнение Аррениуса. Чем ниже Ea, тем быстрее реакция.' }, ] }, thinlens: { title: 'Тонкая линза', sections: [ { head: 'Формула тонкой линзы', formula: '\\frac{1}{f} = \\frac{1}{d} + \\frac{1}{d\'}', vars: [['f','фокусное расстояние'],['d','расстояние до предмета'],["d'",'расстояние до изображения']] }, { head: 'Увеличение', formula: 'M = -\\frac{d\'}{d} = \\frac{h\'}{h}', text: '|M| > 1 — увеличенное, |M| < 1 — уменьшенное. M < 0 — перевёрнутое.' }, { head: 'Собирающая линза (f > 0)', text: 'd > 2f — уменьшенное действительное. d = 2f — равное. f < d < 2f — увеличенное действительное. d < f — увеличенное мнимое.' }, { head: 'Рассеивающая линза (f < 0)', text: 'Всегда даёт уменьшенное мнимое прямое изображение.' }, { head: 'Оптическая сила', formula: 'D = \\frac{1}{f}\\text{ (дптр)}', text: 'Измеряется в диоптриях. D > 0 — собирающая, D < 0 — рассеивающая.' }, ] }, titration: { title: 'Титрование и pH', sections: [ { head: 'Водородный показатель', formula: 'pH = -\\lg[H^+]', text: 'pH < 7 — кислая среда, pH = 7 — нейтральная, pH > 7 — щелочная.' }, { head: 'Сильная кислота + сильное основание', formula: 'HCl + NaOH \\to NaCl + H_2O', text: 'Точка эквивалентности при pH = 7. Резкий скачок pH вблизи неё.' }, { head: 'Слабая кислота', formula: 'pH = pK_a + \\lg\\frac{[A^-]}{[HA]}', text: 'Уравнение Хендерсона — Хассельбальха. В точке полунейтрализации pH = pKa.' }, { head: 'Точка эквивалентности', formula: 'V_{экв} = \\frac{C_к \\cdot V_к}{C_о}', text: 'Объём основания, при котором кислота полностью нейтрализована.' }, { head: 'Индикаторы', text: 'Фенолфталеин: бесцветный малиновый (pH 8.2–10). Метилоранж: красный жёлтый (pH 3.1–4.4). Лакмус: красный синий (pH 5–8).' }, ] }, isoprocess: { title: 'Изопроцессы', sections: [ { head: 'Уравнение состояния', formula: 'PV = nRT', vars: [['P','давление (Па)'],['V','объём (м³)'],['T','температура (К)'],['n','количество вещества'],['R','8.314 Дж/(моль·К)']] }, { head: 'Изотермический (T=const)', formula: 'P_1V_1 = P_2V_2', text: 'Закон Бойля — Мариотта. ΔU = 0. Работа W = nRT·ln(V₂/V₁) = Q.' }, { head: 'Изохорный (V=const)', formula: '\\frac{P_1}{T_1} = \\frac{P_2}{T_2}', text: 'Закон Гей-Люссака (второй). W = 0. Q = ΔU = νCᵥΔT.' }, { head: 'Изобарный (P=const)', formula: '\\frac{V_1}{T_1} = \\frac{V_2}{T_2}', text: 'Закон Гей-Люссака (первый). W = PΔV. Q = νCpΔT = ΔU + W.' }, { head: 'Адиабатный (Q=0)', formula: 'PV^\\gamma = \\text{const}', text: 'Показатель γ = Cp/Cv: 5/3 — одноатомный газ, 7/5 — двухатомный. Q = 0, W = −ΔU.' }, { head: 'Начало термодинамики', formula: 'Q = \\Delta U + W', text: 'Теплота, сообщённая газу, расходуется на увеличение внутренней энергии и совершение работы.' }, ] }, mirrors: { title: 'Зеркала', sections: [ { head: 'Формула зеркала', formula: '\\frac{1}{f} = \\frac{1}{d} + \\frac{1}{d\'}', vars: [['f','фокусное расстояние'],['d','расстояние от предмета до зеркала'],["d'",'расстояние до изображения']] }, { head: 'Увеличение', formula: 'M = -\\frac{d\'}{d} = \\frac{h\'}{h}', text: 'M < 0 — перевёрнутое (действительное). |M| > 1 — увеличенное, |M| < 1 — уменьшенное.' }, { head: 'Вогнутое зеркало (f > 0)', text: 'd > 2f: уменьшенное действительное. d = 2f: равное действительное. f < d < 2f: увеличенное действительное. d < f: увеличенное мнимое (прямое).' }, { head: 'Выпуклое зеркало (f < 0)', text: 'Всегда даёт уменьшенное мнимое прямое изображение. Широкий угол обзора — применяется в автомобилях и видеонаблюдении.' }, { head: 'Плоское зеркало (f = ∞)', formula: "d' = -d,\\quad M = +1", text: 'Изображение мнимое, прямое, равное предмету — расположено на таком же расстоянии за зеркалом.' }, ] }, refraction: { title: 'Преломление света', sections: [ { head: 'Закон Снеллиуса', formula: 'n_1 \\sin\\theta_1 = n_2 \\sin\\theta_2', text: 'Угол преломления зависит от соотношения показателей преломления двух сред.' }, { head: 'Показатель преломления', formula: 'n = \\frac{c}{v}', text: 'Отношение скорости света в вакууме к скорости в среде. Воздух ≈ 1, вода = 1.33, стекло ≈ 1.5, алмаз = 2.42.' }, { head: 'Полное внутреннее отражение', formula: '\\theta_c = \\arcsin\\frac{n_2}{n_1}', text: 'Возникает при переходе из оптически более плотной среды в менее плотную (n₁ > n₂) при θ > θc.' }, { head: 'Коэффициент отражения', formula: 'R = \\left(\\frac{n_1\\cos\\theta_1 - n_2\\cos\\theta_2}{n_1\\cos\\theta_1 + n_2\\cos\\theta_2}\\right)^2', text: 'Формула Френеля (s-поляризация). Определяет долю отражённой интенсивности.' }, { head: 'Дисперсия', text: 'Показатель преломления зависит от длины волны. Фиолетовый свет преломляется сильнее красного разложение белого света в спектр.' }, ] }, probability: { title: 'Теория вероятностей', sections: [ { head: 'Вероятность', formula: 'P(A) = \\frac{m}{n}', text: 'm — число благоприятных исходов, n — общее число равновозможных исходов.' }, { head: 'Закон больших чисел', text: 'При большом числе испытаний частота события стремится к его вероятности: f(A) P(A) при n ∞.' }, { head: 'Биномиальное распределение', formula: 'P(k) = C_n^k p^k (1-p)^{n-k}', text: 'Вероятность ровно k успехов в n независимых испытаниях с вероятностью p.' }, { head: 'Матожидание', formula: 'M(X) = np', text: 'Среднее число успехов в n испытаниях.' }, { head: 'Критерий χ²', formula: '\\chi^2 = \\sum\\frac{(O_i - E_i)^2}{E_i}', text: 'Мера отклонения наблюдаемых частот O от ожидаемых E. Чем меньше χ², тем лучше согласие.' }, ] }, bohratom: { title: 'Атом Бора', sections: [ { head: 'Энергия уровня', formula: 'E_n = -\\frac{13.6}{n^2}\\text{ эВ}', text: 'n = 1 — основное состояние (-13.6 эВ), n ∞ — ионизация (0 эВ).' }, { head: 'Энергия фотона', formula: '\\Delta E = |E_f - E_i| = h\\nu', text: 'При переходе электрона между уровнями излучается или поглощается фотон.' }, { head: 'Длина волны', formula: '\\lambda = \\frac{hc}{\\Delta E} = \\frac{1240}{\\Delta E\\text{ (эВ)}}\\text{ нм}' }, { head: 'Серия Лаймана', text: 'Переходы на n=1. УФ-излучение (λ < 122 нм).' }, { head: 'Серия Бальмера', text: 'Переходы на n=2. Видимый свет: Hα=656нм (красный), Hβ=486нм (голубой), Hγ=434нм (фиолетовый).' }, { head: 'Серия Пашена', text: 'Переходы на n=3. Инфракрасное излучение.' }, ] }, electrolysis: { title: 'Электролиз', sections: [ { head: 'Первый закон Фарадея', formula: 'm = \\frac{M \\cdot I \\cdot t}{n \\cdot F}', vars: [['M','молярная масса'],['I','сила тока'],['t','время'],['n','число электронов'],['F','96485 Кл/моль']] }, { head: 'Катод (−)', text: 'Восстановление: катионы принимают электроны. Cu²⁺ + 2e⁻ Cu. 2H⁺ + 2e⁻ H₂.' }, { head: 'Анод (+)', text: 'Окисление: анионы отдают электроны. 2Cl⁻ − 2e⁻ Cl₂. 2H₂O − 4e⁻ O₂ + 4H⁺.' }, { head: 'Электролит NaCl', text: 'Катод: 2H₂O + 2e⁻ H₂ + 2OH⁻. Анод: 2Cl⁻ − 2e⁻ Cl₂.' }, { head: 'Электролит CuSO₄', text: 'Катод: Cu²⁺ + 2e⁻ Cu (осадок). Анод: 2H₂O − 4e⁻ O₂ + 4H⁺.' }, ] }, waves: { title: 'Волны и звук', sections: [ { head: 'Уравнение бегущей волны', formula: 'y(x,t) = A\\sin(\\omega t - kx)', vars: [['A','амплитуда (м)'],['\\omega = 2\\pi f','циклическая частота (рад/с)'],['k = 2\\pi/\\lambda','волновое число (1/м)']] }, { head: 'Связь параметров волны', formula: 'v = \\lambda f = \\frac{\\omega}{k}', vars: [['v','фазовая скорость'],['\\lambda','длина волны'],['f','частота (Гц)'],['T = 1/f','период (с)']] }, { head: 'Стоячая волна', formula: 'y = 2A\\sin(kx)\\cos(\\omega t)', text: 'Возникает при сложении двух волн одинаковой частоты, распространяющихся навстречу. Узлы — y\u22610 всегда. Пучности — |y|=max.' }, { head: 'Гармоники струны', formula: '\\lambda_n = \\frac{2L}{n},\\quad f_n = n\\frac{v}{2L}', text: 'Для струны длиной L, закреплённой на концах: n=1 — основной тон (1 пучность), n=2,3,... — обертоны.' }, { head: 'Принцип суперпозиции', text: 'При наложении волн смещения складываются: y = y\u2081 + y\u2082. Конструктивная интерференция (\u0394\u03c6=0): A = A\u2081+A\u2082. Деструктивная (\u0394\u03c6=\u03c0): A = |A\u2081\u2212A\u2082|.' }, { head: 'Биения', text: 'Если f\u2081 \u2260 f\u2082, результирующая амплитуда периодически меняется с частотой |f\u2081\u2212f\u2082|. Применяется в акустике для настройки инструментов.' }, ] }, }; /* ══════════════════════════════════════════════ HYDROSTATICS ══════════════════════════════════════════════ */