');
h += makeCard('concl', 'Вывод',
'Метод вытеснения жидкости позволяет измерить объём тела любой формы. Это пример косвенного измерения: '
+ 'мы напрямую измеряем уровни $V_1$ и $V_2$, а затем по формуле $V = V_2 - V_1$ вычисляем искомый объём.');
h += submitBtn('lr3');
body.innerHTML = h;
function draw3(vTel, nm){
const W = 320, H = 240;
const W1 = 100, W2 = 200; // позиции 2 мензурок
const mWidth = 60, mHeight = 180, mY = 30;
const maxMl = 200;
function drawMenz(x, label, V){
let s = '';
// Стенки
s += '';
s += '';
s += '';
// Вода
const waterH = (V / maxMl) * mHeight;
s += '';
// Шкала
for(let ml = 0; ml <= maxMl; ml += 20){
const y = mY + mHeight - (ml / maxMl) * mHeight;
s += '';
if(ml % 40 === 0) s += '' + ml + '';
}
// Подпись V
s += '' + label + '';
s += '' + V + ' мл';
return s;
}
let s = '';
s += drawMenz(W1, 'V₁', 100);
s += drawMenz(W2, 'V₂', 100 + vTel);
// Тело во второй мензурке
s += '';
// Стрелка
s += '';
s += '';
s += 'опускаем';
s += 'тело';
document.getElementById('lr3-svg').innerHTML = s;
document.getElementById('lr3-info').innerHTML = '' + nm + ': $V_1 = 100$ мл, $V_2 = ' + (100 + vTel) + '$ мл → '
+ '$V = V_2 - V_1 = ' + vTel + '$ мл $= ' + vTel + '$ см³';
renderMath(document.getElementById('lr3-info'));
}
body.querySelectorAll('.lr3-obj').forEach(btn => btn.addEventListener('click', () => {
body.querySelectorAll('.lr3-obj').forEach(b => { b.style.background = '#fff'; b.style.color = ACCENT; });
btn.style.background = ACCENT; btn.style.color = '#fff';
draw3(+btn.dataset.v, btn.dataset.nm);
}));
draw3(45, 'Камень');
wireQuiz('lr3-q-host');
wireSubmit('lr3');
renderMath(body);
}
/* ========================================================== */
/* ЛР-4 — Изучение неравномерного движения */
/* ========================================================== */
function build_lr4(){
const body = document.getElementById('lr4-body');
if(!body) return;
let h = '';
h += makeCard('goal', 'Цель',
'Измерить среднюю скорость движения шарика, скатывающегося по наклонной плоскости, для разных углов наклона.');
h += makeCard('equip', 'Оборудование',
'
Желоб (наклонная плоскость)
Шарик
Секундомер
Линейка / мерная лента
');
h += makeCard('steps', 'Ход работы',
''
+ '
Установи желоб под углом 15°. Отпусти шарик с верха.
'
+ '
Засеки время $t$ от старта до конца желоба.
'
+ '
Измерь путь $s$ (длину желоба).
'
+ '
Вычисли $\\langle v\\rangle = s/t$.
'
+ '
Повтори для углов 30° и 45°.
'
+ '');
/* Виджет: симуляция шарика */
h += wgWrap('lr4-w', 'СИМ', 'Шарик на наклонной плоскости',
'Меняй угол, нажимай «Запустить» — шарик скатится, время и средняя скорость измерятся автоматически.',
'
');
h += wgWrap('lr4-q', 'ВОПР', 'Контрольные вопросы', '',
'
'
+ quizQuestion('lr4-q', 0, 'Каков физический смысл $\\langle v\\rangle$?', ['Скорость в средней точке','Скорость, при которой за то же время прошёл бы тот же путь','Полусумма начальной и конечной','Скорость покоя'], 1)
+ quizQuestion('lr4-q', 1, 'Что изменится, если увеличить угол?', ['Время больше, скорость меньше','Время меньше, $\\langle v\\rangle$ больше','Ничего не изменится','Скорость станет нулевой'], 1, 'Чем круче — тем быстрее скатывается.')
+ quizQuestion('lr4-q', 2, 'Шарик прошёл $s = 2$ м за $t = 4$ с. $\\langle v\\rangle$?', ['0,2 м/с','0,5 м/с','1 м/с','2 м/с'], 1, '$\\langle v\\rangle = 2/4 = 0{,}5$ м/с.')
+ '
');
h += makeCard('concl', 'Вывод',
'Чем больше угол наклона, тем сильнее ускорение шарика и тем выше его средняя скорость. '
+ 'Движение шарика — неравномерное: его мгновенная скорость растёт от нуля в начале до максимума в конце. '
+ 'Формула $\\langle v\\rangle = s/t$ даёт усреднённую характеристику, удобную для сравнения.');
h += submitBtn('lr4');
body.innerHTML = h;
let lr4Anim = { raf: 0, t: 0, running: false, totalT: 0, ang: 15 };
function drawTrack(){
const ang = +document.getElementById('lr4-a-r').value;
document.getElementById('lr4-a').textContent = ang;
lr4Anim.ang = ang;
const W = 360, H = 200, baseY = 170;
const len = 220;
const a = ang * Math.PI / 180;
const x1 = 40, y1 = baseY;
const x2 = x1 + len * Math.cos(a);
const y2 = baseY - len * Math.sin(a);
let s = '';
s += '';
s += '';
// Шарик в начальной позиции (на верху)
const t = lr4Anim.t;
const totalT = Math.max(0.5, 2.0 - ang * 0.025); // эмпирическая формула: больше угол — меньше время
lr4Anim.totalT = totalT;
let progress = t / totalT;
if(progress > 1) progress = 1;
// Шарик ускоряется (квадратичная зависимость пути от времени)
const sFrac = progress * progress;
const bx = x2 + (x1 - x2) * sFrac;
const by = y2 + (y1 - y2) * sFrac;
s += '';
// Подпись
s += 'α = ' + ang + '°';
s += 's = 1,0 м';
s += 't = ' + t.toFixed(2) + ' с';
document.getElementById('lr4-svg').innerHTML = s;
const vavg = progress >= 1 ? (1.0 / totalT) : 0;
document.getElementById('lr4-info').innerHTML = progress >= 1
? 'Шарик скатился! $t = ' + totalT.toFixed(2) + '$ с · $s = 1{,}0$ м · $\\langle v\\rangle = s/t = ' + vavg.toFixed(2) + '$ м/с'
: 'В движении... $t = ' + t.toFixed(2) + '$ с';
renderMath(document.getElementById('lr4-info'));
}
function lr4Loop(){
if(!lr4Anim.running) return;
lr4Anim.t += 0.02;
if(lr4Anim.t >= lr4Anim.totalT){
lr4Anim.t = lr4Anim.totalT;
lr4Anim.running = false;
drawTrack();
return;
}
drawTrack();
lr4Anim.raf = requestAnimationFrame(lr4Loop);
}
document.getElementById('lr4-a-r').addEventListener('input', () => { lr4Anim.t = 0; lr4Anim.running = false; drawTrack(); });
document.getElementById('lr4-go').addEventListener('click', () => {
lr4Anim.t = 0; lr4Anim.running = true;
if(lr4Anim.raf) cancelAnimationFrame(lr4Anim.raf);
lr4Loop();
});
drawTrack();
wireQuiz('lr4-q-host');
wireSubmit('lr4');
renderMath(body);
}
/* ========================================================== */
/* ЛР-5 — Измерение плотности вещества */
/* ========================================================== */
function build_lr5(){
const body = document.getElementById('lr5-body');
if(!body) return;
let h = '';
h += makeCard('goal', 'Цель',
'Измерить плотности трёх веществ и определить, что это за материалы, по таблице плотностей.');
h += makeCard('equip', 'Оборудование',
'
Весы (электронные или рычажные)
Мензурка
3 образца разных материалов
Нитка для опускания
');
h += makeCard('steps', 'Ход работы',
''
+ '
Измерь массу $m$ образца на весах.
'
+ '
Измерь его объём $V$ методом вытеснения (как в ЛР-3).
'
+ '
Вычисли $\\rho = m/V$.
'
+ '
Найди в таблице вещество с такой плотностью.
'
+ '');
/* Виджет */
h += wgWrap('lr5-w', 'СИМ', '3 образца — определи вещество', 'Выбери образец — увидь массу и объём, вычисли плотность.',
'