7f75c96acd
Геометрия (планиметрия): - Живые измерения как объекты: длина / угол / площадь — auto-recompute, draggable chips - Инструмент ГМТ: sweep мовера через параметр, рисует кривую места точек - Новые типы точек: on_segment (скользит по отрезку, _t), on_circle (по окружности, _theta) - Toolbar: «Длина», «Угол», «Площадь», «ГМТ», «На отрезке», «На окружности» Электромагнитные поля (emfield): - Merge magnetic.js + coulomb.js в один EMFieldSim с 3 режимами (E / B / комбинированное) - Унифицированный pipeline: colormap, field lines, vectors, equipotentials, flux loop, test particle - Combined-режим: полная сила Лоренца F=q(E+v×B) - Backward compat: #coulomb и #magnetic хеши и ?sim= параметры редиректят в emfield - Удалены: magnetic.js, coulomb.js. Добавлен: emfield.js Бросок тела (projectile): - Режим целей: 3 окна, hit-детекция, HUD «Цели: N/M / Попыток: K» - Графики x(t), y(t), vx(t), vy(t) — 2×2 Canvas 2D, real-time - Двойной бросок: одновременно 2 траектории для сравнения (cyan vs gold) UI fixes (по результатам аудита): - Заменены emoji/unicode на inline SVG .ic: switch ⌇, spring 〜 (5 мест), download ⬇ (2), camera 📷 - Убраны декоративные символы ☉ ○ из geometry tool labels - Добавлены THEORY entries: geometry, hydrostatics (раньше показывали fallback) - Стандартизирована ширина panel для sim-proj и sim-coll (240px) - waves перенесён в физический блок SIMS catalog (был после биологии) - Очищен дефолтный sim-topbar-title (был «График функции») Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
583 lines
60 KiB
JavaScript
583 lines
60 KiB
JavaScript
'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-emfield',
|
||
'sim-molphys',
|
||
'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-emfield',
|
||
'ctrl-molphys',
|
||
'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') _openEMField('B'); // backward compat: #magnetic → emfield B-mode
|
||
if (id === 'coulomb') _openEMField('E'); // backward compat: #coulomb → emfield E-mode
|
||
if (id === 'emfield') _openEMField('E');
|
||
if (id.startsWith('emfield:')) { _openEMField(id.split(':')[1]); }
|
||
if (id === 'molphys') _openMolPhys();
|
||
if (id.startsWith('molphys:')) { _openMolPhys(id.split(':')[1]); }
|
||
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 — абсолютно неупругий удар.' },
|
||
]
|
||
},
|
||
emfield: {
|
||
title: 'Электромагнитные поля',
|
||
sections: [
|
||
{ head: 'Закон Кулона', formula: 'F = k \\frac{|q_1 q_2|}{r^2}', vars: [['k','8.99·10⁹ Н·м²/Кл²'],['q','заряд, Кл'],['r','расстояние, м']] },
|
||
{ head: 'Напряжённость E', formula: '\\vec{E} = k \\frac{q}{r^2} \\hat{r}', text: 'Вектор направлен от «+» и к «−» заряду.' },
|
||
{ head: 'Потенциал', formula: '\\varphi = k \\frac{q}{r}', text: 'Эквипотенциальные линии — окружности вокруг заряда.' },
|
||
{ head: 'Поле прямого тока', formula: 'B = \\frac{\\mu_0 I}{2\\pi r}', vars: [['μ₀','4π·10⁻⁷ Тл·м/А'],['I','сила тока, А'],['r','расстояние от провода, м']] },
|
||
{ head: 'Суперпозиция B', formula: '\\vec{B} = \\sum_i \\vec{B}_i', text: 'Результирующее поле — векторная сумма полей всех проводов.' },
|
||
{ head: 'Сила Лоренца', formula: '\\vec{F} = q(\\vec{E} + \\vec{v} \\times \\vec{B})', text: 'Полная электромагнитная сила на движущийся заряд.' },
|
||
{ head: 'Сила Ампера', formula: 'F = I L B \\sin\\theta', text: 'Сила на проводник с током в магнитном поле.' },
|
||
]
|
||
},
|
||
/* backward-compat aliases — loadTheory() maps these to emfield */
|
||
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: 'В прямоугольном треугольнике квадрат гипотенузы равен сумме квадратов катетов.' },
|
||
]
|
||
},
|
||
geometry: {
|
||
title: 'Планиметрия',
|
||
sections: [
|
||
{ head: 'Базовые объекты', text: 'Точка, прямая, луч, отрезок, окружность, многоугольник — основные фигуры планиметрии. Каждая прямая однозначно задаётся двумя точками.' },
|
||
{ head: 'Параллельность и перпендикулярность', text: 'Прямые параллельны, если не пересекаются. Перпендикулярны — если угол между ними 90°.' },
|
||
{ head: 'Теорема Фалеса', text: 'Если на одной из двух прямых отложить равные отрезки и провести через их концы параллельные прямые, они высекут равные отрезки и на второй прямой.' },
|
||
{ head: 'Признаки подобия треугольников', text: 'По двум углам, по двум пропорциональным сторонам и углу между ними, по трём пропорциональным сторонам.' },
|
||
{ head: 'Площадь треугольника', formula: 'S = \\frac{1}{2} a h_a', text: 'Также S = ½·a·b·sin C; формула Герона: S = √(p(p-a)(p-b)(p-c)).' },
|
||
{ head: 'Площадь параллелограмма', formula: 'S = a h_a = a b \\sin\\alpha' },
|
||
{ head: 'Длина окружности', formula: 'C = 2\\pi r', text: 'Площадь круга: S = π·r².' },
|
||
{ head: 'Геометрическое место точек (ГМТ)', text: 'Множество точек, удовлетворяющих заданному условию. Эллипс — ГМТ, сумма расстояний от которых до двух фокусов постоянна. Окружность — ГМТ, равноудалённых от центра.' },
|
||
]
|
||
},
|
||
hydrostatics: {
|
||
title: 'Гидростатика',
|
||
sections: [
|
||
{ head: 'Гидростатическое давление', formula: 'P = \\rho g h', vars: [['ρ','плотность жидкости, кг/м³'],['g','ускорение свободного падения, 9.81 м/с²'],['h','глубина под поверхностью, м']] },
|
||
{ head: 'Закон Паскаля', text: 'Давление в покоящейся жидкости передаётся одинаково во все стороны. Основа гидравлического пресса: F₁/S₁ = F₂/S₂.' },
|
||
{ head: 'Закон Архимеда', formula: 'F_A = \\rho_{ж} g V_{погр}', text: 'Сила, выталкивающая тело из жидкости, равна весу вытесненной жидкости. Условие плавания: ρ_тела ≤ ρ_жидкости.' },
|
||
{ head: 'Сообщающиеся сосуды', text: 'Уровни однородной жидкости в сообщающихся сосудах одинаковы. Для двух разных жидкостей: ρ₁·h₁ = ρ₂·h₂.' },
|
||
{ head: 'Поверхностное натяжение', formula: '\\sigma = \\frac{F}{l}', text: 'Сила, действующая по касательной к поверхности жидкости на единицу длины. Капиллярная высота: h = 2σ·cos θ / (ρ g r).' },
|
||
{ head: 'Капиллярность', 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: кристалл <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> жидкость (плавление) <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> газ (испарение). Обратно — конденсация, кристаллизация.' },
|
||
{ 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: 'Реакция идёт до конца, если образуется: осадок (<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><polyline points="19 12 12 19 5 12"/></svg>), газ (<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>) или слабый электролит (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₁ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> S (репликация ДНК) <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> G₂ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> M (митоз). Интерфаза = G₁ + S + G₂ — подготовка к делению.' },
|
||
{ head: 'Митоз', text: 'Профаза <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> Метафаза <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> Анафаза <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> Телофаза. Результат: 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Ф <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> глюкоза.' },
|
||
{ head: 'Клеточное дыхание', formula: 'C_6H_{12}O_6 + 6O_2 \\to 6CO_2 + 6H_2O + 38\\text{АТФ}' },
|
||
{ head: 'Гликолиз', text: 'Цитоплазма. Глюкоза <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 2 пирувата + 2 АТФ + 2 НАДН. Анаэробный процесс.' },
|
||
{ head: 'Цикл Кребса', text: 'Матрикс митохондрий. Ацетил-КоА <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> CO₂ + НАДН + ФАДН₂ + ГТФ.' },
|
||
{ head: 'Окислительное фосфорилирование', text: 'Электрон-транспортная цепь на внутренней мембране митохондрий. Основной выход АТФ (~34).' },
|
||
]
|
||
},
|
||
chemsandbox: {
|
||
title: 'Химическая песочница',
|
||
sections: [
|
||
{ head: 'Реакция нейтрализации', formula: '\\text{Кислота} + \\text{Основание} \\to \\text{Соль} + H_2O', text: 'Экзотермическая реакция. pH раствора стремится к 7.' },
|
||
{ head: 'Осадок (<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><polyline points="19 12 12 19 5 12"/></svg>)', text: 'Нерастворимое вещество выпадает из раствора. Правила растворимости: все нитраты растворимы, хлориды — кроме AgCl, PbCl₂.' },
|
||
{ head: 'Газовыделение (<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>)', text: 'Признак реакции: карбонаты + кислота <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> CO₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>, активные металлы + кислота <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> H₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>.' },
|
||
{ head: 'Ряд активности металлов', text: 'Li K Ca Na Mg Al Zn Fe Ni Sn Pb (H₂) Cu Hg Ag Pt Au. Металл вытесняет из раствора все металлы правее него.' },
|
||
{ head: 'Индикаторы', text: 'Фенолфталеин: бесцветный <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> малиновый в щёлочи. Лакмус: красный в кислоте, синий в щёлочи.' },
|
||
]
|
||
},
|
||
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: 'Фенолфталеин: бесцветный <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> малиновый (pH 8.2–10). Метилоранж: красный <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> жёлтый (pH 3.1–4.4). Лакмус: красный <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> синий (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: 'Показатель преломления зависит от длины волны. Фиолетовый свет преломляется сильнее красного <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> разложение белого света в спектр.' },
|
||
]
|
||
},
|
||
probability: {
|
||
title: 'Теория вероятностей',
|
||
sections: [
|
||
{ head: 'Вероятность', formula: 'P(A) = \\frac{m}{n}', text: 'm — число благоприятных исходов, n — общее число равновозможных исходов.' },
|
||
{ head: 'Закон больших чисел', text: 'При большом числе испытаний частота события стремится к его вероятности: f(A) <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> P(A) при n <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> ∞.' },
|
||
{ 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 <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> ∞ — ионизация (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⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> Cu. 2H⁺ + 2e⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> H₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>.' },
|
||
{ head: 'Анод (+)', text: 'Окисление: анионы отдают электроны. 2Cl⁻ − 2e⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> Cl₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>. 2H₂O − 4e⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> O₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg> + 4H⁺.' },
|
||
{ head: 'Электролит NaCl', text: 'Катод: 2H₂O + 2e⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> H₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg> + 2OH⁻. Анод: 2Cl⁻ − 2e⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> Cl₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg>.' },
|
||
{ head: 'Электролит CuSO₄', text: 'Катод: Cu²⁺ + 2e⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> Cu<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><polyline points="19 12 12 19 5 12"/></svg> (осадок). Анод: 2H₂O − 4e⁻ <svg class="ic" viewBox="0 0 24 24"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> O₂<svg class="ic" viewBox="0 0 24 24"><line x1="12" y1="19" x2="12" y2="5"/><polyline points="5 12 12 5 19 12"/></svg> + 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
|
||
══════════════════════════════════════════════ */
|