033c941b02
- js/textbook-xp-widget.js: shared модуль (monkey-patch addXp + para-pill auto-award для учебников без addXp) - physics8_thermal/electro/optics: добавлены теги /js/xp.js и /js/textbook-xp-widget.js — теперь все 74 addXp-хука пробрасываются в глобальный gamification (через self-award endpoint с дебаунсом) - chemistry_9 + physics_9: те же теги. Каждый первый клик по .para-pill даёт +5 XP в систему (без правок 23000 LOC) - Изначальный XP в учебниках не теряется — localStorage остаётся кешем, сервер — источник правды
12429 lines
791 KiB
HTML
12429 lines
791 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Импульс. Работа. Энергия — §31–36 · Физика 9</title>
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
|
||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
|
||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"
|
||
onload="renderMathInElement(document.body,{delimiters:[{left:'$',right:'$',display:false},{left:'\\[',right:'\\]',display:true}],throwOnError:false})"></script>
|
||
<script src="/js/xp.js" defer></script>
|
||
<script src="/js/textbook-xp-widget.js" defer></script>
|
||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800;900&family=Literata:opsz,wght@7..72,400;7..72,500;7..72,600;7..72,700;7..72,800&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
||
<style>
|
||
:root{
|
||
--pri:#1d4ed8; --pri2:#1e40af;
|
||
--acc:#0ea5e9;
|
||
--ok:#10b981; --ok-bg:#d1fae5;
|
||
--fail:#ef4444; --fail-bg:#fee2e2;
|
||
--warn:#f59e0b; --warn-bg:#fef3c7;
|
||
--bg:#eff6ff; --card:#fff;
|
||
--text:#1e293b; --muted:#64748b;
|
||
--border:#dbeafe;
|
||
--sh:0 2px 10px rgba(30,64,175,.08)
|
||
}
|
||
*{margin:0;padding:0;box-sizing:border-box}
|
||
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);overflow-x:hidden}
|
||
.dark{--bg:#0f172a;--card:#1e293b;--text:#e2e8f0;--muted:#94a3b8;--border:#1e3a5f}
|
||
|
||
/* ── Шапка ── */
|
||
.hdr{background:linear-gradient(135deg,#1e40af 0%,#0284c7 55%,#0ea5e9 100%);color:#fff;padding:18px 20px 16px;text-align:center}
|
||
.hdr h1{font-size:1.3rem;font-weight:900}
|
||
.hdr p{font-size:.8rem;opacity:.85;margin-top:3px}
|
||
|
||
/* ── Табы ── */
|
||
.tabs{display:flex;flex-wrap:wrap;gap:4px;padding:8px 10px;background:var(--card);border-bottom:1px solid var(--border)}
|
||
.tabs::-webkit-scrollbar{display:none}
|
||
.tab{padding:8px 14px;border:2px solid var(--border);border-radius:10px;font-size:.74rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:.18s;background:var(--card);color:var(--muted);flex-shrink:0}
|
||
.tab:hover{border-color:var(--pri);color:var(--pri)}
|
||
.tab.active{background:var(--pri);color:#fff;border-color:var(--pri)}
|
||
|
||
/* ── Контент ── */
|
||
.content{max-width:780px;margin:0 auto;padding:16px 14px;display:none}
|
||
.content.active{display:block}
|
||
|
||
/* ── Справочник: карточки формул ── */
|
||
.section-title{font-size:1.05rem;font-weight:800;margin-bottom:12px;color:var(--pri);display:flex;align-items:center;gap:8px}
|
||
.section-title i{opacity:.7}
|
||
.formula-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}
|
||
@media(max-width:560px){.formula-grid{grid-template-columns:1fr}}
|
||
.fcard{background:var(--card);border:2px solid var(--border);border-radius:14px;padding:16px 18px;box-shadow:var(--sh);transition:transform .18s,box-shadow .18s}
|
||
.fcard:hover{transform:translateY(-2px);box-shadow:0 6px 22px rgba(29,78,216,.12)}
|
||
.fcard.highlight{border-color:var(--pri);background:linear-gradient(135deg,rgba(29,78,216,.04),rgba(14,165,233,.04))}
|
||
.fcard h3{font-size:.8rem;font-weight:700;color:var(--pri);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}
|
||
.fcard .main-f{font-size:1.05rem;font-weight:700;text-align:center;margin:8px 0;padding:10px;background:rgba(29,78,216,.06);border-radius:9px}
|
||
.fcard p{font-size:.83rem;color:var(--muted);line-height:1.7;margin-top:6px}
|
||
.fcard ul{font-size:.83rem;color:var(--muted);line-height:1.8;padding-left:18px;margin-top:6px}
|
||
|
||
/* ── Пример задачи ── */
|
||
.example-box{background:var(--card);border:2px solid #bfdbfe;border-left:5px solid var(--pri);border-radius:12px;padding:18px 20px;margin-bottom:20px;box-shadow:var(--sh)}
|
||
.example-box h3{font-size:.88rem;font-weight:700;color:var(--pri);margin-bottom:10px}
|
||
.example-box .cond{font-size:.87rem;background:rgba(29,78,216,.05);border-radius:8px;padding:10px 14px;line-height:1.8;margin-bottom:10px}
|
||
.example-box .sol{font-size:.86rem;line-height:1.9}
|
||
.given-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:.82rem}
|
||
.given-table td{padding:4px 10px;border:1px solid var(--border)}
|
||
.given-table tr:first-child td{background:rgba(29,78,216,.04)}
|
||
.given-table tr:last-child td{background:rgba(16,185,129,.05)}
|
||
.given-table td:first-child{font-weight:700;width:38%;color:var(--pri)}
|
||
|
||
/* ── Вопросы (теоретические) ── */
|
||
.q-list{font-size:.85rem;line-height:1.9;color:var(--muted);padding-left:20px}
|
||
.q-list li{margin-bottom:4px}
|
||
|
||
/* ── Задачи: интерактив ── */
|
||
.score-bar{display:flex;gap:10px;align-items:center;justify-content:center;margin-bottom:14px;font-size:.85rem;font-weight:600}
|
||
.chip{padding:5px 14px;border-radius:50px;display:flex;align-items:center;gap:5px}
|
||
.chip-ok{background:var(--ok-bg);color:#065f46}
|
||
.chip-tot{background:var(--card);color:var(--muted);border:1px solid var(--border)}
|
||
.prog-wrap{width:100%;height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin-bottom:16px}
|
||
.prog-fill{height:100%;background:linear-gradient(90deg,var(--pri),var(--acc));border-radius:3px;transition:width .4s}
|
||
|
||
.task-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px 22px;box-shadow:var(--sh);margin-bottom:12px}
|
||
.task-num{font-size:.72rem;font-weight:700;color:var(--acc);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
|
||
.task-text{font-size:.97rem;font-weight:700;line-height:1.85;margin-bottom:14px}
|
||
.task-hint{font-size:.8rem;color:var(--muted);margin-top:4px;margin-bottom:12px;display:flex;align-items:flex-start;gap:6px}
|
||
.task-hint i{margin-top:2px;color:var(--warn);flex-shrink:0}
|
||
|
||
.ans-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
|
||
.ans-inp{width:110px;padding:11px 10px;border:2px solid var(--border);border-radius:10px;font-size:1.05rem;font-family:'JetBrains Mono',monospace;text-align:center;outline:none;background:var(--card);color:var(--text);transition:.18s}
|
||
.ans-inp:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(29,78,216,.12)}
|
||
.unit-lbl{font-size:.82rem;color:var(--muted);font-weight:600;white-space:nowrap}
|
||
.btn{padding:11px 20px;border:none;border-radius:10px;font-weight:700;font-size:.84rem;cursor:pointer;transition:.18s;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
|
||
.btn:active{transform:scale(.96)}
|
||
.btn-pri{background:var(--pri);color:#fff}.btn-pri:hover{background:var(--pri2)}
|
||
.btn-ghost{background:transparent;border:2px solid var(--border);color:var(--muted)}.btn-ghost:hover{border-color:var(--pri);color:var(--pri)}
|
||
.btn-next{background:var(--ok);color:#fff}.btn-next:hover{filter:brightness(1.1)}
|
||
|
||
.feedback{padding:13px 18px;border-radius:11px;font-size:.87rem;font-weight:600;display:none;line-height:1.7;margin-top:10px}
|
||
.feedback.show{display:block;animation:pop .28s ease}
|
||
.fb-ok{background:var(--ok-bg);color:#065f46}
|
||
.fb-fail{background:var(--fail-bg);color:#991b1b}
|
||
@keyframes pop{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
|
||
|
||
/* ── Итог ── */
|
||
.summary{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:28px;text-align:center;box-shadow:var(--sh);display:none}
|
||
.summary.show{display:block;animation:pop .35s ease}
|
||
.summary h2{font-size:1.2rem;font-weight:800;margin-bottom:8px}
|
||
.big-score{font-size:3.5rem;font-weight:900;color:var(--pri);line-height:1;margin:10px 0}
|
||
.sum-grade{color:var(--muted);font-size:.9rem;margin-bottom:20px}
|
||
.sum-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
|
||
|
||
/* ── Справочник (плавающая кнопка) ── */
|
||
.ref-toggle{position:fixed;bottom:16px;right:16px;z-index:60;width:46px;height:46px;border-radius:13px;background:var(--pri);color:#fff;border:none;cursor:pointer;display:grid;place-items:center;font-size:1.1rem;box-shadow:0 4px 14px rgba(29,78,216,.3)}
|
||
.ref-panel{position:fixed;bottom:72px;right:16px;z-index:60;width:300px;max-height:72vh;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px 18px;box-shadow:0 8px 30px rgba(0,0,0,.15);display:none;font-size:.8rem;line-height:1.85;scrollbar-width:thin}
|
||
.ref-panel.show{display:block;animation:pop .2s ease}
|
||
.ref-panel h3{font-size:.84rem;font-weight:700;color:var(--pri);margin:12px 0 4px}.ref-panel h3:first-child{margin-top:0}
|
||
.ref-panel .rf{background:rgba(29,78,216,.06);border-radius:8px;padding:6px 10px;margin:3px 0;text-align:center}
|
||
|
||
/* ── Para-hero баннеры ── */
|
||
.para-hero{border-radius:18px;padding:22px 24px;margin-bottom:22px;position:relative;overflow:hidden}
|
||
.para-hero::after{content:'';position:absolute;right:-28px;top:-28px;width:150px;height:150px;border-radius:50%;opacity:.13;pointer-events:none}
|
||
.ph-31{background:linear-gradient(135deg,#1e3a8a 0%,#1d4ed8 55%,#3b82f6 100%);color:#fff}
|
||
.ph-31::after{background:#bfdbfe}
|
||
.ph-32{background:linear-gradient(135deg,#0c4a6e 0%,#0369a1 55%,#0ea5e9 100%);color:#fff}
|
||
.ph-32::after{background:#bae6fd}
|
||
.ph-33{background:linear-gradient(135deg,#064e3b 0%,#065f46 55%,#10b981 100%);color:#fff}
|
||
.ph-33::after{background:#a7f3d0}
|
||
.ph-34{background:linear-gradient(135deg,#78350f 0%,#92400e 55%,#d97706 100%);color:#fff}
|
||
.ph-34::after{background:#fde68a}
|
||
.ph-35{background:linear-gradient(135deg,#4c1d95 0%,#6d28d9 55%,#8b5cf6 100%);color:#fff}
|
||
.ph-35::after{background:#ddd6fe}
|
||
.ph-36{background:linear-gradient(135deg,#134e4a 0%,#0f766e 55%,#2dd4bf 100%);color:#fff}
|
||
.ph-36::after{background:#99f6e4}
|
||
.para-hero .ph-label{font-size:.7rem;font-weight:700;opacity:.7;letter-spacing:.1em;text-transform:uppercase;margin-bottom:5px}
|
||
.para-hero h2{font-size:1.12rem;font-weight:900;margin-bottom:8px;line-height:1.3}
|
||
.para-hero .ph-formula{display:inline-block;font-size:1rem;background:rgba(255,255,255,.17);border-radius:10px;padding:7px 16px;margin:2px 0 8px;font-weight:700;border:1px solid rgba(255,255,255,.22)}
|
||
.para-hero .ph-desc{font-size:.79rem;opacity:.87;line-height:1.65;margin-bottom:10px}
|
||
.para-hero .ph-tags{display:flex;flex-wrap:wrap;gap:6px}
|
||
.para-hero .ph-tag{background:rgba(255,255,255,.17);border:1px solid rgba(255,255,255,.25);border-radius:20px;padding:3px 11px;font-size:.7rem;font-weight:700}
|
||
|
||
/* ── Запомни! ── */
|
||
.remember-box{background:linear-gradient(135deg,rgba(239,68,68,.06),rgba(220,38,38,.03));border:2px solid rgba(239,68,68,.3);border-radius:13px;padding:14px 17px;margin:16px 0}
|
||
.remember-box-title{font-weight:800;font-size:.82rem;color:#b91c1c;margin-bottom:8px;display:flex;align-items:center;gap:7px}
|
||
.dark .remember-box{border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.07)}
|
||
.dark .remember-box-title{color:#fca5a5}
|
||
.remember-box ul{padding-left:18px;margin:0}
|
||
.remember-box li,.remember-box p{font-size:.83rem;color:var(--text);line-height:1.9;margin:0}
|
||
|
||
/* ── Частые ошибки ── */
|
||
.mistakes-box{background:linear-gradient(135deg,rgba(245,158,11,.06),rgba(251,191,36,.03));border:2px solid rgba(245,158,11,.35);border-radius:13px;padding:14px 17px;margin:16px 0}
|
||
.mistakes-box-title{font-weight:800;font-size:.82rem;color:#92400e;margin-bottom:8px;display:flex;align-items:center;gap:7px}
|
||
.dark .mistakes-box{border-color:rgba(245,158,11,.4);background:rgba(245,158,11,.07)}
|
||
.dark .mistakes-box-title{color:#fcd34d}
|
||
.mistakes-box ul{padding-left:18px;margin:0}
|
||
.mistakes-box li{font-size:.83rem;color:var(--text);line-height:1.9}
|
||
|
||
/* ── Шаги решения ── */
|
||
.sol-steps{list-style:none;padding:0;margin:8px 0}
|
||
.sol-steps li{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:.86rem;line-height:1.75}
|
||
.step-n{min-width:24px;height:24px;border-radius:50%;background:var(--pri);color:#fff;font-size:.69rem;font-weight:800;display:grid;place-items:center;margin-top:1px;flex-shrink:0}
|
||
|
||
/* ── Интерактивные схемы ── */
|
||
.idiag{background:var(--card);border:2px solid var(--border);border-radius:14px;padding:16px 18px;margin:14px 0;box-shadow:var(--sh)}
|
||
.idiag h3{font-size:.79rem;font-weight:700;color:var(--pri);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;display:flex;align-items:center;gap:6px}
|
||
.idiag-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}
|
||
@media(max-width:560px){.idiag-2col{grid-template-columns:1fr}}
|
||
.slider-row{display:flex;align-items:center;gap:10px;margin:8px 0;font-size:.82rem;flex-wrap:wrap}
|
||
.slider-lbl{min-width:90px;font-weight:600;color:var(--text);flex-shrink:0}
|
||
.slider-val{min-width:72px;font-weight:800;color:var(--pri);font-family:'JetBrains Mono',monospace;font-size:.82rem;flex-shrink:0}
|
||
input[type=range]{flex:1;min-width:100px;accent-color:var(--pri);cursor:pointer}
|
||
.idiag-result{background:rgba(29,78,216,.08);border-radius:10px;padding:10px 14px;margin-top:10px;font-size:.9rem;font-weight:700;text-align:center;font-family:'JetBrains Mono',monospace;letter-spacing:.02em;border:1px solid rgba(29,78,216,.15)}
|
||
.work-pos{color:#065f46;font-weight:900}.work-zero{color:#92400e;font-weight:900}.work-neg{color:#991b1b;font-weight:900}
|
||
|
||
/* ── Цепочка вывода формулы ── */
|
||
.fchain{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:rgba(29,78,216,.04);border:1px solid var(--border);border-radius:11px;padding:11px 15px;margin:10px 0;font-size:.82rem}
|
||
.fchain-step{background:var(--card);border:1.5px solid var(--border);border-radius:8px;padding:4px 12px;font-family:'JetBrains Mono',monospace;font-size:.8rem;font-weight:600}
|
||
.fchain-arrow{color:var(--muted);font-weight:700}
|
||
.fchain-note{font-size:.73rem;color:var(--muted);font-style:italic}
|
||
|
||
/* ── Объяснение по-человечески ── */
|
||
.student-box{background:linear-gradient(135deg,rgba(254,243,199,.7),rgba(255,237,213,.7));border:1.5px solid #f59e0b;border-radius:14px;padding:16px 18px;margin:16px 0;line-height:1.75}
|
||
.dark .student-box{background:linear-gradient(135deg,rgba(120,80,0,.18),rgba(100,50,0,.18));border-color:#d97706}
|
||
.student-box-title{font-weight:800;font-size:.88rem;color:#92400e;margin-bottom:10px;display:flex;align-items:center;gap:7px}
|
||
.dark .student-box-title{color:#fbbf24}
|
||
.student-box p{margin:0 0 9px;font-size:.84rem;color:var(--text)}
|
||
.student-box p:last-child{margin-bottom:0}
|
||
.student-box b{color:#92400e}
|
||
.dark .student-box b{color:#fbbf24}
|
||
|
||
/* ── Тема ── */
|
||
.theme-btn{position:fixed;top:12px;right:12px;z-index:60;width:38px;height:38px;border-radius:10px;background:var(--card);border:1px solid var(--border);cursor:pointer;display:grid;place-items:center;font-size:1rem;box-shadow:var(--sh);color:var(--text)}
|
||
|
||
/* ── Para badge (сложные задачи) ── */
|
||
.para-badge{display:inline-flex;align-items:center;padding:2px 8px;background:rgba(29,78,216,.13);color:var(--pri);border-radius:6px;font-size:.68rem;font-weight:800;margin-left:7px;letter-spacing:.03em}
|
||
.para-badge.b32{background:rgba(14,165,233,.13);color:#0284c7}
|
||
.para-badge.b33{background:rgba(16,185,129,.13);color:#059669}
|
||
.para-badge.b34{background:rgba(245,158,11,.13);color:#d97706}
|
||
.para-badge.b35{background:rgba(109,40,217,.13);color:#6d28d9}
|
||
.para-badge.b36{background:rgba(15,118,110,.13);color:#0f766e}
|
||
|
||
/* ── §1–14 Кинематика Para-heroes ── */
|
||
.ph-1{background:linear-gradient(135deg,#7f1d1d 0%,#dc2626 55%,#f97316 100%);color:#fff}
|
||
.ph-1::after{background:#fed7aa}
|
||
.ph-2{background:linear-gradient(135deg,#134e4a 0%,#0d9488 55%,#2dd4bf 100%);color:#fff}
|
||
.ph-2::after{background:#99f6e4}
|
||
.ph-3{background:linear-gradient(135deg,#500724 0%,#be185d 55%,#f472b6 100%);color:#fff}
|
||
.ph-3::after{background:#fce7f3}
|
||
.ph-4{background:linear-gradient(135deg,#431407 0%,#b45309 55%,#fbbf24 100%);color:#fff}
|
||
.ph-4::after{background:#fde68a}
|
||
.ph-5{background:linear-gradient(135deg,#1e3a8a 0%,#1d4ed8 55%,#60a5fa 100%);color:#fff}
|
||
.ph-5::after{background:#bfdbfe}
|
||
.ph-6{background:linear-gradient(135deg,#14532d 0%,#15803d 55%,#4ade80 100%);color:#fff}
|
||
.ph-6::after{background:#bbf7d0}
|
||
.ph-7{background:linear-gradient(135deg,#2e1065 0%,#7c3aed 55%,#c4b5fd 100%);color:#fff}
|
||
.ph-7::after{background:#ede9fe}
|
||
.ph-8{background:linear-gradient(135deg,#082f49 0%,#0284c7 55%,#7dd3fc 100%);color:#fff}
|
||
.ph-8::after{background:#e0f2fe}
|
||
.ph-9{background:linear-gradient(135deg,#1a2e05 0%,#4d7c0f 55%,#a3e635 100%);color:#fff}
|
||
.ph-9::after{background:#d9f99d}
|
||
.ph-10{background:linear-gradient(135deg,#4c0519 0%,#be123c 55%,#fb7185 100%);color:#fff}
|
||
.ph-10::after{background:#ffe4e6}
|
||
.ph-11{background:linear-gradient(135deg,#1e1b4b 0%,#3730a3 55%,#a5b4fc 100%);color:#fff}
|
||
.ph-11::after{background:#e0e7ff}
|
||
.ph-12{background:linear-gradient(135deg,#7c2d12 0%,#c2410c 55%,#fb923c 100%);color:#fff}
|
||
.ph-12::after{background:#ffedd5}
|
||
.ph-13{background:linear-gradient(135deg,#2e1065 0%,#6d28d9 55%,#ddd6fe 100%);color:#fff}
|
||
.ph-13::after{background:#f5f3ff}
|
||
.ph-14{background:linear-gradient(135deg,#164e63 0%,#0e7490 55%,#67e8f9 100%);color:#fff}
|
||
.ph-14::after{background:#cffafe}
|
||
.para-badge.b1{background:rgba(220,38,38,.13);color:#dc2626}
|
||
.para-badge.b2{background:rgba(13,148,136,.13);color:#0d9488}
|
||
.para-badge.b3{background:rgba(190,24,93,.13);color:#be185d}
|
||
.para-badge.b4{background:rgba(180,83,9,.13);color:#b45309}
|
||
.para-badge.b5{background:rgba(29,78,216,.13);color:#1d4ed8}
|
||
.para-badge.b6{background:rgba(21,128,61,.13);color:#15803d}
|
||
.para-badge.b7{background:rgba(124,58,237,.13);color:#7c3aed}
|
||
.para-badge.b8{background:rgba(2,132,199,.13);color:#0284c7}
|
||
.para-badge.b9{background:rgba(77,124,15,.13);color:#4d7c0f}
|
||
.para-badge.b10{background:rgba(190,18,60,.13);color:#be123c}
|
||
.para-badge.b11{background:rgba(55,48,163,.13);color:#3730a3}
|
||
.para-badge.b12{background:rgba(194,65,12,.13);color:#c2410c}
|
||
.para-badge.b13{background:rgba(109,40,217,.13);color:#6d28d9}
|
||
.para-badge.b14{background:rgba(14,116,144,.13);color:#0e7490}
|
||
/* ── §15–21 Para-heroes ── */
|
||
.ph-15{background:linear-gradient(135deg,#7c2d12 0%,#c2410c 55%,#f97316 100%);color:#fff}
|
||
.ph-15::after{background:#fed7aa}
|
||
.ph-16{background:linear-gradient(135deg,#881337 0%,#be123c 55%,#f43f5e 100%);color:#fff}
|
||
.ph-16::after{background:#fecdd3}
|
||
.ph-17{background:linear-gradient(135deg,#4a044e 0%,#7e22ce 55%,#d946ef 100%);color:#fff}
|
||
.ph-17::after{background:#f5d0fe}
|
||
.ph-18{background:linear-gradient(135deg,#082f49 0%,#155e75 55%,#22d3ee 100%);color:#fff}
|
||
.ph-18::after{background:#a5f3fc}
|
||
.ph-19{background:linear-gradient(135deg,#500724 0%,#9d174d 55%,#f472b6 100%);color:#fff}
|
||
.ph-19::after{background:#fbcfe8}
|
||
.ph-20{background:linear-gradient(135deg,#1c1917 0%,#44403c 55%,#a8a29e 100%);color:#fff}
|
||
.ph-20::after{background:#e7e5e4}
|
||
.ph-21{background:linear-gradient(135deg,#1e1b4b 0%,#3730a3 55%,#818cf8 100%);color:#fff}
|
||
.ph-21::after{background:#c7d2fe}
|
||
.ph-22{background:linear-gradient(135deg,#0c4a6e 0%,#0369a1 55%,#38bdf8 100%);color:#fff}
|
||
.ph-22::after{background:#bae6fd}
|
||
.ph-23{background:linear-gradient(135deg,#14532d 0%,#166534 55%,#4ade80 100%);color:#fff}
|
||
.ph-23::after{background:#bbf7d0}
|
||
.ph-24{background:linear-gradient(135deg,#3b0764 0%,#7e22ce 55%,#c084fc 100%);color:#fff}
|
||
.ph-24::after{background:#e9d5ff}
|
||
.ph-25{background:linear-gradient(135deg,#052e16 0%,#065f46 55%,#34d399 100%);color:#fff}
|
||
.ph-25::after{background:#a7f3d0}
|
||
.ph-26{background:linear-gradient(135deg,#2e1065 0%,#6d28d9 55%,#c084fc 100%);color:#fff}
|
||
.ph-26::after{background:#e9d5ff}
|
||
.ph-27{background:linear-gradient(135deg,#431407 0%,#b45309 55%,#fbbf24 100%);color:#fff}
|
||
.ph-27::after{background:#fde68a}
|
||
.ph-28{background:linear-gradient(135deg,#0f2027 0%,#203a43 55%,#2c5364 100%);color:#fff}
|
||
.ph-28::after{background:#a5f3fc}
|
||
.ph-29{background:linear-gradient(135deg,#001845 0%,#0041a8 55%,#0099ff 100%);color:#fff}
|
||
.ph-29::after{background:#bfdbfe}
|
||
.ph-30{background:linear-gradient(135deg,#064e3b 0%,#065f46 55%,#34d399 100%);color:#fff}
|
||
.ph-30::after{background:#a7f3d0}
|
||
.para-badge.b15{background:rgba(194,65,12,.13);color:#c2410c}
|
||
.para-badge.b16{background:rgba(190,18,60,.13);color:#be123c}
|
||
.para-badge.b17{background:rgba(126,34,206,.13);color:#7e22ce}
|
||
.para-badge.b18{background:rgba(21,94,117,.13);color:#155e75}
|
||
.para-badge.b19{background:rgba(157,23,77,.13);color:#9d174d}
|
||
.para-badge.b20{background:rgba(68,64,60,.13);color:#44403c}
|
||
.para-badge.b21{background:rgba(55,48,163,.13);color:#3730a3}
|
||
.para-badge.b22{background:rgba(3,105,161,.13);color:#0369a1}
|
||
.para-badge.b23{background:rgba(22,101,52,.13);color:#166534}
|
||
.para-badge.b24{background:rgba(126,34,206,.13);color:#7e22ce}
|
||
.para-badge.b25{background:rgba(6,95,70,.13);color:#065f46}
|
||
.para-badge.b26{background:rgba(109,40,217,.13);color:#6d28d9}
|
||
.para-badge.b27{background:rgba(180,83,9,.13);color:#b45309}
|
||
.para-badge.b28{background:rgba(32,58,67,.13);color:#203a43}
|
||
.para-badge.b29{background:rgba(0,65,168,.13);color:#0041a8}
|
||
.para-badge.b30{background:rgba(6,95,70,.13);color:#065f46}
|
||
|
||
/* ── Misc ── */
|
||
.dark .ans-inp{background:#0f172a;color:#e2e8f0}
|
||
.dark .fcard{background:#1e293b}.dark .example-box{background:#1e293b}
|
||
.katex{font-size:1em!important}
|
||
.info-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:.72rem;font-weight:700;background:rgba(14,165,233,.12);color:#0284c7;margin-left:8px}
|
||
hr.divider{border:none;border-top:1px solid var(--border);margin:20px 0}
|
||
|
||
/* ── Навигация по задачам ── */
|
||
.nav-dots{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:14px}
|
||
.nav-dot{min-width:30px;height:30px;padding:0 6px;border-radius:7px;border:2px solid var(--border);background:var(--card);font-size:.72rem;font-weight:700;cursor:pointer;display:grid;place-items:center;transition:.15s;color:var(--muted);font-family:'JetBrains Mono',monospace}
|
||
.nav-dot:hover{border-color:var(--pri);color:var(--pri)}
|
||
.nav-dot.nd-cur{background:var(--pri);border-color:var(--pri);color:#fff}
|
||
.nav-dot.nd-ok{background:var(--ok-bg);border-color:var(--ok);color:#065f46}
|
||
.nav-dot.nd-fail{background:var(--fail-bg);border-color:var(--fail);color:#991b1b}
|
||
|
||
/* ── Life-examples grid ── */
|
||
.life-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:14px 0}
|
||
.life-item{background:var(--card);border:1.5px solid var(--border);border-radius:12px;padding:12px 10px;text-align:center}
|
||
.life-item .li-icon{font-size:1.9rem;margin-bottom:5px}
|
||
.life-item .li-title{font-size:.79rem;font-weight:700;color:var(--text);margin-bottom:3px}
|
||
.life-item .li-desc{font-size:.71rem;color:var(--muted);line-height:1.55}
|
||
/* ── Insight (physics aha) box ── */
|
||
.insight-box{background:linear-gradient(135deg,rgba(99,102,241,.07),rgba(139,92,246,.04));border:2px solid rgba(99,102,241,.22);border-radius:13px;padding:14px 17px;margin:16px 0}
|
||
.insight-title{font-weight:800;font-size:.82rem;color:#4f46e5;margin-bottom:7px;display:flex;align-items:center;gap:7px}
|
||
.dark .insight-box{background:rgba(99,102,241,.08);border-color:rgba(139,92,246,.3)}
|
||
.dark .insight-title{color:#a5b4fc}
|
||
.insight-box p{font-size:.83rem;color:var(--text);line-height:1.8;margin:0 0 6px}
|
||
.insight-box p:last-child{margin:0}
|
||
/* ── μ table ── */
|
||
.mu-tbl{width:100%;border-collapse:collapse;font-size:.8rem;margin:8px 0}
|
||
.mu-tbl th{background:rgba(68,64,60,.1);padding:5px 8px;text-align:center;font-weight:700;border:1px solid var(--border)}
|
||
.mu-tbl td{padding:4px 8px;text-align:center;border:1px solid var(--border)}
|
||
.mu-tbl tr:hover td{background:rgba(29,78,216,.04)}
|
||
/* ── Solve-steps ── */
|
||
.solve-box{background:var(--card);border:1.5px solid var(--border);border-radius:12px;padding:14px 18px;margin:14px 0}
|
||
.solve-box h4{font-size:.82rem;font-weight:800;color:var(--pri);margin-bottom:10px;display:flex;align-items:center;gap:6px}
|
||
/* ── Canvas physics panels ── */
|
||
.cv-wrap{position:relative;margin:10px 0}
|
||
.cv-wrap canvas{width:100%;border-radius:10px;display:block}
|
||
.cv-playbtn{margin-top:6px;padding:7px 18px;border:none;border-radius:8px;background:var(--pri);color:#fff;font-weight:700;font-size:.8rem;cursor:pointer;transition:.15s}
|
||
.cv-playbtn:hover{filter:brightness(1.1)}
|
||
/* ── Para-pills ── */
|
||
.para-pill{padding:6px 13px;border:2px solid var(--border);border-radius:10px;font-size:.74rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:.18s;background:var(--card);color:var(--muted);flex-shrink:0}
|
||
.para-pill:hover{border-color:var(--pri);color:var(--pri)}
|
||
.para-pill.active{background:var(--pri);color:#fff;border-color:var(--pri)}
|
||
|
||
/* ── MCQ ── */
|
||
.mcq-opts{display:flex;flex-direction:column;gap:8px;margin-top:4px}
|
||
.mcq-opt{width:100%;text-align:left;padding:11px 16px;border:2px solid var(--border);border-radius:10px;background:var(--card);color:var(--text);font-size:.9rem;font-weight:500;cursor:pointer;transition:.18s;line-height:1.5;font-family:inherit}
|
||
.mcq-opt:hover:not(:disabled){border-color:var(--pri);background:rgba(29,78,216,.05);color:var(--text)}
|
||
.mcq-opt:disabled{cursor:default}
|
||
.mcq-opt.mcq-cor{border-color:var(--ok)!important;background:var(--ok-bg)!important;color:#065f46!important;font-weight:700}
|
||
.mcq-opt.mcq-wrong{border-color:var(--fail)!important;background:var(--fail-bg)!important;color:#991b1b!important}
|
||
|
||
/* ── Def / info box ── */
|
||
.def-box{background:rgba(29,78,216,.05);border-left:4px solid var(--pri);border-radius:10px;padding:12px 16px;margin-bottom:16px;font-size:.87rem;line-height:1.8}
|
||
|
||
/* ── Лаб. №11 ── */
|
||
.ph-lab{background:linear-gradient(135deg,#7f1d1d 0%,#b91c1c 55%,#ef4444 100%);color:#fff}
|
||
.ph-lab::after{background:#fca5a5}
|
||
.lab11-tbl{width:100%;border-collapse:collapse;font-size:.83rem;font-family:'JetBrains Mono',monospace}
|
||
.lab11-tbl th{background:rgba(29,78,216,.07);padding:7px 8px;text-align:center;font-weight:700;font-size:.74rem;border:1px solid var(--border)}
|
||
.lab11-tbl td{padding:6px 8px;text-align:center;border:1px solid var(--border);background:var(--card)}
|
||
.lab11-tbl tr:hover td{background:rgba(29,78,216,.04)}
|
||
.lab11-tbl tr.lab11-avg td{background:rgba(29,78,216,.09);font-weight:800;color:var(--pri)}
|
||
|
||
/* ── Тетрадные вычисления (Лаб. №11) ── */
|
||
.nb-wrap{
|
||
background-color:#fffef2;
|
||
background-image:
|
||
linear-gradient(90deg,transparent 33px,rgba(239,68,68,.22) 33px,rgba(239,68,68,.22) 35px,transparent 35px),
|
||
repeating-linear-gradient(transparent 0,transparent 26px,#bfdbfe 26px,#bfdbfe 27px);
|
||
border:1px solid #fde68a;border-radius:13px;
|
||
padding:14px 18px 14px 46px;
|
||
font-size:.82rem;line-height:27px;color:var(--text);
|
||
margin:16px 0;overflow:hidden
|
||
}
|
||
.dark .nb-wrap{
|
||
background-color:#14120a;
|
||
background-image:
|
||
linear-gradient(90deg,transparent 33px,rgba(185,28,28,.30) 33px,rgba(185,28,28,.30) 35px,transparent 35px),
|
||
repeating-linear-gradient(transparent 0,transparent 26px,rgba(30,58,95,.75) 26px,rgba(30,58,95,.75) 27px);
|
||
border-color:#422006
|
||
}
|
||
.nb-hdr{font-size:.87rem;font-weight:800;color:#b45309;letter-spacing:.03em;margin-bottom:1px}
|
||
.dark .nb-hdr{color:#fbbf24}
|
||
.nb-dado{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;margin-bottom:4px}
|
||
@media(max-width:440px){.nb-dado{grid-template-columns:1fr}}
|
||
.nb-clbl{font-weight:800;color:var(--pri);text-decoration:underline;text-underline-offset:2px}
|
||
.nb-div{border:none;border-top:1.5px solid #fde68a;margin:4px 0}
|
||
.dark .nb-div{border-color:#422006}
|
||
.nb-sh{font-weight:800;color:var(--pri);margin:2px 0}
|
||
.nb-step{margin:2px 0}
|
||
.nb-step b{color:#1e293b;font-weight:700}
|
||
.dark .nb-step b{color:#e2e8f0}
|
||
.nb-i{display:block;padding-left:18px}
|
||
.nb-v{color:#1d4ed8;font-weight:800;font-family:'JetBrains Mono',monospace}
|
||
.dark .nb-v{color:#93c5fd}
|
||
.nb-box{display:inline-block;background:rgba(29,78,216,.11);border:1.5px solid rgba(29,78,216,.22);
|
||
border-radius:5px;padding:0 7px;font-weight:800;font-family:'JetBrains Mono',monospace;color:#1d4ed8}
|
||
.dark .nb-box{background:rgba(147,197,253,.11);border-color:rgba(147,197,253,.28);color:#93c5fd}
|
||
.nb-ok{color:#065f46;font-weight:800}.nb-bad{color:#991b1b;font-weight:800}
|
||
.nb-ans{border-top:2px solid #fde68a;margin-top:6px;padding-top:4px;font-weight:800;font-size:.85rem}
|
||
.dark .nb-ans{border-color:#422006}
|
||
</style>
|
||
<style>
|
||
/* ═══════════════════════════════════════════════════
|
||
UI v2 — Scientific Elegance Redesign
|
||
═══════════════════════════════════════════════════ */
|
||
|
||
/* ── Override Core Variables ── */
|
||
:root{
|
||
--pri:#3730a3;--pri2:#312e81;
|
||
--acc:#0ea5e9;
|
||
--ok:#059669;--ok-bg:#d1fae5;
|
||
--fail:#dc2626;--fail-bg:#fee2e2;
|
||
--warn:#d97706;--warn-bg:#fef3c7;
|
||
--bg:#f5f1e8;--card:#fffdf8;
|
||
--text:#1e1b2e;--muted:#6b6578;
|
||
--border:#e2dbd0;
|
||
--sh:0 2px 12px rgba(26,27,58,.06),0 1px 3px rgba(26,27,58,.04);
|
||
--sh-lg:0 8px 30px rgba(26,27,58,.10),0 2px 6px rgba(26,27,58,.06)
|
||
}
|
||
.dark{
|
||
--pri:#818cf8;--pri2:#6366f1;
|
||
--bg:#0f0e18;--card:#1a192a;
|
||
--text:#e2e0ed;--muted:#9490a5;
|
||
--border:#2d2b3f;
|
||
--sh:0 2px 12px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2);
|
||
--sh-lg:0 8px 30px rgba(0,0,0,.4)
|
||
}
|
||
|
||
/* ── Typography ── */
|
||
body{font-family:'Literata','Georgia',serif;background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
|
||
|
||
/* ── Header ── */
|
||
.hdr{background:linear-gradient(135deg,#1e1b35 0%,#312e81 50%,#4338ca 100%);padding:34px 24px 30px;position:relative;overflow:hidden}
|
||
.hdr::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 80% at 15% 50%,rgba(180,83,9,.18) 0%,transparent 60%),radial-gradient(ellipse 50% 70% at 85% 30%,rgba(99,102,241,.15) 0%,transparent 60%),radial-gradient(circle at 50% 110%,rgba(217,119,6,.12) 0%,transparent 50%);pointer-events:none}
|
||
.hdr::after{content:'';position:absolute;top:-50%;right:-15%;width:400px;height:400px;border-radius:50%;background:rgba(255,255,255,.03);pointer-events:none}
|
||
.hdr h1{font-family:'Outfit',sans-serif;font-size:1.6rem;font-weight:900;position:relative;letter-spacing:-.02em;line-height:1.3}
|
||
.hdr p{font-family:'Outfit',sans-serif;font-size:.82rem;opacity:.55;margin-top:8px;position:relative;font-weight:500;letter-spacing:.01em}
|
||
|
||
/* ── Chapter Navigation ── */
|
||
.nav-wrap{background:rgba(245,241,232,.88);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}
|
||
.dark .nav-wrap{background:rgba(15,14,24,.88)}
|
||
.ch-bar{display:flex;gap:0;padding:0 10px;overflow-x:auto;scrollbar-width:none}
|
||
.ch-bar::-webkit-scrollbar{display:none}
|
||
.ch-btn{padding:11px 15px;border:none;border-bottom:2.5px solid transparent;background:transparent;font-family:'Outfit',sans-serif;font-size:.76rem;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap;transition:color .2s,border-color .2s;flex-shrink:0}
|
||
.ch-btn:hover{color:var(--text)}
|
||
.ch-btn.active{color:#3730a3;border-bottom-color:#3730a3}
|
||
.dark .ch-btn.active{color:#a5b4fc;border-bottom-color:#a5b4fc}
|
||
.sec-bar{padding:8px 10px 10px;border-top:1px solid var(--border)}
|
||
.sec-group{display:none;flex-wrap:wrap;gap:5px}
|
||
.sec-group.show{display:flex}
|
||
|
||
/* ── Section Tabs (override) ── */
|
||
.tab{padding:6px 13px;border:1.5px solid var(--border);border-radius:8px;font-family:'Outfit',sans-serif;font-size:.72rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s ease;background:var(--card);color:var(--muted);flex-shrink:0}
|
||
.tab:hover{border-color:var(--pri);color:var(--pri);background:rgba(55,48,163,.04)}
|
||
.dark .tab:hover{background:rgba(129,140,248,.08)}
|
||
.tab.active{background:#3730a3;color:#fff;border-color:#3730a3;box-shadow:0 2px 8px rgba(55,48,163,.25)}
|
||
.dark .tab.active{background:#6366f1;border-color:#6366f1;box-shadow:0 2px 8px rgba(99,102,241,.3)}
|
||
|
||
/* ── Content ── */
|
||
.content{max-width:800px;padding:26px 18px}
|
||
.content.active{animation:fadeUp .3s ease}
|
||
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
|
||
|
||
/* ── Section Title ── */
|
||
.section-title{font-family:'Outfit',sans-serif;font-size:1.1rem;font-weight:800;letter-spacing:-.01em}
|
||
|
||
/* ── Formula Cards ── */
|
||
.fcard{border:1.5px solid var(--border);border-radius:16px;padding:18px 20px;box-shadow:var(--sh);transition:transform .25s ease,box-shadow .25s ease}
|
||
.fcard:hover{transform:translateY(-3px);box-shadow:var(--sh-lg)}
|
||
.fcard.highlight{border-color:rgba(55,48,163,.25);background:linear-gradient(135deg,rgba(55,48,163,.04),rgba(99,102,241,.02))}
|
||
.dark .fcard.highlight{border-color:rgba(129,140,248,.2);background:linear-gradient(135deg,rgba(129,140,248,.06),rgba(99,102,241,.03))}
|
||
.fcard h3{font-family:'Outfit',sans-serif;font-size:.78rem;font-weight:700;letter-spacing:.07em}
|
||
.fcard .main-f{border-radius:10px;background:rgba(55,48,163,.05)}
|
||
.dark .fcard .main-f{background:rgba(129,140,248,.08)}
|
||
|
||
/* ── Example Box ── */
|
||
.example-box{border:1.5px solid var(--border);border-left:4px solid var(--pri);border-radius:14px}
|
||
.example-box h3{font-family:'Outfit',sans-serif}
|
||
.example-box .cond{background:rgba(55,48,163,.04);border-radius:10px}
|
||
.dark .example-box .cond{background:rgba(129,140,248,.06)}
|
||
|
||
/* ── Buttons ── */
|
||
.btn{border-radius:10px;font-family:'Outfit',sans-serif;font-size:.82rem;font-weight:700;transition:all .2s ease}
|
||
.btn-pri{background:#3730a3;color:#fff;box-shadow:0 2px 8px rgba(55,48,163,.2)}
|
||
.btn-pri:hover{background:#312e81;box-shadow:0 4px 14px rgba(55,48,163,.3)}
|
||
.dark .btn-pri{background:#6366f1;box-shadow:0 2px 8px rgba(99,102,241,.25)}
|
||
.dark .btn-pri:hover{background:#818cf8}
|
||
.btn-next{background:#059669}
|
||
|
||
/* ── Para Pills ── */
|
||
.para-pill{font-family:'Outfit',sans-serif;border-radius:8px}
|
||
.para-pill.active{background:#3730a3;border-color:#3730a3}
|
||
.dark .para-pill.active{background:#6366f1;border-color:#6366f1}
|
||
|
||
/* ── Task System ── */
|
||
.task-num{font-family:'Outfit',sans-serif}
|
||
.task-text{font-size:.95rem;line-height:1.9}
|
||
.task-card{border-radius:16px}
|
||
.score-bar{font-family:'Outfit',sans-serif}
|
||
.chip{border-radius:8px}
|
||
.nav-dot{font-family:'Outfit',sans-serif;border-radius:8px}
|
||
|
||
/* ── Reference Panel ── */
|
||
.ref-toggle{border-radius:14px;background:#3730a3;box-shadow:0 4px 16px rgba(55,48,163,.3)}
|
||
.dark .ref-toggle{background:#6366f1;box-shadow:0 4px 16px rgba(99,102,241,.3)}
|
||
.ref-panel{border-radius:18px;box-shadow:0 12px 40px rgba(0,0,0,.12)}
|
||
.ref-panel h3{font-family:'Outfit',sans-serif}
|
||
|
||
/* ── Theme Button ── */
|
||
.theme-btn{border-radius:10px}
|
||
|
||
/* ── Info Boxes ── */
|
||
.student-box-title,.remember-box-title,.mistakes-box-title,.insight-title{font-family:'Outfit',sans-serif}
|
||
.student-box p{font-size:.85rem}
|
||
|
||
/* ── Interactive Diagrams ── */
|
||
.idiag h3{font-family:'Outfit',sans-serif}
|
||
.idiag{border-radius:16px}
|
||
.slider-lbl{font-family:'Outfit',sans-serif}
|
||
.idiag-result{border-radius:12px}
|
||
input[type=range]{accent-color:#3730a3}
|
||
.dark input[type=range]{accent-color:#818cf8}
|
||
|
||
/* ── Para Hero ── */
|
||
.para-hero{border-radius:20px;padding:24px 26px}
|
||
.para-hero .ph-label{font-family:'Outfit',sans-serif}
|
||
.para-hero h2{font-family:'Outfit',sans-serif;font-size:1.15rem}
|
||
.para-hero .ph-formula{border-radius:12px}
|
||
.para-hero .ph-tag{font-family:'Outfit',sans-serif;border-radius:22px}
|
||
|
||
/* ── Misc Components ── */
|
||
.solve-box h4{font-family:'Outfit',sans-serif}
|
||
.fchain-step{font-family:'JetBrains Mono',monospace}
|
||
.life-item .li-title{font-family:'Outfit',sans-serif}
|
||
.life-item{border-radius:14px}
|
||
.step-n{background:#3730a3;font-family:'Outfit',sans-serif}
|
||
.dark .step-n{background:#6366f1}
|
||
.cv-playbtn{font-family:'Outfit',sans-serif;background:#3730a3}
|
||
.dark .cv-playbtn{background:#6366f1}
|
||
.mcq-opt{border-radius:10px}
|
||
.def-box{border-left-color:#3730a3;background:rgba(55,48,163,.04);border-radius:12px}
|
||
.dark .def-box{border-left-color:#818cf8;background:rgba(129,140,248,.06)}
|
||
.summary{border-radius:18px}
|
||
.summary h2,.big-score,.sum-grade{font-family:'Outfit',sans-serif}
|
||
.feedback{border-radius:12px}
|
||
.info-badge{font-family:'Outfit',sans-serif}
|
||
.nb-hdr{font-family:'Outfit',sans-serif}
|
||
.lab11-tbl th{font-family:'Outfit',sans-serif}
|
||
.given-table td:first-child{font-family:'Outfit',sans-serif}
|
||
|
||
/* ── Dark Overrides (hardcoded in old CSS) ── */
|
||
.dark .fcard{background:var(--card)}
|
||
.dark .example-box{background:var(--card)}
|
||
.dark .ans-inp{background:var(--bg);color:var(--text)}
|
||
|
||
/* ── Progress Bar ── */
|
||
.prog-fill{background:linear-gradient(90deg,#3730a3,#6366f1)}
|
||
.dark .prog-fill{background:linear-gradient(90deg,#6366f1,#a5b4fc)}
|
||
.nav-dot.nd-cur{background:#3730a3;border-color:#3730a3}
|
||
.dark .nav-dot.nd-cur{background:#6366f1;border-color:#6366f1}
|
||
|
||
/* ── Scrollbar ── */
|
||
::-webkit-scrollbar{width:6px;height:6px}
|
||
::-webkit-scrollbar-track{background:transparent}
|
||
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
|
||
::-webkit-scrollbar-thumb:hover{background:var(--muted)}
|
||
|
||
/* ── Para Selector v2 (Designer) ── */
|
||
.para-selector{margin-bottom:24px}
|
||
.psel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}
|
||
/* Card base */
|
||
.psel-card{position:relative;overflow:hidden;border-radius:14px;padding:14px 14px 12px;border:1.5px solid transparent;transition:box-shadow .25s,transform .2s,border-color .25s}
|
||
.psel-card:hover{transform:translateY(-3px)}
|
||
/* Roman numeral watermark */
|
||
.psel-card::before{position:absolute;top:-4px;right:9px;font-family:'Outfit',sans-serif;font-size:3.8rem;font-weight:900;line-height:1;pointer-events:none;opacity:.07;z-index:0;letter-spacing:-.02em}
|
||
/* Top accent strip */
|
||
.psel-card::after{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:14px 14px 0 0}
|
||
/* Card header */
|
||
.psel-card-hdr{position:relative;z-index:1;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border)}
|
||
.psel-card-title{display:block;font-family:'Outfit',sans-serif;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px}
|
||
.psel-card-sub{display:block;font-size:.6rem;font-weight:500;color:var(--muted);opacity:.85}
|
||
.psel-card-pills{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:4px}
|
||
/* Pills — compact squares */
|
||
.psel-card .para-pill{width:30px;height:27px;padding:0!important;display:inline-flex;align-items:center;justify-content:center;font-size:.67rem;font-weight:700;border-radius:7px;transition:transform .15s,box-shadow .15s,background .15s,color .15s}
|
||
.psel-card .para-pill:hover{transform:scale(1.15);z-index:2}
|
||
/* Chapter 1 — Кинематика (blue) */
|
||
.psel-c1{background:linear-gradient(135deg,rgba(37,99,235,.05) 0%,rgba(37,99,235,.01) 100%);border-color:rgba(37,99,235,.18)}
|
||
.psel-c1:hover{border-color:rgba(37,99,235,.38);box-shadow:0 6px 24px rgba(37,99,235,.12)}
|
||
.psel-c1::before{content:'I';color:#2563eb}
|
||
.psel-c1::after{background:linear-gradient(90deg,#2563eb,#60a5fa)}
|
||
.psel-c1 .psel-card-title{color:#2563eb}
|
||
.psel-c1 .para-pill:hover{box-shadow:0 2px 10px rgba(37,99,235,.25)}
|
||
.psel-c1 .para-pill.active{background:#2563eb;border-color:#2563eb;color:#fff;box-shadow:0 2px 8px rgba(37,99,235,.35)}
|
||
/* Chapter 2 — Динамика (orange) */
|
||
.psel-c2{background:linear-gradient(135deg,rgba(234,88,12,.05) 0%,rgba(234,88,12,.01) 100%);border-color:rgba(234,88,12,.18)}
|
||
.psel-c2:hover{border-color:rgba(234,88,12,.38);box-shadow:0 6px 24px rgba(234,88,12,.12)}
|
||
.psel-c2::before{content:'II';color:#ea580c}
|
||
.psel-c2::after{background:linear-gradient(90deg,#ea580c,#fb923c)}
|
||
.psel-c2 .psel-card-title{color:#ea580c}
|
||
.psel-c2 .para-pill:hover{box-shadow:0 2px 10px rgba(234,88,12,.25)}
|
||
.psel-c2 .para-pill.active{background:#ea580c;border-color:#ea580c;color:#fff;box-shadow:0 2px 8px rgba(234,88,12,.35)}
|
||
/* Chapter 3 — Тяготение (green) */
|
||
.psel-c3{background:linear-gradient(135deg,rgba(5,150,105,.05) 0%,rgba(5,150,105,.01) 100%);border-color:rgba(5,150,105,.18)}
|
||
.psel-c3:hover{border-color:rgba(5,150,105,.38);box-shadow:0 6px 24px rgba(5,150,105,.12)}
|
||
.psel-c3::before{content:'III';color:#059669}
|
||
.psel-c3::after{background:linear-gradient(90deg,#059669,#34d399)}
|
||
.psel-c3 .psel-card-title{color:#059669}
|
||
.psel-c3 .para-pill:hover{box-shadow:0 2px 10px rgba(5,150,105,.25)}
|
||
.psel-c3 .para-pill.active{background:#059669;border-color:#059669;color:#fff;box-shadow:0 2px 8px rgba(5,150,105,.35)}
|
||
/* Chapter 4 — Статика (violet) */
|
||
.psel-c4{background:linear-gradient(135deg,rgba(124,58,237,.05) 0%,rgba(124,58,237,.01) 100%);border-color:rgba(124,58,237,.18)}
|
||
.psel-c4:hover{border-color:rgba(124,58,237,.38);box-shadow:0 6px 24px rgba(124,58,237,.12)}
|
||
.psel-c4::before{content:'IV';color:#7c3aed}
|
||
.psel-c4::after{background:linear-gradient(90deg,#7c3aed,#a78bfa)}
|
||
.psel-c4 .psel-card-title{color:#7c3aed}
|
||
.psel-c4 .para-pill:hover{box-shadow:0 2px 10px rgba(124,58,237,.25)}
|
||
.psel-c4 .para-pill.active{background:#7c3aed;border-color:#7c3aed;color:#fff;box-shadow:0 2px 8px rgba(124,58,237,.35)}
|
||
/* Chapter 5 — Гидростатика (cyan) */
|
||
.psel-c5{background:linear-gradient(135deg,rgba(8,145,178,.05) 0%,rgba(8,145,178,.01) 100%);border-color:rgba(8,145,178,.18)}
|
||
.psel-c5:hover{border-color:rgba(8,145,178,.38);box-shadow:0 6px 24px rgba(8,145,178,.12)}
|
||
.psel-c5::before{content:'V';color:#0891b2}
|
||
.psel-c5::after{background:linear-gradient(90deg,#0891b2,#22d3ee)}
|
||
.psel-c5 .psel-card-title{color:#0891b2}
|
||
.psel-c5 .para-pill:hover{box-shadow:0 2px 10px rgba(8,145,178,.25)}
|
||
.psel-c5 .para-pill.active{background:#0891b2;border-color:#0891b2;color:#fff;box-shadow:0 2px 8px rgba(8,145,178,.35)}
|
||
/* Chapter 6 — Энергия (indigo) */
|
||
.psel-c6{background:linear-gradient(135deg,rgba(55,48,163,.05) 0%,rgba(55,48,163,.01) 100%);border-color:rgba(55,48,163,.18)}
|
||
.psel-c6:hover{border-color:rgba(55,48,163,.38);box-shadow:0 6px 24px rgba(55,48,163,.12)}
|
||
.psel-c6::before{content:'VI';color:#3730a3}
|
||
.psel-c6::after{background:linear-gradient(90deg,#3730a3,#818cf8)}
|
||
.psel-c6 .psel-card-title{color:#3730a3}
|
||
.psel-c6 .para-pill:hover{box-shadow:0 2px 10px rgba(55,48,163,.25)}
|
||
.psel-c6 .para-pill.active{background:#3730a3;border-color:#3730a3;color:#fff;box-shadow:0 2px 8px rgba(55,48,163,.35)}
|
||
/* Dark mode */
|
||
.dark .psel-c1{background:linear-gradient(135deg,rgba(37,99,235,.09) 0%,rgba(37,99,235,.02) 100%)}
|
||
.dark .psel-c1::before{color:#60a5fa}.dark .psel-c1 .psel-card-title{color:#60a5fa}
|
||
.dark .psel-c2{background:linear-gradient(135deg,rgba(234,88,12,.09) 0%,rgba(234,88,12,.02) 100%)}
|
||
.dark .psel-c2::before{color:#fb923c}.dark .psel-c2 .psel-card-title{color:#fb923c}
|
||
.dark .psel-c3{background:linear-gradient(135deg,rgba(5,150,105,.09) 0%,rgba(5,150,105,.02) 100%)}
|
||
.dark .psel-c3::before{color:#34d399}.dark .psel-c3 .psel-card-title{color:#34d399}
|
||
.dark .psel-c4{background:linear-gradient(135deg,rgba(124,58,237,.09) 0%,rgba(124,58,237,.02) 100%)}
|
||
.dark .psel-c4::before{color:#a78bfa}.dark .psel-c4 .psel-card-title{color:#a78bfa}
|
||
.dark .psel-c5{background:linear-gradient(135deg,rgba(8,145,178,.09) 0%,rgba(8,145,178,.02) 100%)}
|
||
.dark .psel-c5::before{color:#22d3ee}.dark .psel-c5 .psel-card-title{color:#22d3ee}
|
||
.dark .psel-c6{background:linear-gradient(135deg,rgba(55,48,163,.09) 0%,rgba(55,48,163,.02) 100%)}
|
||
.dark .psel-c6::before{color:#a5b4fc}.dark .psel-c6 .psel-card-title{color:#a5b4fc}
|
||
/* Hard card */
|
||
.psel-hard-card{width:100%;display:flex!important;align-items:center;gap:16px;padding:16px 20px!important;border-radius:14px!important;background:linear-gradient(135deg,#78350f 0%,#92400e 40%,#d97706 100%)!important;border:none!important;cursor:pointer;color:#fff!important;text-align:left;position:relative;overflow:hidden;transition:all .25s}
|
||
.psel-hard-card::before{content:'⚡';position:absolute;right:-4px;top:-8px;font-size:5rem;opacity:.09;pointer-events:none;line-height:1}
|
||
.psel-hard-card:hover{filter:brightness(1.1);box-shadow:0 6px 28px rgba(217,119,6,.4)!important;transform:translateY(-2px)}
|
||
.psel-hard-card.active{background:linear-gradient(135deg,#451a03 0%,#78350f 40%,#f59e0b 100%)!important;box-shadow:0 6px 28px rgba(245,158,11,.5)!important}
|
||
.psel-hard-icon{width:42px;height:42px;border-radius:10px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}
|
||
.psel-hard-body{flex:1;min-width:0}
|
||
.psel-hard-title{font-family:'Outfit',sans-serif;font-size:.9rem;font-weight:800;line-height:1.2;margin-bottom:2px}
|
||
.psel-hard-sub{font-size:.72rem;font-weight:500;opacity:.75}
|
||
.psel-hard-arrow{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:.78rem;flex-shrink:0;transition:transform .2s,background .2s}
|
||
.psel-hard-card:hover .psel-hard-arrow{transform:translateX(3px);background:rgba(255,255,255,.25)}
|
||
|
||
/* ── Responsive ── */
|
||
@media(max-width:560px){
|
||
.ch-btn{font-size:.72rem;padding:9px 11px}
|
||
.hdr h1{font-size:1.3rem}
|
||
.hdr{padding:26px 18px 22px}
|
||
.content{padding:18px 14px}
|
||
.psel-grid{grid-template-columns:1fr 1fr}
|
||
.psel-hard-title{font-size:.82rem}
|
||
}
|
||
</style>
|
||
<style>
|
||
/* ═══════════════════════════════════════════════════════════
|
||
ATLAS v3 — Comprehensive Redesign
|
||
2026-04-16
|
||
═══════════════════════════════════════════════════════════ */
|
||
|
||
/* ── Custom Properties ── */
|
||
:root{
|
||
--bg:#f5f1ea;--card:#ffffff;--card2:#fdfaf4;
|
||
--text:#1c1827;--muted:#70698a;--dim:#9c97b0;
|
||
--border:#e5e0d4;--border2:#ede8df;
|
||
--sh:0 1px 3px rgba(28,24,39,.05),0 4px 16px rgba(28,24,39,.04);
|
||
--sh-lg:0 6px 22px rgba(28,24,39,.08),0 2px 6px rgba(28,24,39,.04);
|
||
--sh-hover:0 10px 30px rgba(28,24,39,.13),0 2px 6px rgba(28,24,39,.05);
|
||
--ok:#0f7a51;--ok-bg:#ebfbf2;--ok-border:#9fdcb8;
|
||
--fail:#c1272d;--fail-bg:#fef2f2;--fail-border:#f5b8ba;
|
||
--warn:#b45309;--warn-bg:#fef7ed;
|
||
--gold:#b87d12;--gold2:#d4a843;--gold-bg:rgba(184,125,18,.06);
|
||
--pri:#3b3097;--pri2:#2f267a;
|
||
--pri-light:rgba(59,48,151,.055);--pri-border:rgba(59,48,151,.16);
|
||
--dot-clr:rgba(28,24,39,.06);
|
||
--r:14px
|
||
}
|
||
.dark{
|
||
--bg:#0c0b14;--card:#131120;--card2:#1a1829;
|
||
--text:#e8e3f5;--muted:#8c87a5;--dim:#5a5672;
|
||
--border:#24213a;--border2:#1c1a2e;
|
||
--sh:0 1px 3px rgba(0,0,0,.35),0 4px 16px rgba(0,0,0,.28);
|
||
--sh-lg:0 6px 22px rgba(0,0,0,.5),0 2px 6px rgba(0,0,0,.3);
|
||
--sh-hover:0 10px 30px rgba(0,0,0,.6);
|
||
--ok:#22c77d;--ok-bg:rgba(34,199,125,.09);--ok-border:rgba(34,199,125,.22);
|
||
--fail:#f16a6a;--fail-bg:rgba(241,106,106,.09);--fail-border:rgba(241,106,106,.22);
|
||
--warn:#e09b3e;--warn-bg:rgba(224,155,62,.09);
|
||
--gold:#d4a843;--gold2:#efc96c;--gold-bg:rgba(212,168,67,.07);
|
||
--pri:#7c74f4;--pri2:#6c63e8;
|
||
--pri-light:rgba(124,116,244,.08);--pri-border:rgba(124,116,244,.2);
|
||
--dot-clr:rgba(255,255,255,.022)
|
||
}
|
||
|
||
/* ── Base ── */
|
||
html,body{height:100%;overflow:hidden}
|
||
body{font-family:'Literata','Georgia',serif;background:var(--bg);color:var(--text);
|
||
-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
|
||
display:flex;flex-direction:column}
|
||
.hdr{flex-shrink:0}
|
||
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
|
||
background-image:radial-gradient(circle,var(--dot-clr) 1px,transparent 1px);
|
||
background-size:26px 26px}
|
||
::selection{background:var(--gold2);color:#fff}
|
||
::-webkit-scrollbar{width:5px;height:5px}
|
||
::-webkit-scrollbar-track{background:transparent}
|
||
::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}
|
||
::-webkit-scrollbar-thumb:hover{background:var(--muted)}
|
||
|
||
/* ── Header ── */
|
||
.hdr{background:linear-gradient(110deg,#0d1b3e 0%,#102a5c 55%,#0e3460 100%);
|
||
padding:22px 28px 20px;position:relative;overflow:hidden;
|
||
border-bottom:2px solid rgba(56,152,255,.18);text-align:left}
|
||
.hdr::before{content:'ФИЗИКА';position:absolute;right:-8px;top:-5%;
|
||
font-family:'Outfit',sans-serif;font-size:clamp(5rem,18vw,14rem);
|
||
font-weight:900;letter-spacing:-.05em;color:transparent;
|
||
-webkit-text-stroke:1.5px rgba(100,180,255,.07);line-height:1;
|
||
pointer-events:none;user-select:none;z-index:0}
|
||
.hdr::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
|
||
background:
|
||
radial-gradient(ellipse 55% 90% at 5% 60%,rgba(0,120,255,.12) 0%,transparent 60%),
|
||
radial-gradient(ellipse 45% 65% at 90% 20%,rgba(0,200,255,.08) 0%,transparent 55%),
|
||
radial-gradient(ellipse 30% 50% at 50% 110%,rgba(56,100,220,.18) 0%,transparent 50%)}
|
||
.hdr-eyebrow{font-family:'Outfit',sans-serif;font-size:.6rem;font-weight:700;
|
||
letter-spacing:.22em;text-transform:uppercase;color:rgba(100,180,255,.6);
|
||
margin-bottom:12px;position:relative;z-index:1}
|
||
.hdr h1{font-family:'Outfit',sans-serif;font-size:clamp(1.55rem,4.5vw,2.2rem);
|
||
font-weight:900;letter-spacing:-.03em;color:#e8f4ff;
|
||
position:relative;z-index:1;line-height:1.1;margin-bottom:0}
|
||
.hdr h1 i{color:#38bdf8;margin-right:.2em}
|
||
.hdr p{font-family:'Outfit',sans-serif;font-size:.7rem;color:rgba(180,225,255,.8);
|
||
margin-top:10px;position:relative;z-index:1;letter-spacing:.07em;
|
||
font-weight:500;text-transform:uppercase}
|
||
.hdr-formula-strip{display:flex;flex-wrap:wrap;gap:6px;margin-top:20px;position:relative;z-index:1}
|
||
.hdr-formula-strip span{font-family:'JetBrains Mono',monospace;font-size:.68rem;
|
||
color:rgba(190,230,255,.88);background:rgba(56,152,255,.15);
|
||
border:1px solid rgba(100,180,255,.3);border-radius:6px;padding:4px 12px}
|
||
|
||
/* ── Chapter Navigation ── */
|
||
.nav-wrap{background:rgba(10,22,52,.97);backdrop-filter:blur(24px);
|
||
-webkit-backdrop-filter:blur(24px);border-bottom:1px solid rgba(56,152,255,.14);
|
||
position:sticky;top:0;z-index:50}
|
||
.dark .nav-wrap{background:rgba(10,22,52,.97);border-bottom-color:rgba(56,152,255,.1)}
|
||
.ch-bar{display:flex;gap:0;padding:0 14px;overflow-x:auto;scrollbar-width:none}
|
||
.ch-bar::-webkit-scrollbar{display:none}
|
||
.ch-btn{padding:13px 16px;border:none;border-bottom:2.5px solid transparent;
|
||
background:transparent;font-family:'Outfit',sans-serif;font-size:.68rem;font-weight:700;
|
||
color:rgba(180,220,255,.78);cursor:pointer;white-space:nowrap;
|
||
letter-spacing:.06em;text-transform:uppercase;
|
||
transition:color .18s,border-color .18s;flex-shrink:0}
|
||
.ch-btn:hover{color:rgba(160,210,255,.7)}
|
||
.ch-btn.active{color:#38bdf8;border-bottom-color:#38bdf8}
|
||
.dark .ch-btn.active{color:#38bdf8;border-bottom-color:#38bdf8}
|
||
.sec-bar{padding:8px 14px 12px;border-top:1px solid rgba(56,152,255,.1);
|
||
background:rgba(8,18,45,.97)}
|
||
.sec-group{display:none;flex-wrap:wrap;gap:5px}
|
||
.sec-group.show{display:flex}
|
||
|
||
/* ── Section Tabs ── */
|
||
.tab{font-family:'Outfit',sans-serif;font-size:.68rem;font-weight:600;
|
||
letter-spacing:.03em;padding:5px 12px;
|
||
border:1px solid rgba(56,152,255,.16);border-radius:7px;
|
||
background:rgba(56,152,255,.07);color:rgba(140,200,255,.45);
|
||
transition:all .15s;cursor:pointer;white-space:nowrap;flex-shrink:0}
|
||
.tab:hover{border-color:rgba(56,189,248,.4);color:#38bdf8;background:rgba(56,189,248,.1)}
|
||
.tab.active{background:#1d6fb5;border-color:#38bdf8;color:#e8f4ff;
|
||
box-shadow:0 2px 10px rgba(56,189,248,.25)}
|
||
.dark .tab.active{background:#1d6fb5;border-color:#38bdf8;
|
||
box-shadow:0 2px 10px rgba(56,189,248,.25)}
|
||
|
||
/* ── Content ── */
|
||
.content{max-width:820px;padding:28px 20px;display:none;position:relative;z-index:1}
|
||
.content.active{display:block;animation:fadeUp .28s ease}
|
||
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
|
||
|
||
/* ── Section Title ── */
|
||
.section-title{font-family:'Outfit',sans-serif;font-size:.7rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.15em;color:var(--pri);
|
||
display:flex;align-items:center;gap:10px;margin-bottom:18px}
|
||
.section-title::before{content:'';display:block;width:18px;height:2px;
|
||
background:var(--pri);border-radius:1px;flex-shrink:0}
|
||
.section-title i{display:none}
|
||
|
||
/* ── Formula Grid & Cards ── */
|
||
.formula-grid{gap:14px;margin-bottom:22px}
|
||
.fcard{border:1px solid var(--border);border-radius:16px;padding:20px 22px;
|
||
background:var(--card);box-shadow:var(--sh);position:relative;overflow:hidden;
|
||
transition:transform .25s,box-shadow .25s}
|
||
.fcard::before{content:'';position:absolute;top:0;left:0;bottom:0;width:3px;
|
||
background:var(--pri);border-radius:16px 0 0 16px;opacity:.8}
|
||
.fcard:hover{transform:translateY(-3px);box-shadow:var(--sh-hover)}
|
||
.fcard h3{font-family:'Outfit',sans-serif;font-size:.68rem;font-weight:700;
|
||
text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:14px}
|
||
.fcard .main-f{background:var(--pri-light);border:1px solid var(--pri-border);
|
||
border-radius:10px;padding:14px 18px;font-size:1.08rem;margin:0 0 12px;text-align:center}
|
||
.fcard p,.fcard ul{font-size:.84rem;color:var(--muted);line-height:1.82}
|
||
.fcard.highlight{border-color:var(--pri-border)}
|
||
.dark .fcard{background:var(--card)}
|
||
|
||
/* ── Example Box ── */
|
||
.example-box{border:1px solid var(--border);border-left:4px solid var(--pri);
|
||
border-radius:0 16px 16px 0;padding:20px 24px;background:var(--card);
|
||
box-shadow:var(--sh);margin-bottom:22px}
|
||
.dark .example-box{background:var(--card)}
|
||
.example-box h3{font-family:'Outfit',sans-serif;font-size:.74rem;font-weight:800;
|
||
color:var(--pri);text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px}
|
||
.example-box .cond{background:var(--pri-light);border:1px solid var(--pri-border);
|
||
border-radius:10px;padding:12px 16px;font-size:.87rem;line-height:1.8}
|
||
.dark .example-box .cond{background:var(--pri-light)}
|
||
|
||
/* ── Para Hero ── */
|
||
.para-hero{border-radius:20px;padding:28px 30px;position:relative;overflow:hidden;
|
||
box-shadow:0 6px 26px rgba(0,0,0,.2);margin-bottom:26px}
|
||
.para-hero::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;
|
||
background:linear-gradient(135deg,rgba(255,255,255,.11) 0%,transparent 55%)}
|
||
.para-hero::after{content:'';position:absolute;right:-32px;top:-32px;width:170px;height:170px;
|
||
border-radius:50%;opacity:.11;pointer-events:none;z-index:0}
|
||
.para-hero .ph-label,.para-hero h2,.para-hero .ph-formula,
|
||
.para-hero .ph-desc,.para-hero .ph-tags{position:relative;z-index:1}
|
||
.para-hero .ph-label{font-family:'Outfit',sans-serif;font-size:.6rem;font-weight:700;
|
||
letter-spacing:.2em;text-transform:uppercase;opacity:.62;margin-bottom:8px;display:block}
|
||
.para-hero h2{font-family:'Outfit',sans-serif;font-size:1.25rem;font-weight:900;
|
||
letter-spacing:-.02em;line-height:1.2;margin-bottom:10px}
|
||
.para-hero .ph-formula{display:inline-block;background:rgba(255,255,255,.2);
|
||
border:1px solid rgba(255,255,255,.3);border-radius:10px;padding:8px 18px;
|
||
font-size:1rem;font-weight:700;margin:2px 0 12px}
|
||
.para-hero .ph-desc{font-family:'Literata',serif;font-size:.84rem;opacity:.88;
|
||
line-height:1.72;margin-bottom:14px}
|
||
.para-hero .ph-tags{display:flex;flex-wrap:wrap;gap:6px}
|
||
.para-hero .ph-tag{font-family:'Outfit',sans-serif;font-size:.6rem;font-weight:700;
|
||
letter-spacing:.06em;text-transform:uppercase;background:rgba(255,255,255,.18);
|
||
border:1px solid rgba(255,255,255,.24);border-radius:20px;padding:4px 12px}
|
||
|
||
/* ── Info Boxes (left-stripe style) ── */
|
||
.remember-box{background:rgba(193,39,45,.04);border:1px solid rgba(193,39,45,.16);
|
||
border-left:3.5px solid #c1272d;border-radius:0 12px 12px 0;padding:16px 18px;margin:16px 0}
|
||
.dark .remember-box{background:rgba(241,106,106,.06);border-color:rgba(241,106,106,.16);border-left-color:#f16a6a}
|
||
.remember-box-title{font-family:'Outfit',sans-serif;font-size:.7rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.1em;color:#c1272d;margin-bottom:8px;display:flex;align-items:center;gap:7px}
|
||
.dark .remember-box-title{color:#f16a6a}
|
||
.remember-box li,.remember-box p{font-size:.85rem;line-height:1.88}
|
||
|
||
.mistakes-box{background:rgba(180,83,9,.04);border:1px solid rgba(180,83,9,.16);
|
||
border-left:3.5px solid #b45309;border-radius:0 12px 12px 0;padding:16px 18px;margin:16px 0}
|
||
.dark .mistakes-box{background:rgba(224,155,62,.07);border-color:rgba(224,155,62,.16);border-left-color:#e09b3e}
|
||
.mistakes-box-title{font-family:'Outfit',sans-serif;font-size:.7rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.1em;color:#b45309;margin-bottom:8px;display:flex;align-items:center;gap:7px}
|
||
.dark .mistakes-box-title{color:#e09b3e}
|
||
.mistakes-box li{font-size:.85rem;line-height:1.88}
|
||
|
||
.student-box{background:var(--gold-bg);border:1px solid rgba(184,125,18,.18);
|
||
border-left:3.5px solid var(--gold);border-radius:0 14px 14px 0;
|
||
padding:18px 20px;margin:16px 0;line-height:1.75}
|
||
.dark .student-box{background:rgba(212,168,67,.06);border-color:rgba(212,168,67,.16);border-left-color:var(--gold)}
|
||
.student-box-title{font-family:'Outfit',sans-serif;font-size:.7rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.1em;color:var(--gold);margin-bottom:10px;display:flex;align-items:center;gap:7px}
|
||
.dark .student-box-title{color:var(--gold2)}
|
||
.student-box p{font-size:.86rem;color:var(--text);margin:0 0 8px}
|
||
.student-box p:last-child{margin-bottom:0}
|
||
.student-box b{color:var(--gold)}.dark .student-box b{color:var(--gold2)}
|
||
|
||
.insight-box{background:var(--pri-light);border:1px solid var(--pri-border);
|
||
border-left:3.5px solid var(--pri);border-radius:0 12px 12px 0;padding:16px 18px;margin:16px 0}
|
||
.dark .insight-box{background:var(--pri-light);border-color:var(--pri-border)}
|
||
.insight-title{font-family:'Outfit',sans-serif;font-size:.7rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.1em;color:var(--pri);margin-bottom:7px;display:flex;align-items:center;gap:7px}
|
||
.dark .insight-title{color:var(--pri)}
|
||
.insight-box p{font-size:.85rem;line-height:1.82;margin:0 0 6px}
|
||
|
||
.def-box{background:var(--pri-light);border:1px solid var(--pri-border);
|
||
border-left:3.5px solid var(--pri);border-radius:0 10px 10px 0;
|
||
padding:13px 16px;font-size:.88rem;line-height:1.82;margin-bottom:16px}
|
||
.dark .def-box{background:var(--pri-light);border-left-color:var(--pri)}
|
||
|
||
/* ── Score & Progress ── */
|
||
.score-bar{font-family:'Outfit',sans-serif}
|
||
.chip{font-family:'Outfit',sans-serif;font-size:.8rem;font-weight:700;border-radius:8px}
|
||
.chip-ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-border)}
|
||
.chip-tot{background:var(--card);color:var(--muted);border:1px solid var(--border)}
|
||
.prog-wrap{height:4px;border-radius:99px;background:var(--border2);overflow:hidden;margin-bottom:18px}
|
||
.prog-fill{height:100%;border-radius:99px;transition:width .5s cubic-bezier(.16,1,.3,1);
|
||
background:linear-gradient(90deg,var(--pri),var(--gold2))}
|
||
.dark .prog-fill{background:linear-gradient(90deg,var(--pri),var(--gold2))}
|
||
|
||
/* ── Nav Dots ── */
|
||
.nav-dots{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:16px}
|
||
.nav-dot{font-family:'Outfit',sans-serif;font-size:.68rem;font-weight:700;
|
||
min-width:30px;height:30px;padding:0 6px;border-radius:8px;
|
||
border:1.5px solid var(--border);background:var(--card);color:var(--muted);
|
||
cursor:pointer;display:grid;place-items:center;transition:all .14s}
|
||
.nav-dot:hover{border-color:var(--pri);color:var(--pri)}
|
||
.nav-dot.nd-cur{background:var(--pri);border-color:var(--pri);color:#fff}
|
||
.nav-dot.nd-ok{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}
|
||
.nav-dot.nd-fail{background:var(--fail-bg);border-color:var(--fail-border);color:var(--fail)}
|
||
|
||
/* ── Task Card ── */
|
||
.task-card{background:var(--card);border:1px solid var(--border);
|
||
border-radius:16px;padding:24px 26px;box-shadow:var(--sh);
|
||
margin-bottom:14px;position:relative;overflow:hidden}
|
||
.task-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;
|
||
background:linear-gradient(90deg,var(--pri) 0%,transparent 70%)}
|
||
.task-num{font-family:'Outfit',sans-serif;font-size:.65rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.16em;color:var(--pri);
|
||
margin-bottom:10px;display:flex;align-items:center;gap:.45em}
|
||
.task-num::before{content:'//';opacity:.35;font-weight:900}
|
||
.task-text{font-family:'Literata',serif;font-size:.97rem;font-weight:500;
|
||
line-height:1.92;margin-bottom:16px}
|
||
.task-hint{font-size:.8rem;color:var(--muted);margin-top:0;margin-bottom:14px;
|
||
display:flex;align-items:flex-start;gap:7px;
|
||
background:var(--warn-bg);padding:9px 13px;border-radius:9px;
|
||
border-left:3px solid var(--warn)}
|
||
.task-hint i{color:var(--warn);margin-top:2px;flex-shrink:0}
|
||
|
||
/* ── Answer Input ── */
|
||
.ans-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
|
||
.ans-inp{width:118px;padding:12px 14px;border:1.5px solid var(--border);border-radius:10px;
|
||
font-family:'JetBrains Mono',monospace;font-size:1.1rem;font-weight:700;
|
||
text-align:center;background:var(--card);color:var(--text);
|
||
outline:none;transition:border-color .18s,box-shadow .18s}
|
||
.ans-inp:focus{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-light)}
|
||
.dark .ans-inp{background:var(--card2)}
|
||
.unit-lbl{font-family:'Outfit',sans-serif;font-size:.82rem;font-weight:600;color:var(--muted);white-space:nowrap}
|
||
|
||
/* ── Buttons ── */
|
||
.btn{font-family:'Outfit',sans-serif;font-size:.82rem;font-weight:700;letter-spacing:.02em;
|
||
padding:11px 22px;border-radius:10px;transition:all .2s;border:none;cursor:pointer;
|
||
display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
|
||
.btn:active{transform:scale(.97)}
|
||
.btn-pri{background:var(--pri);color:#fff;box-shadow:0 2px 10px rgba(59,48,151,.18)}
|
||
.btn-pri:hover{background:var(--pri2);box-shadow:0 4px 18px rgba(59,48,151,.3);transform:translateY(-1px)}
|
||
.dark .btn-pri{background:#6056d4}.dark .btn-pri:hover{background:#5248c0}
|
||
.btn-ghost{background:transparent;border:1.5px solid var(--border);color:var(--muted)}
|
||
.btn-ghost:hover{border-color:var(--pri);color:var(--pri);background:var(--pri-light)}
|
||
.btn-next{background:var(--ok);color:#fff;box-shadow:0 2px 10px rgba(15,122,81,.18)}
|
||
.btn-next:hover{filter:brightness(1.08);transform:translateY(-1px)}
|
||
|
||
/* ── Feedback ── */
|
||
.feedback{display:none;padding:14px 18px;border-radius:12px;
|
||
font-family:'Outfit',sans-serif;font-size:.88rem;font-weight:600;
|
||
line-height:1.72;margin-top:12px;border-left:4px solid}
|
||
.feedback.show{display:block;animation:fb-in .28s cubic-bezier(.16,1,.3,1)}
|
||
@keyframes fb-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
|
||
.fb-ok{background:var(--ok-bg);color:var(--ok);border-left-color:var(--ok)}
|
||
.fb-fail{background:var(--fail-bg);color:var(--fail);border-left-color:var(--fail)}
|
||
|
||
/* ── MCQ ── */
|
||
.mcq-opts{display:flex;flex-direction:column;gap:8px;margin-top:4px}
|
||
.mcq-opt{padding:13px 18px;border:1.5px solid var(--border);border-radius:12px;
|
||
background:var(--card);font-family:'Literata',serif;font-size:.93rem;
|
||
color:var(--text);text-align:left;width:100%;cursor:pointer;
|
||
transition:all .15s;line-height:1.55}
|
||
.mcq-opt:hover:not(:disabled){border-color:var(--pri);background:var(--pri-light)}
|
||
.mcq-opt.mcq-cor{background:var(--ok-bg)!important;border-color:var(--ok-border)!important;
|
||
color:var(--ok)!important;font-weight:600}
|
||
.mcq-opt.mcq-wrong{background:var(--fail-bg)!important;border-color:var(--fail-border)!important;
|
||
color:var(--fail)!important}
|
||
.mcq-opt:disabled{cursor:default}
|
||
|
||
/* ── Summary ── */
|
||
.summary{background:var(--card);border:1px solid var(--border);border-radius:20px;
|
||
padding:40px 36px;text-align:center;box-shadow:var(--sh-lg);
|
||
position:relative;overflow:hidden;display:none}
|
||
.summary.show{display:block;animation:fadeUp .35s ease}
|
||
.summary::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;
|
||
background:linear-gradient(90deg,var(--pri) 0%,var(--gold2) 100%)}
|
||
.summary h2{font-family:'Outfit',sans-serif;font-size:1.3rem;font-weight:900;
|
||
letter-spacing:-.02em;margin-bottom:6px}
|
||
.big-score{font-family:'Outfit',sans-serif;font-size:5rem;font-weight:900;
|
||
letter-spacing:-.04em;color:var(--pri);line-height:1;margin:10px 0}
|
||
.sum-grade{font-family:'Outfit',sans-serif;font-size:.9rem;color:var(--muted);margin-bottom:28px}
|
||
.sum-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
|
||
|
||
/* ── Interactive Diagrams ── */
|
||
.idiag{background:var(--card);border:1px solid var(--border);border-radius:16px;
|
||
padding:18px 20px;box-shadow:var(--sh);margin:14px 0}
|
||
.idiag h3{font-family:'Outfit',sans-serif;font-size:.68rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.1em;color:var(--muted);
|
||
margin-bottom:14px;display:flex;align-items:center;gap:7px}
|
||
.idiag-result{background:var(--pri-light);border:1px solid var(--pri-border);
|
||
border-radius:10px;padding:12px 16px;font-size:.92rem;font-weight:700;
|
||
text-align:center;font-family:'JetBrains Mono',monospace;color:var(--pri)}
|
||
.slider-lbl{font-family:'Outfit',sans-serif;font-size:.82rem;font-weight:600;color:var(--text);min-width:90px}
|
||
.slider-val{font-family:'JetBrains Mono',monospace;font-weight:800;color:var(--pri);min-width:72px;font-size:.82rem}
|
||
input[type=range]{accent-color:var(--pri);cursor:pointer}
|
||
|
||
/* ── Solution Steps ── */
|
||
.sol-steps{list-style:none;padding:0;margin:8px 0}
|
||
.sol-steps li{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:.86rem;line-height:1.78}
|
||
.step-n{min-width:24px;height:24px;border-radius:50%;background:var(--pri);color:#fff;
|
||
font-family:'Outfit',sans-serif;font-size:.68rem;font-weight:800;
|
||
display:grid;place-items:center;margin-top:1px;flex-shrink:0}
|
||
|
||
/* ── Formula Chain ── */
|
||
.fchain{display:flex;flex-wrap:wrap;align-items:center;gap:8px;
|
||
background:var(--pri-light);border:1px solid var(--border);
|
||
border-radius:11px;padding:11px 15px;margin:10px 0;font-size:.82rem}
|
||
.fchain-step{background:var(--card);border:1.5px solid var(--border);border-radius:8px;
|
||
padding:4px 12px;font-family:'JetBrains Mono',monospace;font-size:.78rem;font-weight:600}
|
||
.fchain-arrow{color:var(--muted);font-weight:700}
|
||
.fchain-note{font-size:.73rem;color:var(--muted);font-style:italic}
|
||
|
||
/* ── Reference Panel ── */
|
||
.ref-toggle{border-radius:14px;background:var(--pri);color:#fff;border:none;
|
||
width:46px;height:46px;cursor:pointer;display:grid;place-items:center;
|
||
font-size:1.1rem;box-shadow:0 4px 16px rgba(59,48,151,.3)}
|
||
.dark .ref-toggle{background:var(--pri);box-shadow:0 4px 16px rgba(124,116,244,.3)}
|
||
.ref-panel{background:var(--card);border:1px solid var(--border);border-radius:18px;
|
||
padding:16px 18px;box-shadow:var(--sh-lg);display:none;
|
||
position:fixed;bottom:72px;right:16px;z-index:60;width:300px;
|
||
max-height:72vh;overflow-y:auto;font-size:.8rem;line-height:1.85;scrollbar-width:thin}
|
||
.ref-panel.show{display:block;animation:fadeUp .2s ease}
|
||
.ref-panel h3{font-family:'Outfit',sans-serif;font-size:.72rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.1em;color:var(--pri);margin:12px 0 5px}
|
||
.ref-panel h3:first-child{margin-top:0}
|
||
.ref-panel .rf{background:var(--pri-light);border:1px solid var(--pri-border);
|
||
border-radius:8px;padding:7px 12px;margin:3px 0;text-align:center}
|
||
|
||
/* ── Theme Button ── */
|
||
.theme-btn{position:fixed;top:12px;right:12px;z-index:60;width:38px;height:38px;
|
||
border-radius:10px;background:rgba(240,236,255,.12);border:1px solid rgba(255,255,255,.12);
|
||
cursor:pointer;display:grid;place-items:center;font-size:1rem;
|
||
color:rgba(240,236,255,.6);box-shadow:none}
|
||
.theme-btn:hover{background:rgba(240,236,255,.18);color:#d4a843}
|
||
|
||
/* ── Canvas ── */
|
||
.cv-wrap canvas{border-radius:10px}
|
||
.cv-playbtn{font-family:'Outfit',sans-serif;background:var(--pri);color:#fff;
|
||
border:none;border-radius:8px;padding:7px 18px;font-weight:700;font-size:.78rem;cursor:pointer}
|
||
.cv-playbtn:hover{filter:brightness(1.08)}
|
||
|
||
/* ── Solve Box ── */
|
||
.solve-box{background:var(--card);border:1.5px solid var(--border);border-radius:12px;padding:16px 20px;margin:14px 0}
|
||
.solve-box h4{font-family:'Outfit',sans-serif;font-size:.76rem;font-weight:800;
|
||
text-transform:uppercase;letter-spacing:.1em;color:var(--pri);margin-bottom:10px;display:flex;align-items:center;gap:6px}
|
||
|
||
/* ── Misc ── */
|
||
.info-badge{font-family:'Outfit',sans-serif;font-size:.68rem;font-weight:700;
|
||
background:var(--pri-light);color:var(--pri);border-radius:20px;padding:3px 10px}
|
||
.life-item{background:var(--card);border:1px solid var(--border);border-radius:14px;
|
||
padding:12px 10px;text-align:center;box-shadow:var(--sh)}
|
||
.life-item .li-title{font-family:'Outfit',sans-serif;font-size:.8rem;font-weight:700}
|
||
.life-item .li-desc{font-size:.72rem;color:var(--muted);line-height:1.6}
|
||
hr.divider{border:none;border-top:1px solid var(--border2);margin:22px 0}
|
||
.q-list{font-size:.88rem;line-height:1.92;color:var(--muted);padding-left:20px}
|
||
.q-list li{margin-bottom:4px}
|
||
.given-table td{border-color:var(--border);font-size:.82rem}
|
||
.given-table tr:first-child td{background:var(--pri-light)}
|
||
.given-table tr:last-child td{background:var(--ok-bg)}
|
||
.given-table td:first-child{font-family:'Outfit',sans-serif;color:var(--pri)}
|
||
.para-badge{font-family:'Outfit',sans-serif;border-radius:6px}
|
||
.nb-hdr{font-family:'Outfit',sans-serif;color:var(--gold)}
|
||
.dark .nb-hdr{color:var(--gold2)}
|
||
.nb-clbl{color:var(--pri)}
|
||
.nb-v{color:var(--pri);font-family:'JetBrains Mono',monospace;font-weight:800}
|
||
.dark .nb-v{color:var(--pri)}
|
||
.nb-box{background:var(--pri-light);border-color:var(--pri-border);color:var(--pri)}
|
||
.dark .nb-box{background:var(--pri-light);border-color:var(--pri-border);color:var(--pri)}
|
||
.lab11-tbl th{font-family:'Outfit',sans-serif;background:var(--pri-light);color:var(--pri);border-color:var(--border)}
|
||
.lab11-tbl td{border-color:var(--border);background:var(--card)}
|
||
.lab11-tbl tr.lab11-avg td{background:var(--pri-light);color:var(--pri)}
|
||
.dark .fcard{background:var(--card)}
|
||
.dark .ans-inp{background:var(--card2);color:var(--text)}
|
||
|
||
/* ── Sidebar Brand ── */
|
||
.sb-brand{display:flex;align-items:center;gap:11px;padding:18px 14px 16px;
|
||
border-bottom:1px solid rgba(56,152,255,.1)}
|
||
.sb-logo{width:32px;height:32px;color:#38bdf8;flex-shrink:0}
|
||
.sb-title{display:block;font-family:'Outfit',sans-serif;font-size:.92rem;
|
||
font-weight:800;color:#e8f4ff;letter-spacing:-.025em;line-height:1.1}
|
||
.sb-sub{display:block;font-family:'JetBrains Mono',monospace;font-size:.54rem;
|
||
color:rgba(140,200,255,.38);margin-top:3px;letter-spacing:.03em}
|
||
|
||
/* ── Chapter icon + label + badge ── */
|
||
.ch-icon{width:14px;height:14px;flex-shrink:0;opacity:.55;
|
||
transition:opacity .15s,color .15s}
|
||
.ch-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
|
||
.ch-roman{font-family:'Cormorant Garamond',serif;font-size:.7rem;
|
||
color:rgba(140,200,255,.45);font-weight:400;font-style:italic;flex-shrink:0}
|
||
.ch-count{font-family:'JetBrains Mono',monospace;font-size:.5rem;
|
||
background:rgba(56,152,255,.14);color:rgba(160,215,255,.65);
|
||
border-radius:4px;padding:1px 5px;flex-shrink:0;line-height:1.6}
|
||
.sidebar .ch-btn{display:flex;align-items:center;gap:8px}
|
||
.sidebar .ch-btn.active .ch-icon{opacity:1;color:#38bdf8}
|
||
.sidebar .ch-btn.active .ch-roman{color:rgba(56,189,248,.38)}
|
||
.sidebar .ch-btn.active .ch-count{background:rgba(56,189,248,.18);color:#38bdf8}
|
||
.sidebar .ch-btn:hover .ch-icon{opacity:.85}
|
||
|
||
/* ── Section tab: § number + name ── */
|
||
.sidebar .tab{display:flex!important;align-items:baseline;gap:0}
|
||
.tab-num{font-family:'JetBrains Mono',monospace;font-size:.64rem;
|
||
color:rgba(56,189,248,.55);flex-shrink:0;min-width:32px;
|
||
transition:color .15s}
|
||
.tab-name{font-family:'Outfit',sans-serif;font-size:.74rem;
|
||
line-height:1.35;white-space:normal}
|
||
.sidebar .tab.active .tab-num{color:#38bdf8}
|
||
.sidebar .tab:hover .tab-num{color:rgba(56,189,248,.8)}
|
||
|
||
/* ── Page Layout (sidebar) ── */
|
||
.page-layout{display:grid;grid-template-columns:220px 1fr;flex:1;min-height:0;overflow:hidden}
|
||
.sidebar{position:static;height:100%;overflow-y:auto;overflow-x:hidden;
|
||
background:rgba(8,16,42,.99);border-right:1px solid rgba(56,152,255,.1);
|
||
scrollbar-width:thin;scrollbar-color:rgba(56,152,255,.2) transparent}
|
||
.sidebar::-webkit-scrollbar{width:3px}
|
||
.sidebar::-webkit-scrollbar-thumb{background:rgba(56,152,255,.2);border-radius:99px}
|
||
.main-content{min-width:0;overflow-y:auto;overflow-x:hidden;height:100%}
|
||
.sidebar .nav-wrap{position:static;background:transparent;border-bottom:none;
|
||
backdrop-filter:none;-webkit-backdrop-filter:none}
|
||
.sidebar .ch-bar{flex-direction:column;padding:14px 10px 8px;gap:1px;overflow-x:visible}
|
||
.sidebar .ch-btn{border-bottom:none!important;border-left:2.5px solid transparent;
|
||
text-align:left;padding:8px 12px;border-radius:7px;font-size:.72rem;
|
||
letter-spacing:.03em;width:100%}
|
||
.sidebar .ch-btn:hover{background:rgba(56,152,255,.07);border-left-color:rgba(56,152,255,.22)}
|
||
.sidebar .ch-btn.active{border-left-color:#38bdf8!important;border-bottom:none!important;
|
||
background:rgba(56,152,255,.11);color:#38bdf8}
|
||
.sidebar .sec-bar{border-top:1px solid rgba(56,152,255,.1);padding:8px 10px 18px;
|
||
background:transparent}
|
||
.sidebar .sec-group{flex-direction:column;gap:1px}
|
||
.sidebar .tab{display:block;text-align:left;border:none!important;
|
||
background:transparent!important;color:rgba(170,215,255,.72)!important;
|
||
border-radius:5px;padding:5px 10px;font-size:.74rem;white-space:normal;
|
||
line-height:1.3;box-shadow:none!important}
|
||
.sidebar .tab:hover{background:rgba(56,152,255,.09)!important;color:#c8e8ff!important}
|
||
.sidebar .tab.active{background:rgba(56,152,255,.16)!important;color:#e8f4ff!important;
|
||
border-left:2px solid #38bdf8!important;padding-left:8px!important}
|
||
|
||
/* ── Responsive override ── */
|
||
@media(max-width:768px){
|
||
.page-layout{grid-template-columns:1fr;flex:1;min-height:0;overflow:visible}
|
||
.sidebar{height:auto;overflow-y:visible;border-right:none;
|
||
border-bottom:1px solid rgba(56,152,255,.12)}
|
||
.main-content{height:auto;overflow-y:visible}
|
||
.sidebar .ch-bar{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;padding:0 10px}
|
||
.sidebar .ch-btn{white-space:nowrap;border-left:none!important;width:auto;
|
||
border-bottom:2.5px solid transparent!important;padding:11px 13px;border-radius:0}
|
||
.sidebar .ch-btn.active{border-left:none!important;border-bottom-color:#38bdf8!important;
|
||
background:transparent;color:#38bdf8}
|
||
.sidebar .sec-bar{border-top:1px solid rgba(56,152,255,.1)}
|
||
.sidebar .sec-group{flex-direction:row;flex-wrap:wrap}
|
||
.sidebar .tab{display:inline-block!important;white-space:nowrap;
|
||
border:1px solid rgba(56,152,255,.16)!important;
|
||
background:rgba(56,152,255,.07)!important;
|
||
color:rgba(140,200,255,.45)!important;border-radius:7px!important;
|
||
padding:5px 12px!important}
|
||
.hdr{padding:16px 16px 14px}
|
||
.hdr h1{font-size:1.45rem}
|
||
.hdr-formula-strip{gap:5px}
|
||
.hdr-formula-strip span{font-size:.62rem;padding:3px 9px}
|
||
.content{padding:20px 14px}
|
||
.task-card{padding:18px 18px}
|
||
.fcard{padding:16px 18px}
|
||
.para-hero{padding:22px 22px}
|
||
.summary{padding:30px 22px}
|
||
.big-score{font-size:4rem}
|
||
.psel-grid{grid-template-columns:1fr 1fr!important}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<button class="theme-btn" id="themeBtn"><i class="fas fa-moon"></i></button>
|
||
<button class="ref-toggle" id="refToggle" title="Формулы"><i class="fas fa-atom"></i></button>
|
||
|
||
<!-- Плавающий справочник -->
|
||
<div class="ref-panel" id="refPanel">
|
||
|
||
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border)">
|
||
<span style="font-size:.82rem;font-weight:800;color:var(--pri)">📋 Справочник · §31–36</span>
|
||
<button onclick="document.getElementById('refPanel').classList.remove('show')"
|
||
style="background:none;border:none;cursor:pointer;color:var(--muted);font-size:1rem;line-height:1;padding:2px 4px;border-radius:5px" title="Закрыть">✕</button>
|
||
</div>
|
||
|
||
<h3>§15 — Первый закон Ньютона</h3>
|
||
<div class="rf">$\vec{F}_\text{рез} = \vec{0} \Leftrightarrow \vec{a} = \vec{0}$</div>
|
||
<p style="font-size:.75rem">Тело покоится или движется равномерно прямолинейно, если равнодействующая = 0.</p>
|
||
|
||
<h3>§16 — Масса. Сила тяжести</h3>
|
||
<div class="rf">$F_\text{т} = mg$</div>
|
||
<div class="rf">$m = \rho V$</div>
|
||
<p style="font-size:.75rem">$[m]=\text{кг}$ · скалярная · не зависит от планеты</p>
|
||
|
||
<h3>§17 — Второй закон Ньютона</h3>
|
||
<div class="rf">$\vec{F}_\text{рез} = m\vec{a}$</div>
|
||
<div class="rf">$\vec{a} = \vec{F}_\text{рез}/m$</div>
|
||
<p style="font-size:.75rem">$1\,\text{Н} = 1\,\dfrac{\text{кг}{\cdot}\text{м}}{\text{с}^2}$ · только в ИСО</p>
|
||
|
||
<h3>§18 — Третий закон Ньютона</h3>
|
||
<div class="rf">$\vec{F}_{1\to2} = -\vec{F}_{2\to1}$</div>
|
||
<p style="font-size:.75rem">Равны по модулю, противоположны, одной природы, на разных телах.</p>
|
||
|
||
<h3>§19 — Закон Гука</h3>
|
||
<div class="rf">$F_\text{упр} = k|\Delta l|$</div>
|
||
<div class="rf">$F_{\text{упр},x} = -kx$</div>
|
||
<p style="font-size:.75rem">$k$ — жёсткость [Н/м] · $k = F/|\Delta l|$</p>
|
||
|
||
<h3>§20 — Силы трения</h3>
|
||
<div class="rf">$F_\text{тр} = \mu N$</div>
|
||
<div class="rf">$F_\text{тр.пок}^{max} = \mu_\text{пок} N$</div>
|
||
<p style="font-size:.75rem">$\mu$ — коэфф. трения · против скорости</p>
|
||
|
||
<h3>§21 — Свободное падение</h3>
|
||
<div class="rf">$v_y = gt;\quad y = gt^2/2$</div>
|
||
<div class="rf">$t_\text{пад} = \sqrt{2h/g}$</div>
|
||
<div class="rf">$v_\text{пад} = \sqrt{2gh}$</div>
|
||
<p style="font-size:.75rem">Горизонтальный бросок: $x = v_0 t$; $l = v_0\sqrt{2h/g}$</p>
|
||
<p style="font-size:.75rem">Вверх: $H = v_0^2/(2g)$; $t_\text{пол} = 2v_0/g$</p>
|
||
|
||
<h3>§31 — Импульс тела</h3>
|
||
<div class="rf">$\vec{p} = m\vec{v}$</div>
|
||
<p style="font-size:.75rem">$[\,p\,] = \text{кг}{\cdot}\text{м/с}$ · направление ∥ $\vec{v}$</p>
|
||
<div class="rf">$\Delta\vec{p} = \vec{F}\,\Delta t$</div>
|
||
<div class="rf">$\vec{p}_{\text{сист}} = \sum \vec{p}_i$</div>
|
||
<div class="rf">$\Delta\vec{p}_{\text{сист}} = \vec{F}_{\text{внешн}}\,\Delta t$</div>
|
||
|
||
<h3>§32 — Закон сохранения импульса</h3>
|
||
<p style="font-size:.75rem">Замкнутая система ($F_{\text{внешн}}=0$):</p>
|
||
<div class="rf">$\vec{p}_{\text{сист}} = \text{const}$</div>
|
||
<p style="font-size:.75rem">Неупругий удар:</p>
|
||
<div class="rf">$m_1 v_1 + m_2 v_2 = (m_1{+}m_2)v$</div>
|
||
<p style="font-size:.75rem">Из покоя (отдача, ракета):</p>
|
||
<div class="rf">$m_1 v_1 + m_2 v_2 = 0$</div>
|
||
|
||
<h3>§33 — Механическая работа. Мощность</h3>
|
||
<div class="rf">$A = F\,\Delta r\cos\alpha$</div>
|
||
<div class="rf">$A = mgh$ (подъём тела)</div>
|
||
<div class="rf">$A = kx^2/2$ (деформация пружины)</div>
|
||
<div class="rf">$P = A/\Delta t$</div>
|
||
<div class="rf">$P = Fv\cos\alpha$</div>
|
||
<p style="font-size:.75rem">$[A]=\text{Дж}=\text{Н}{\cdot}\text{м}$ · $[P]=\text{Вт}=\text{Дж/с}$</p>
|
||
<p style="font-size:.75rem">α острый → A > 0 · α = 90° → A = 0 · α тупой → A < 0</p>
|
||
|
||
<h3>§34 — Потенциальная энергия</h3>
|
||
<div class="rf">$E_\text{п} = mgh$ (гравитационная)</div>
|
||
<div class="rf">$E_\text{п} = kx^2/2$ (пружина)</div>
|
||
<div class="rf">$\Delta E_\text{п} = -A$</div>
|
||
<p style="font-size:.75rem">$E_\text{п}$ равна работе сил взаимодействия<br>при переходе на нулевой уровень.</p>
|
||
<p style="font-size:.75rem">Нулевой уровень выбирается произвольно;<br>$\Delta E_\text{п}$ от него не зависит.</p>
|
||
|
||
<h3>📐 Быстрые выводы §31–32</h3>
|
||
<p style="font-size:.75rem">Сила через изменение импульса:</p>
|
||
<div class="rf">$F = \dfrac{\Delta p}{\Delta t} = \dfrac{m\,\Delta v}{\Delta t}$</div>
|
||
<p style="font-size:.75rem">Скорость после удара (неупр.):</p>
|
||
<div class="rf">$v = \dfrac{m_1 v_1 + m_2 v_2}{m_1 + m_2}$</div>
|
||
<p style="font-size:.75rem">Отдача / ракета из покоя:</p>
|
||
<div class="rf">$m_1 v_1 = -m_2 v_2$</div>
|
||
|
||
<h3>📐 Быстрые выводы §33</h3>
|
||
<p style="font-size:.75rem">Если α = 0° → cos α = 1 → $A = F\Delta r$</p>
|
||
<p style="font-size:.75rem">Если α = 90° → cos α = 0 → $A = 0$</p>
|
||
<p style="font-size:.75rem">Мощность через скорость:</p>
|
||
<div class="rf">$P = Fv$ (при $\alpha = 0°$)</div>
|
||
<p style="font-size:.75rem">Деформация пружины из работы:</p>
|
||
<div class="rf">$x = \sqrt{2A/k}$</div>
|
||
<p style="font-size:.75rem">Высота из работы силы тяжести:</p>
|
||
<div class="rf">$h = A/(mg)$</div>
|
||
|
||
<h3>📐 Быстрые выводы §34</h3>
|
||
<p style="font-size:.75rem">$E_\text{п}$ растёт пропорц. $h$ (линейно)<br>и пропорц. $x^2$ (квадратично)</p>
|
||
<p style="font-size:.75rem">Деформация из $E_\text{п}$:</p>
|
||
<div class="rf">$x = \sqrt{2E_\text{п}/k}$</div>
|
||
<p style="font-size:.75rem">Масса из $E_\text{п}$ и $h$:</p>
|
||
<div class="rf">$m = E_\text{п}/(gh)$</div>
|
||
<p style="font-size:.75rem">Работа = убыль $E_\text{п}$:</p>
|
||
<div class="rf">$A = E_{\text{п}1} - E_{\text{п}2} = -\Delta E_\text{п}$</div>
|
||
|
||
<h3>📏 Единицы</h3>
|
||
<div class="rf">$[p] = \text{кг}{\cdot}\text{м/с}$</div>
|
||
<div class="rf">$[A] = [E_\text{п}] = \text{Дж} = \text{Н}{\cdot}\text{м}$</div>
|
||
<div class="rf">$[P] = \text{Вт} = \text{Дж/с}$</div>
|
||
<div class="rf">$1\,\text{кВт} = 1000\,\text{Вт}$</div>
|
||
<div class="rf">$g \approx 10\,\text{м/с}^2$</div>
|
||
|
||
<h3>§35 — Кинетическая энергия</h3>
|
||
<div class="rf">$E_\text{к} = \dfrac{mv^2}{2}$</div>
|
||
<p style="font-size:.75rem">$[E_\text{к}] = \text{Дж}$ · скалярная · всегда ≥ 0</p>
|
||
<div class="rf">$\Delta E_\text{к} = A_\text{рез}$</div>
|
||
<p style="font-size:.75rem">Теорема о кинетической энергии: изменение $E_\text{к}$ = работа всех сил.</p>
|
||
<div class="rf">$E_\text{мех} = E_\text{к} + E_\text{п}$</div>
|
||
<p style="font-size:.75rem">Полная механическая энергия = кинетическая + потенциальная.</p>
|
||
|
||
<h3>§36 — Закон сохранения энергии</h3>
|
||
<p style="font-size:.75rem">Без трения (замкнутая система):</p>
|
||
<div class="rf">$E_\text{мех} = \text{const}$</div>
|
||
<div class="rf">$E_{\text{к}1} + E_{\text{п}1} = E_{\text{к}2} + E_{\text{п}2}$</div>
|
||
<p style="font-size:.75rem">С трением (диссипативные силы):</p>
|
||
<div class="rf">$\Delta E_\text{мех} = A_\text{внеш}$</div>
|
||
<p style="font-size:.75rem">Полная энергия — всегда:</p>
|
||
<div class="rf">$E_\text{полн} = E_\text{мех} + E_\text{внутр} = \text{const}$</div>
|
||
|
||
<h3>📐 Быстрые выводы §35–36</h3>
|
||
<p style="font-size:.75rem">Скорость из высоты (без трения):</p>
|
||
<div class="rf">$v = \sqrt{2gh}$</div>
|
||
<p style="font-size:.75rem">Высота из скорости (без трения):</p>
|
||
<div class="rf">$h = \dfrac{v^2}{2g}$</div>
|
||
<p style="font-size:.75rem">Работа трения через Eмех:</p>
|
||
<div class="rf">$A_\text{тр} = \Delta E_\text{мех} = E_{\text{мех}2} - E_{\text{мех}1}$</div>
|
||
</div>
|
||
|
||
<!-- Шапка -->
|
||
<div class="hdr">
|
||
<h1><i class="fas fa-atom"></i> Физика 9 класс</h1>
|
||
<p>Кинематика · Динамика · Статика · Гидростатика · Импульс · Работа · Энергия</p>
|
||
</div>
|
||
|
||
<div class="page-layout">
|
||
<aside class="sidebar">
|
||
|
||
<!-- Sidebar brand -->
|
||
<div class="sb-brand">
|
||
<svg class="sb-logo" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round">
|
||
<circle cx="12" cy="12" r="2.2" fill="currentColor" opacity=".4"/>
|
||
<ellipse cx="12" cy="12" rx="10" ry="3.8"/>
|
||
<ellipse cx="12" cy="12" rx="10" ry="3.8" transform="rotate(60 12 12)"/>
|
||
<ellipse cx="12" cy="12" rx="10" ry="3.8" transform="rotate(120 12 12)"/>
|
||
</svg>
|
||
<div>
|
||
<span class="sb-title">Физика</span>
|
||
<span class="sb-sub">9 класс</span>
|
||
</div>
|
||
</div>
|
||
|
||
<nav class="nav-wrap">
|
||
<div class="ch-bar">
|
||
|
||
<button class="ch-btn active" data-ch="1">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M3 14 Q7 4 17 8"/><path d="M13.5 5.5l3.5 2.5-3.5 1.5"/>
|
||
</svg>
|
||
<span class="ch-label">Кинематика</span>
|
||
<span class="ch-roman">I</span>
|
||
<span class="ch-count">14</span>
|
||
</button>
|
||
|
||
<button class="ch-btn" data-ch="2">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
||
<circle cx="5" cy="10" r="2.2" fill="currentColor" opacity=".25"/>
|
||
<path d="M7.5 10h8.5M13 7l3 3-3 3"/>
|
||
</svg>
|
||
<span class="ch-label">Динамика</span>
|
||
<span class="ch-roman">II</span>
|
||
<span class="ch-count">7</span>
|
||
</button>
|
||
|
||
<button class="ch-btn" data-ch="3">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round">
|
||
<circle cx="10" cy="10" r="2.8"/><ellipse cx="10" cy="10" rx="8.5" ry="3.2" transform="rotate(-30 10 10)"/>
|
||
<circle cx="16.5" cy="7.5" r="1" fill="currentColor"/>
|
||
</svg>
|
||
<span class="ch-label">Тяготение</span>
|
||
<span class="ch-roman">III</span>
|
||
<span class="ch-count">3</span>
|
||
</button>
|
||
|
||
<button class="ch-btn" data-ch="4">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M10 3v14M4 17h12"/><path d="M5 7l-2 5h4zm10 0l-2 5h4z"/>
|
||
<path d="M5 7h10"/>
|
||
</svg>
|
||
<span class="ch-label">Статика</span>
|
||
<span class="ch-roman">IV</span>
|
||
<span class="ch-count">3</span>
|
||
</button>
|
||
|
||
<button class="ch-btn" data-ch="5">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round">
|
||
<path d="M10 2 Q13 6 10 10 Q7 6 10 2z" fill="currentColor" opacity=".2"/>
|
||
<path d="M3 12 Q6.5 9 10 12 Q13.5 15 17 12"/>
|
||
<path d="M3 16 Q6.5 13 10 16 Q13.5 19 17 16"/>
|
||
</svg>
|
||
<span class="ch-label">Гидростатика</span>
|
||
<span class="ch-roman">V</span>
|
||
<span class="ch-count">3</span>
|
||
</button>
|
||
|
||
<button class="ch-btn" data-ch="6">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M11.5 2.5L5 11h6l-2 6.5 9-10h-6.5l2-5z"/>
|
||
</svg>
|
||
<span class="ch-label">Энергия</span>
|
||
<span class="ch-roman">VI</span>
|
||
<span class="ch-count">6</span>
|
||
</button>
|
||
|
||
<button class="ch-btn" data-ch="7">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
||
<path d="M7.5 3h5M8 3v5.5L4 17h12L12 8.5V3"/>
|
||
<circle cx="9.5" cy="12.5" r=".9" fill="currentColor"/>
|
||
<circle cx="12" cy="10.5" r=".9" fill="currentColor"/>
|
||
</svg>
|
||
<span class="ch-label">Лаб. работа</span>
|
||
<span class="ch-roman">VII</span>
|
||
<span class="ch-count">1</span>
|
||
</button>
|
||
|
||
<button class="ch-btn" data-ch="8">
|
||
<svg class="ch-icon" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
||
<rect x="3" y="3" width="14" height="14" rx="3"/>
|
||
<path d="M7 10l2.5 2.5L13 7"/>
|
||
</svg>
|
||
<span class="ch-label">Задачи</span>
|
||
<span class="ch-roman">VIII</span>
|
||
</button>
|
||
|
||
</div>
|
||
<div class="sec-bar">
|
||
<!-- Глава 1: Кинематика §1–14 -->
|
||
<div class="sec-group show" data-chg="1">
|
||
<div class="tab active" data-tab="ref1"><span class="tab-num">§1</span><span class="tab-name">Движение</span></div>
|
||
<div class="tab" data-tab="ref2"><span class="tab-num">§2</span><span class="tab-name">Относительность</span></div>
|
||
<div class="tab" data-tab="ref3"><span class="tab-num">§3</span><span class="tab-name">Векторы</span></div>
|
||
<div class="tab" data-tab="ref4"><span class="tab-num">§4</span><span class="tab-name">Проекции</span></div>
|
||
<div class="tab" data-tab="ref5"><span class="tab-num">§5</span><span class="tab-name">Путь</span></div>
|
||
<div class="tab" data-tab="ref6"><span class="tab-num">§6</span><span class="tab-name">Равн. движение</span></div>
|
||
<div class="tab" data-tab="ref7"><span class="tab-num">§7</span><span class="tab-name">Графики v(t)</span></div>
|
||
<div class="tab" data-tab="ref8"><span class="tab-num">§8</span><span class="tab-name">Средняя скорость</span></div>
|
||
<div class="tab" data-tab="ref9"><span class="tab-num">§9</span><span class="tab-name">Слож. скоростей</span></div>
|
||
<div class="tab" data-tab="ref10"><span class="tab-num">§10</span><span class="tab-name">Ускорение</span></div>
|
||
<div class="tab" data-tab="ref11"><span class="tab-num">§11</span><span class="tab-name">v(t)</span></div>
|
||
<div class="tab" data-tab="ref12"><span class="tab-num">§12</span><span class="tab-name">x(t)</span></div>
|
||
<div class="tab" data-tab="ref13"><span class="tab-num">§13</span><span class="tab-name">Окружность</span></div>
|
||
<div class="tab" data-tab="ref14"><span class="tab-num">§14</span><span class="tab-name">Центр. ускорение</span></div>
|
||
</div>
|
||
<!-- Глава 2: Динамика §15–21 -->
|
||
<div class="sec-group" data-chg="2">
|
||
<div class="tab" data-tab="ref15"><span class="tab-num">§15</span><span class="tab-name">1й закон Ньютона</span></div>
|
||
<div class="tab" data-tab="ref16"><span class="tab-num">§16</span><span class="tab-name">Масса</span></div>
|
||
<div class="tab" data-tab="ref17"><span class="tab-num">§17</span><span class="tab-name">2й закон Ньютона</span></div>
|
||
<div class="tab" data-tab="ref18"><span class="tab-num">§18</span><span class="tab-name">3й закон Ньютона</span></div>
|
||
<div class="tab" data-tab="ref19"><span class="tab-num">§19</span><span class="tab-name">Закон Гука</span></div>
|
||
<div class="tab" data-tab="ref20"><span class="tab-num">§20</span><span class="tab-name">Трение</span></div>
|
||
<div class="tab" data-tab="ref21"><span class="tab-num">§21</span><span class="tab-name">Свободное падение</span></div>
|
||
</div>
|
||
<!-- Глава 3: Тяготение §22–24 -->
|
||
<div class="sec-group" data-chg="3">
|
||
<div class="tab" data-tab="ref22"><span class="tab-num">§22</span><span class="tab-name">Бросок под углом</span></div>
|
||
<div class="tab" data-tab="ref23"><span class="tab-num">§23</span><span class="tab-name">Тяготение</span></div>
|
||
<div class="tab" data-tab="ref24"><span class="tab-num">§24</span><span class="tab-name">Невесомость</span></div>
|
||
</div>
|
||
<!-- Глава 4: Статика §25–27 -->
|
||
<div class="sec-group" data-chg="4">
|
||
<div class="tab" data-tab="ref25"><span class="tab-num">§25</span><span class="tab-name">Моменты сил</span></div>
|
||
<div class="tab" data-tab="ref26"><span class="tab-num">§26</span><span class="tab-name">Рычаги</span></div>
|
||
<div class="tab" data-tab="ref27"><span class="tab-num">§27</span><span class="tab-name">КПД</span></div>
|
||
</div>
|
||
<!-- Глава 5: Гидростатика §28–30 -->
|
||
<div class="sec-group" data-chg="5">
|
||
<div class="tab" data-tab="ref28"><span class="tab-num">§28</span><span class="tab-name">Центр тяжести</span></div>
|
||
<div class="tab" data-tab="ref29"><span class="tab-num">§29</span><span class="tab-name">Закон Архимеда</span></div>
|
||
<div class="tab" data-tab="ref30"><span class="tab-num">§30</span><span class="tab-name">Плавание тел</span></div>
|
||
</div>
|
||
<!-- Глава 6: Импульс & Энергия §31–36 -->
|
||
<div class="sec-group" data-chg="6">
|
||
<div class="tab" data-tab="ref31"><span class="tab-num">§31</span><span class="tab-name">Импульс</span></div>
|
||
<div class="tab" data-tab="ref32"><span class="tab-num">§32</span><span class="tab-name">ЗСИ</span></div>
|
||
<div class="tab" data-tab="ref33"><span class="tab-num">§33</span><span class="tab-name">Работа</span></div>
|
||
<div class="tab" data-tab="ref34"><span class="tab-num">§34</span><span class="tab-name">Мощность</span></div>
|
||
<div class="tab" data-tab="ref35"><span class="tab-num">§35</span><span class="tab-name">Кинет. энергия</span></div>
|
||
<div class="tab" data-tab="ref36"><span class="tab-num">§36</span><span class="tab-name">ЗСЭ</span></div>
|
||
</div>
|
||
<!-- Лаб. -->
|
||
<div class="sec-group" data-chg="7">
|
||
<div class="tab" data-tab="lab11"><span class="tab-num">№11</span><span class="tab-name">Лабораторная работа</span></div>
|
||
</div>
|
||
<!-- Задачи -->
|
||
<div class="sec-group" data-chg="8">
|
||
<div class="tab" data-tab="tasks"><span class="tab-num">∑</span><span class="tab-name">Все задачи</span></div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
</aside><!-- /.sidebar -->
|
||
<main class="main-content">
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §1 — МЕХАНИЧЕСКОЕ ДВИЖЕНИЕ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content active" id="tab-ref1">
|
||
<div class="para-hero ph-1">
|
||
<div class="ph-label">§1 · Физика 9 кл</div>
|
||
<h2>Механическое движение. Материальная точка</h2>
|
||
<div class="ph-formula">где? куда? с какой скоростью?</div>
|
||
<div class="ph-desc">Кинематика описывает движение тел — без выяснения причин. Тело движется = меняет положение. Материальная точка — модель, когда размер тела не важен.</div>
|
||
<div class="ph-tags"><span class="ph-tag">📍 положение тела</span><span class="ph-tag">〰️ траектория</span><span class="ph-tag">🔄 виды движения</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-rocket"></i> §1. Механическое движение</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Материальная точка</h3>
|
||
<div class="main-f">не важно как выглядит — важно где находится</div>
|
||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:3px 10px;font-size:.76rem;margin:8px 0 6px">
|
||
<span style="color:#059669;font-weight:700">✓ точка</span><span style="color:#dc2626;font-weight:700">✗ не точка</span>
|
||
<span>самолёт в перелёте</span><span>самолёт на посадке</span>
|
||
<span>Земля вокруг Солнца</span><span>Земля при вращении</span>
|
||
<span>поезд на маршруте</span><span>колесо поезда</span>
|
||
</div>
|
||
<p>📏 <b>Когда можно считать тело точкой?</b> Спроси себя: важно ли, где именно на теле приложена сила или откуда мерить расстояние? Если нет — это точка. Самолёт летит из Москвы в Сочи: 1400 км, а сам самолёт — 70 м. Размер самолёта в сотни раз меньше пути — берём как точку. Но если самолёт заходит на посадку — нам важно, где нос, где хвост, как он наклонён. Уже не точка.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Траектория</h3>
|
||
<div class="main-f">след, который оставляет тело при движении</div>
|
||
<p><b>Прямолинейная</b> — прямая (поезд по рельсам). <b>Криволинейная</b> — кривая (мяч в полёте).</p>
|
||
<p style="margin-top:6px;font-size:.8rem;color:var(--muted)">⚠️ <b>Важно:</b> траектория зависит от того, <em>кто смотрит</em>. Представь: ты едешь в поезде и бросаешь мяч прямо вверх. Ты видишь — мяч летит вертикально вверх и падает обратно в руки. Но твой друг стоит на платформе и смотрит в окно — он видит, что мяч описывает дугу (параболу), потому что мяч ещё и едет вместе с поездом. Одно движение, два наблюдателя — две разные траектории. Траектория — не свойство мяча, а свойство наблюдателя.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Виды механического движения</h3>
|
||
<div class="main-f">поступательное · вращательное · колебательное</div>
|
||
<p><b>Поступательное:</b> все точки тела движутся параллельно — тело не вращается (лифт, поезд). <b>Вращательное:</b> каждая точка описывает окружность (колесо). <b>Колебательное:</b> тело раз за разом возвращается назад (маятник).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Задача кинематики</h3>
|
||
<div class="main-f">где? куда? с какой скоростью?</div>
|
||
<p>Кинематика отвечает на вопросы <em>где находится</em> и <em>как движется</em>, но не <em>почему</em>. Почему тело разгоняется или тормозит — это уже динамика (§15–).</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Кинематика — это как GPS-навигатор: он показывает где ты, куда едешь и с какой скоростью. Но ему всё равно, <b>почему</b> ты туда едешь и что движет машиной. Сначала учим <b>КАК</b> движется (кинематика, §1–14), потом <b>ПОЧЕМУ</b> (динамика, §15–).</p>
|
||
<p>Механическое движение — это просто <b>изменение места</b>: был здесь, стал там. Звучит очевидно, но физика требует точности: относительно чего? в какой момент времени? с каким телом сравниваем?</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-play"></i> Анимация: виды движения</h3>
|
||
<div class="cv-wrap"><canvas id="cv1" style="height:160px"></canvas></div>
|
||
<button class="cv-playbtn" onclick="startAnim1()">▶ Запустить снова</button>
|
||
</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🚂</div><div class="li-title">Поезд</div><div class="li-desc">Поступательное — все точки движутся параллельно, тело не вращается</div></div>
|
||
<div class="life-item"><div class="li-icon">🌍</div><div class="li-title">Земля</div><div class="li-desc">Вращательное движение вокруг оси + поступательное по орбите</div></div>
|
||
<div class="life-item"><div class="li-icon">🎸</div><div class="li-title">Струна</div><div class="li-desc">Колебательное движение — периодически возвращается в исходное положение</div></div>
|
||
<div class="life-item"><div class="li-icon">🌀</div><div class="li-title">Волчок</div><div class="li-desc">Сочетание вращательного и поступательного движений</div></div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Материальная точка — это <b>модель</b>, а не реальный объект.</li>
|
||
<li>Траектория <b>относительна</b>: зависит от системы отсчёта.</li>
|
||
<li>Кинематика описывает движение, <b>не объясняет</b> его причины.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Можно ли считать Луну материальной точкой при описании её движения вокруг Земли?</li>
|
||
<li>Приведи пример тела, совершающего одновременно поступательное и вращательное движение.</li>
|
||
<li>Что изучает кинематика? Чем она отличается от динамики?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §2 — СИСТЕМА ОТСЧЁТА. ОТНОСИТЕЛЬНОСТЬ ДВИЖЕНИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref2">
|
||
<div class="para-hero ph-2">
|
||
<div class="ph-label">§2 · Физика 9 кл</div>
|
||
<h2>Относительность движения. Система отсчёта</h2>
|
||
<div class="ph-formula">от чего · куда · когда = система отсчёта</div>
|
||
<div class="ph-desc">Движение относительно: один и тот же объект в разных системах отсчёта движется по-разному. Система отсчёта — тело + координатная сетка + часы.</div>
|
||
<div class="ph-tags"><span class="ph-tag">🔄 относительность</span><span class="ph-tag">📍 тело отсчёта</span><span class="ph-tag">⏱️ часы</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-globe"></i> §2. Относительность движения. Система отсчёта</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Система отсчёта (СО)</h3>
|
||
<div class="main-f">от чего считать · куда · когда</div>
|
||
<p>Чтобы описать движение, нужны: <b>тело отсчёта</b> (относительно чего считать), <b>координатная система</b> (куда двигаться) и <b>часы</b> (когда).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Относительность траектории</h3>
|
||
<div class="main-f">разные наблюдатели — разные пути</div>
|
||
<p>Ты в поезде бросаешь мяч вертикально вверх и ловишь его — для тебя он полетел прямо вверх и вернулся. Твой друг на платформе смотрит в окно: он видит, что мяч летел по дуге вперёд и вниз — потому что поезд двигался, пока мяч был в воздухе. <b>Никто не ошибается</b> — просто каждый описывает движение из своей системы отсчёта.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Координата точки</h3>
|
||
<div class="main-f">$x, y, z$ — числа вдоль осей</div>
|
||
<p>Представь ось — это линейка, у которой есть ноль и направления «+» и «−». Координата — это просто число на этой линейке: насколько далеко от нуля и в какую сторону. Например, $x = -3\,\text{м}$ значит «3 метра влево от начала». По одному числу можно точно сказать, где находится точка — больше ничего не нужно.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Тело отсчёта</h3>
|
||
<div class="main-f">то, относительно чего считаем</div>
|
||
<p>Тело отсчёта — это то, что ты считаешь <em>неподвижным</em> в своей задаче. Чаще всего это Земля — стоишь на ней, от неё и меряешь. Но можно выбрать любое: вагон поезда, самолёт, другую планету. Выбор не меняет физику — он меняет <b>удобство расчётов</b>. Задача про падающий камень в движущемся поезде решается проще в системе поезда, чем в системе Земли.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Ты едешь в поезде и смотришь на пассажира напротив — он неподвижен. Выгляни в окно — деревья мчатся назад. Это и есть относительность движения.</p>
|
||
<p><b>Без системы отсчёта вопрос «движется ли тело?» не имеет смысла.</b> Ты сейчас неподвижен относительно Земли, но летишь со скоростью 30 км/с вокруг Солнца.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-train"></i> Интерактив: поезд и платформа</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Скорость пассажира (в вагоне):</span>
|
||
<input type="range" min="0" max="10" value="5" id="sl2v" oninput="upd2()">
|
||
<span class="slider-val" id="v2v">5 м/с</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv2" style="height:160px"></canvas></div>
|
||
<div class="idiag-result" id="res2">Скорость пассажира относительно земли = — м/с</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Движение всегда <b>относительно</b>: нужно указывать систему отсчёта.</li>
|
||
<li>СО = тело отсчёта + координатная система + часы.</li>
|
||
<li>Одно и то же тело в разных СО имеет разные траектории и скорости.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Пассажир в поезде бросает мяч вертикально вверх. Опишите траекторию мяча в СО поезда и в СО Земли.</li>
|
||
<li>Является ли движение абсолютным понятием? Обоснуй ответ.</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §3 — СКАЛЯРНЫЕ И ВЕКТОРНЫЕ ВЕЛИЧИНЫ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref3">
|
||
<div class="para-hero ph-3">
|
||
<div class="ph-label">§3 · Физика 9 кл</div>
|
||
<h2>Скалярные и векторные величины. Действия над векторами</h2>
|
||
<div class="ph-formula">$\vec{c} = \vec{a} + \vec{b};\quad |\vec{b}| = |k||\vec{a}|$</div>
|
||
<div class="ph-desc">Скаляр — только число. Вектор — число и направление. Складывают векторы по правилу параллелограмма или треугольника.</div>
|
||
<div class="ph-tags"><span class="ph-tag">📏 скаляр: масса, путь</span><span class="ph-tag">➡️ вектор: скорость, сила</span><span class="ph-tag">▱ правило параллелограмма</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-arrows-alt"></i> §3. Скалярные и векторные величины</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Векторное сложение</h3>
|
||
<div class="main-f">$\vec{c} = \vec{a} + \vec{b}$ (правило параллелограмма)</div>
|
||
<p>Идёшь на север 3 шага, поворачиваешь на восток 4 шага — ты сместился на 5 шагов на северо-восток. Это и есть сложение двух векторов. <b>Правило треугольника:</b> приставь начало второго вектора к концу первого — стрелка от самого начала до самого конца и есть сумма. <b>Правило параллелограмма:</b> оба вектора из одной точки — диагональ параллелограмма и есть сумма.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Умножение на скаляр</h3>
|
||
<div class="main-f">$\vec{b} = k\vec{a};\quad |\vec{b}| = |k||\vec{a}|$</div>
|
||
<p>$k > 0$: вектор в том же направлении. $k < 0$: вектор в обратном направлении. Модуль = $|k|$ × модуль исходного.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Вычитание векторов</h3>
|
||
<div class="main-f">$\vec{d} = \vec{a} - \vec{b} = \vec{a} + (-\vec{b})$</div>
|
||
<p>Вычесть вектор — значит прибавить противоположный. Шёл 5 м на север, потом «отнять» 3 м на север — то же, что прибавить 3 м на юг, итого 2 м на север. <b>Графически:</b> отложи оба вектора из одной точки — разность смотрит из конца $\vec{b}$ в конец $\vec{a}$. Пригодится при нахождении изменения скорости: $\Delta\vec{v} = \vec{v} - \vec{v}_0$.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Три важных случая</h3>
|
||
<div class="main-f" style="font-size:.78rem;text-align:left;padding:6px 8px">
|
||
0°: $|\vec{c}| = |\vec{a}|+|\vec{b}|$<br>
|
||
180°: $|\vec{c}| = \big||\vec{a}|-|\vec{b}|\big|$<br>
|
||
90°: $|\vec{c}| = \sqrt{|\vec{a}|^2+|\vec{b}|^2}$
|
||
</div>
|
||
<p>Если векторы в <b>одну сторону</b> — складывай числами. <b>Навстречу</b> — вычитай. <b>Перпендикулярно</b> — теорема Пифагора. Любой другой угол — формула параллелограмма.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Самолёт летит на восток 500 км/ч, боковой ветер 120 км/ч с севера. Нельзя сказать «итоговая скорость 620 км/ч» — надо сложить <em>векторно</em>: $\sqrt{500^2 + 120^2} \approx 514$ км/ч и немного на юг. Именно поэтому пилоты учитывают ветер при прокладке курса.</p>
|
||
<p>Правило простое: если направления совпадают — складывай числами. Если нет — только по правилу параллелограмма или треугольника.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-vector-square"></i> Интерактив: сложение векторов</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">|a|:</span>
|
||
<input type="range" min="20" max="100" value="60" id="sl3a" oninput="upd3()">
|
||
<span class="slider-val" id="v3a">60</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">|b|:</span>
|
||
<input type="range" min="20" max="100" value="50" id="sl3b" oninput="upd3()">
|
||
<span class="slider-val" id="v3b">50</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Угол α:</span>
|
||
<input type="range" min="0" max="180" value="60" id="sl3ang" oninput="upd3()">
|
||
<span class="slider-val" id="v3ang">60°</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv3" style="height:180px"></canvas></div>
|
||
<div class="idiag-result" id="res3">|c| = —</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Модуль суммы ≠ сумма модулей (только если оба вектора в одну сторону).</li>
|
||
<li>Вектора складывают геометрически, не числами.</li>
|
||
<li>Сумма всегда: $|\vec{a}|-|\vec{b}| \leq |\vec{c}| \leq |\vec{a}|+|\vec{b}|$</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Можно ли сложить вектор и скаляр? Почему?</li>
|
||
<li>При каком угле между двумя равными векторами их сумма равна одному из них?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §4 — ПРОЕКЦИЯ ВЕКТОРА НА ОСЬ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref4">
|
||
<div class="para-hero ph-4">
|
||
<div class="ph-label">§4 · Физика 9 кл</div>
|
||
<h2>Проекция вектора на ось</h2>
|
||
<div class="ph-formula">$a_x = a\cos\varphi$</div>
|
||
<div class="ph-desc">Проекция вектора на ось — его «тень» на ось. Знак зависит от направления: угол острый — плюс, тупой — минус. Позволяет переводить векторные задачи в скалярные по осям.</div>
|
||
<div class="ph-tags"><span class="ph-tag">$a_x = a\cos\varphi$</span><span class="ph-tag">➕ острый угол</span><span class="ph-tag">➖ тупой угол</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-ruler-combined"></i> §4. Проекция вектора на ось</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Проекция на ось Ox</h3>
|
||
<div class="main-f">$a_x = a\cos\varphi$</div>
|
||
<p>$\varphi$ — угол между вектором и осью Ox. Если вектор «наклонён» в сторону оси (угол острый, до 90°) — проекция <b>положительная</b>. Если «отклонился» от неё (угол тупой, больше 90°) — <b>отрицательная</b>. Перпендикулярен оси — проекция нулевая: вся «сила» вектора уходит в другую ось. Проверь себя: $a_x = 10\cos 60° = 5$ (острый → плюс), $a_x = 10\cos 120° = -5$ (тупой → минус).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Проекции в 2D</h3>
|
||
<div class="main-f">$a_x = a\cos\varphi;\quad a_y = a\sin\varphi$</div>
|
||
<p>Любой вектор можно разложить на две составляющие — горизонтальную и вертикальную. Пример: сила 10 Н под углом 37° к горизонту → $F_x = 10\cos 37° = 8$ Н (горизонталь), $F_y = 10\sin 37° = 6$ Н (вертикаль). Теперь вместо одного вектора под углом — два числа, с которыми считать проще. И проверка: $\sqrt{8^2 + 6^2} = \sqrt{100} = 10$ Н ✓</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Сложение через проекции</h3>
|
||
<div class="main-f">$c_x = a_x + b_x;\quad c_y = a_y + b_y$</div>
|
||
<p>Чтобы сложить два вектора под произвольным углом: найди проекции каждого на обе оси, сложи проекции числами, восстанови вектор по теореме Пифагора. Это <b>аналитический метод</b> — точнее, чем рисовать на бумаге.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Восстановление вектора</h3>
|
||
<div class="main-f">$a = \sqrt{a_x^2 + a_y^2}$</div>
|
||
<p>Из проекций находим модуль (по теореме Пифагора) и направление ($\varphi$). Метод компонент — основной в физике.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Представь: солнце светит сбоку, вектор — карандаш. Тень карандаша на стене — это и есть проекция. Если карандаш параллелен стене — тень максимальная. Перпендикулярен — тень нулевая.</p>
|
||
<p>В физике проекции — способ «разобрать» вектор на составляющие. Движение под углом = горизонтальная часть + вертикальная часть. Каждую решаем отдельно!</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-ruler-horizontal"></i> Интерактив: проекция вектора</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Угол φ:</span>
|
||
<input type="range" min="0" max="180" value="37" id="sl4phi" oninput="upd4()">
|
||
<span class="slider-val" id="v4phi">37°</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">|a|:</span>
|
||
<input type="range" min="30" max="100" value="70" id="sl4a" oninput="upd4()">
|
||
<span class="slider-val" id="v4a">70</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv4" style="height:160px"></canvas></div>
|
||
<div class="idiag-result" id="res4">ax = — | ay = —</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$a_x = a\cos\varphi$ — проекция на ось.</li>
|
||
<li>Знак проекции зависит от направления вектора относительно оси.</li>
|
||
<li>$a = \sqrt{a_x^2 + a_y^2}$ — восстановление модуля из проекций.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Может ли проекция вектора быть больше его модуля? Равна модулю? Равна нулю?</li>
|
||
<li>Вектор $|\vec{a}| = 10$ направлен под $60°$ к оси Ox. Найди $a_x$ и $a_y$.</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §5 — ПУТЬ И ПЕРЕМЕЩЕНИЕ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref5">
|
||
<div class="para-hero ph-5">
|
||
<div class="ph-label">§5 · Физика 9 кл</div>
|
||
<h2>Путь и перемещение</h2>
|
||
<div class="ph-formula">$s \geq |\Delta\vec{r}|$</div>
|
||
<div class="ph-desc">Путь — длина траектории (скаляр, всегда ≥ 0). Перемещение — вектор из начальной точки в конечную. Путь всегда ≥ модуля перемещения.</div>
|
||
<div class="ph-tags"><span class="ph-tag">📏 путь s — скаляр</span><span class="ph-tag">➡️ перемещение Δr — вектор</span><span class="ph-tag">s ≥ |Δr|</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-route"></i> §5. Путь и перемещение</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Путь s</h3>
|
||
<div class="main-f">длина траектории</div>
|
||
<p><b>Скалярная</b> величина — только число, без направления. Всегда ≥ 0: «минусового» пути не бывает. Одометр в машине считает путь: даже если ты вернулся на старт — он накрутил столько, сколько ты проехал. Зависит от <em>маршрута</em>, а не только от начальной и конечной точек.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Перемещение $\Delta\vec{r}$</h3>
|
||
<div class="main-f">$\Delta\vec{r} = \vec{r}_2 - \vec{r}_1$</div>
|
||
<p><b>Векторная</b> величина — имеет и число, и направление. Натяни верёвку напрямую от старта до финиша: её длина и направление — это и есть перемещение. Не важно, как ты шёл — зигзагами или по прямой: перемещение одно и то же, если начало и конец совпадают.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Проекции перемещения</h3>
|
||
<div class="main-f">$\Delta r_x = x_2 - x_1;\quad \Delta r_y = y_2 - y_1$</div>
|
||
<p>Проекция перемещения — просто разность координат: где был минус где стал. Переехал с отметки $x_1 = 20\,\text{м}$ на $x_2 = 8\,\text{м}$: $\Delta r_x = 8 - 20 = -12\,\text{м}$. Минус значит «двигался в сторону уменьшения оси» — то есть назад. Никакой тайны: минус — это просто направление.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Соотношение пути и перемещения</h3>
|
||
<div class="main-f">$s \geq |\Delta\vec{r}|$</div>
|
||
<p>Равенство достигается только при прямолинейном движении в одну сторону — тогда маршрут совпадает с прямой от старта до финиша. Стоит хоть раз повернуть или вернуться — путь сразу стал длиннее перемещения. Это как разница между прямой дорогой и объездом: расстояние по прямой — перемещение, по дороге — путь.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Ты вышел из дома (точка A), дошёл до магазина (B, 500 м), вернулся домой (A). Путь = 1000 м. Перемещение = 0 (начальная и конечная точка совпадают)!</p>
|
||
<p>GPS-навигатор считает <b>путь</b> (сколько проехал). Рулетка между двумя точками — это <b>перемещение</b>. Одометр в машине — путь. Смещение в прямом смысле — перемещение.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-map-marker-alt"></i> Интерактив: путь и перемещение</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Сегмент 1 (м):</span>
|
||
<input type="range" min="0" max="200" value="120" id="sl5s1" oninput="upd5()">
|
||
<span class="slider-val" id="v5s1">120 м</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Сегмент 2 (м, назад):</span>
|
||
<input type="range" min="0" max="200" value="60" id="sl5s2" oninput="upd5()">
|
||
<span class="slider-val" id="v5s2">60 м</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv5" style="height:130px"></canvas></div>
|
||
<div class="idiag-result" id="res5">Путь = — м | Перемещение = — м</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Путь — скаляр (длина), перемещение — вектор (смещение).</li>
|
||
<li>$s \geq |\Delta\vec{r}|$ — путь всегда не меньше модуля перемещения.</li>
|
||
<li>При движении «туда-обратно»: $s > 0$, но $\Delta\vec{r}$ может быть = $\vec{0}$.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>При каком условии путь равен модулю перемещения?</li>
|
||
<li>Тело прошло путь $s = 100\,\text{м}$. Может ли его перемещение быть равно нулю?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §6 — РАВНОМЕРНОЕ ПРЯМОЛИНЕЙНОЕ ДВИЖЕНИЕ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref6">
|
||
<div class="para-hero ph-6">
|
||
<div class="ph-label">§6 · Физика 9 кл</div>
|
||
<h2>Равномерное прямолинейное движение. Скорость</h2>
|
||
<div class="ph-formula">$v = \Delta r / \Delta t;\quad x = x_0 + v_x t$</div>
|
||
<div class="ph-desc">Равномерное движение — скорость постоянна по модулю и направлению. Скорость — векторная величина: показывает быстроту и направление изменения положения.</div>
|
||
<div class="ph-tags"><span class="ph-tag">$v = \text{const}$</span><span class="ph-tag">$x = x_0 + vt$</span><span class="ph-tag">[v] = м/с</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-tachometer-alt"></i> §6. Равномерное прямолинейное движение</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Скорость (вектор)</h3>
|
||
<div class="main-f">$\vec{v} = \Delta\vec{r}/\Delta t$</div>
|
||
<p>Скорость — вектор: у неё есть <b>и число</b> («60 км/ч»), <b>и направление</b> («на север»). Направлена туда, куда движется тело в данный момент. При равномерном движении оба параметра не меняются — ни быстрее/медленнее, ни поворотов. Стоит сказать только «скорость 20 м/с» без направления — это уже не вектор, а только его модуль.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Закон движения</h3>
|
||
<div class="main-f">$x = x_0 + v_x t$</div>
|
||
<p>Три части: <b>где стоял</b> ($x_0$) + <b>куда движешься</b> ($v_x \cdot t$). Если $v_x > 0$ — координата растёт (движение в сторону «+»). Если $v_x < 0$ — убывает (движение назад). Пример: $x = 100 - 5t$ → начал на отметке 100 м и едет назад со скоростью 5 м/с. Через 20 с будет на нуле, потом «уйдёт» в отрицательные координаты.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Перевод единиц</h3>
|
||
<div class="main-f">$1\,\text{м/с} = 3{,}6\,\text{км/ч}$</div>
|
||
<p>$v\,[\text{м/с}] = v\,[\text{км/ч}] / 3{,}6$. Пример: 72 км/ч = 72/3.6 = 20 м/с. Часто нужно на экзамене!</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Путь при равномерном движении</h3>
|
||
<div class="main-f">$s = |v_x| \cdot t$</div>
|
||
<p>Путь = скорость × время. Перемещение: $\Delta r_x = v_x t$ (со знаком). Путь всегда ≥ 0.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Равномерное движение — идеализация, но очень полезная. Поезд «Москва–Петербург» на перегоне между остановками, самолёт в крейсерском полёте, свет в вакууме — всё это приближённо равномерное движение.</p>
|
||
<p>На графике $x(t)$ — прямая линия. <b>Наклон = скорость</b>: проведи прямую круче — едешь быстрее, положе — медленнее, горизонталь — стоишь. По одной прямой можно мгновенно прочитать скорость: $v_x = \Delta x / \Delta t$ — возьми любые два момента на прямой.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-car"></i> Интерактив: равномерное движение</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v, м/с:</span>
|
||
<input type="range" min="-20" max="20" value="10" id="sl6v" oninput="upd6()">
|
||
<span class="slider-val" id="v6v">10 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">x₀, м:</span>
|
||
<input type="range" min="-50" max="50" value="0" id="sl6x0" oninput="upd6()">
|
||
<span class="slider-val" id="v6x0">0 м</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv6" style="height:180px"></canvas></div>
|
||
<div class="idiag-result" id="res6">x(5с) = —</div>
|
||
</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">✈️</div><div class="li-title">Самолёт</div><div class="li-desc">Крейсерский полёт — ~равномерное движение: v ≈ const</div></div>
|
||
<div class="life-item"><div class="li-icon">🚢</div><div class="li-title">Корабль</div><div class="li-desc">На спокойной воде — близко к равномерному</div></div>
|
||
<div class="life-item"><div class="li-icon">🌍</div><div class="li-title">Земля</div><div class="li-desc">Движение по орбите ≈ равномерное (скорость почти постоянна)</div></div>
|
||
<div class="life-item"><div class="li-icon">💡</div><div class="li-title">Свет</div><div class="li-desc">В вакууме движется строго равномерно: $c = 3\cdot10^8$ м/с</div></div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$v = \text{const}$ — ни по модулю, ни по направлению не меняется.</li>
|
||
<li>$x = x_0 + v_x t$ — закон движения (линейный!)</li>
|
||
<li>$1\,\text{м/с} = 3{,}6\,\text{км/ч}$</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Автомобиль движется равномерно. Закон движения: $x = 100 + 15t$ (м). Найдите начальную координату и скорость.</li>
|
||
<li>Поезд прошёл 180 км за 2 часа. Найдите скорость в м/с и км/ч.</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §7 — ГРАФИКИ РАВНОМЕРНОГО ДВИЖЕНИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref7">
|
||
<div class="para-hero ph-7">
|
||
<div class="ph-label">§7 · Физика 9 кл</div>
|
||
<h2>Графическое представление равномерного движения</h2>
|
||
<div class="ph-formula">$v(t) = \text{const};\quad x(t) = x_0 + vt$</div>
|
||
<div class="ph-desc">График v(t) — горизонтальная прямая. График x(t) — наклонная прямая. Площадь под v(t) = перемещение. Наклон x(t) = скорость.</div>
|
||
<div class="ph-tags"><span class="ph-tag">📊 v(t) — горизонталь</span><span class="ph-tag">📈 x(t) — прямая</span><span class="ph-tag">S = Δr (площадь)</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-chart-line"></i> §7. Графики равномерного движения</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>График v(t)</h3>
|
||
<div class="main-f">горизонтальная прямая</div>
|
||
<p>Скорость не меняется — горизонтальная прямая. Прямая <b>выше нуля</b>: едешь «вперёд». <b>Ниже нуля</b>: едешь «назад». <b>На нуле</b>: стоишь. Ширина прямоугольника под графиком — это время $\Delta t$, высота — скорость $v_x$. Площадь = $v_x \cdot \Delta t$ = перемещение. Это не просто формула — это прямо следует из рисунка!</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>График x(t)</h3>
|
||
<div class="main-f">наклонная прямая</div>
|
||
<p>$x = x_0 + v_x t$ — прямая линия на графике. <b>Крутой наклон</b> вверх = большая скорость вперёд. <b>Горизонталь</b> = тело стоит ($v = 0$). <b>Наклон вниз</b> = движение назад ($v_x < 0$). Точка, где прямая пересекает ось $x$ — это начальная координата $x_0$. По наклону прямой можно найти скорость: $v_x = \Delta x / \Delta t$.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Площадь под v(t)</h3>
|
||
<div class="main-f">$\Delta r_x = v_x \cdot \Delta t$ = площадь</div>
|
||
<p>Площадь фигуры под графиком v(t) = перемещение — это универсальное правило, работает для <b>любого движения</b>, не только равномерного. При равномерном фигура — прямоугольник: $S = v \cdot \Delta t = \Delta r$. При неравномерном — любая фигура: считаем её площадь.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Встреча двух тел</h3>
|
||
<div class="main-f">$x_1(t) = x_2(t)$</div>
|
||
<p>Два тела движутся и «встречаются», когда их координаты совпадают: $x_1(t) = x_2(t)$. На графике x(t) это просто <b>точка пересечения двух прямых</b>. Координата встречи — по оси $x$ в точке пересечения, время встречи — по оси $t$. Если прямые параллельны — тела движутся с одинаковой скоростью и никогда не встретятся (или всегда рядом, если совпадают).</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Почему площадь под v(t) = перемещение? Представь: едешь 3 м/с в течение 5 секунд. Прямоугольник: ширина 5 с, высота 3 м/с. Площадь = 5 × 3 = 15 м — именно столько проехал!</p>
|
||
<p><b>Наклон x(t) = скорость</b>: крутая линия — едешь быстро, пологая — медленно, горизонтальная — стоишь. Линии идут вниз — едешь в обратную сторону (отрицательная v).</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-chart-bar"></i> Интерактив: графики двух тел</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₁, м/с:</span>
|
||
<input type="range" min="-15" max="15" value="10" id="sl7v1" oninput="upd7()">
|
||
<span class="slider-val" id="v7v1">10 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">x₀₁, м:</span>
|
||
<input type="range" min="-100" max="100" value="0" id="sl7x1" oninput="upd7()">
|
||
<span class="slider-val" id="v7x1">0 м</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₂, м/с:</span>
|
||
<input type="range" min="-15" max="15" value="-5" id="sl7v2" oninput="upd7()">
|
||
<span class="slider-val" id="v7v2">-5 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">x₀₂, м:</span>
|
||
<input type="range" min="-100" max="100" value="75" id="sl7x2" oninput="upd7()">
|
||
<span class="slider-val" id="v7x2">75 м</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv7" style="height:200px"></canvas></div>
|
||
<div class="idiag-result" id="res7">Встреча: t = — с, x = — м</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Наклон графика x(t) = скорость $v_x$ (с учётом знака!).</li>
|
||
<li>Площадь под v(t) = перемещение $\Delta r_x$.</li>
|
||
<li>Пересечение x(t) двух тел = момент встречи.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Как по графику x(t) определить скорость тела?</li>
|
||
<li>Два тела движутся навстречу. Как выглядит их встреча на графике x(t)?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §8 — СРЕДНЯЯ И МГНОВЕННАЯ СКОРОСТЬ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref8">
|
||
<div class="para-hero ph-8">
|
||
<div class="ph-label">§8 · Физика 9 кл</div>
|
||
<h2>Неравномерное движение. Средняя и мгновенная скорость</h2>
|
||
<div class="ph-formula">$\langle v \rangle = s/\Delta t;\quad \langle\vec{v}\rangle = \Delta\vec{r}/\Delta t$</div>
|
||
<div class="ph-desc">Средняя скорость — отношение пути ко времени (скаляр). Средняя скорость (вектор) — отношение перемещения ко времени. Мгновенная — предел при Δt→0.</div>
|
||
<div class="ph-tags"><span class="ph-tag">⟨v⟩ = s/Δt</span><span class="ph-tag">v_мгн — в данный момент</span><span class="ph-tag">Δt → 0</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-stopwatch"></i> §8. Средняя и мгновенная скорость</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Средняя скорость пути (скаляр)</h3>
|
||
<div class="main-f">$\langle v \rangle = s / \Delta t$</div>
|
||
<p>Весь пройденный путь, делённый на всё затраченное время. Всегда ≥ 0 — отрицательного «пути» не бывает. Важно: если ехал медленно долго, а потом быстро чуть-чуть — средняя скорость ближе к медленной, а не к их среднему. <b>Спидометр</b> в машине показывает мгновенную скорость, а не среднюю за поездку.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Средняя скорость (вектор)</h3>
|
||
<div class="main-f">$\langle\vec{v}\rangle = \Delta\vec{r}/\Delta t$</div>
|
||
<p>Вектор перемещения, делённый на время. Направлена от начальной точки к конечной. Если ты сделал круг и вернулся — перемещение нулевое, значит и средняя векторная скорость нулевая, хотя весь маршрут ты реально ехал! Именно поэтому важно различать «скорость пути» и «скорость перемещения».</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Мгновенная скорость</h3>
|
||
<div class="main-f">скорость в данный миг</div>
|
||
<p>Скорость именно в данный миг — как спидометр в машине: показывает не «сколько в среднем», а «прямо сейчас». Направлена всегда по касательной к траектории: именно туда полетит тело, если в этот момент убрать все силы. Поэтому мяч, оторвавшись от ракетки, летит по касательной, а не продолжает дугу.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Средняя скорость за два участка</h3>
|
||
<div class="main-f">$\langle v\rangle = \dfrac{s_1+s_2}{t_1+t_2} = \dfrac{2v_1 v_2}{v_1+v_2}$</div>
|
||
<p>Если два участка <b>равны по длине</b>: средняя скорость = гармоническое среднее, а <b>не среднеарифметическое</b>! Почему? На медленном участке тратишь больше времени — он «перевешивает». Пример: 60 км туда за 1 ч, 60 км обратно за 2 ч. Средняя = 120 / 3 = 40 км/ч, а не (60+30)/2 = 45 км/ч.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Маршрут A→B→A: 100 км туда, 100 км обратно. Туда 100 км/ч (1 час), обратно 50 км/ч (2 часа). Средняя скорость = 200 км / 3 ч ≈ 67 км/ч, а <b>НЕ</b> (100+50)/2 = 75 км/ч!</p>
|
||
<p>Среднеарифметическое скоростей не даёт среднюю скорость — нужно делить <b>весь путь / всё время</b>. А мгновенная скорость — это просто то, что показывает спидометр прямо сейчас.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-tachometer-alt"></i> Интерактив: средняя скорость</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₁, км/ч:</span>
|
||
<input type="range" min="10" max="120" value="60" id="sl8v1" oninput="upd8()">
|
||
<span class="slider-val" id="v8v1">60 км/ч</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₂, км/ч:</span>
|
||
<input type="range" min="10" max="120" value="40" id="sl8v2" oninput="upd8()">
|
||
<span class="slider-val" id="v8v2">40 км/ч</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv8" style="height:140px"></canvas></div>
|
||
<div class="idiag-result" id="res8">⟨v⟩ = — | (v₁+v₂)/2 = —</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Средняя скорость = <b>весь путь / всё время</b>.</li>
|
||
<li>$\langle v\rangle \neq (v_1+v_2)/2$ в общем случае!</li>
|
||
<li>Мгновенная скорость направлена по касательной к траектории.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Рысь пробежала первую половину пути со скоростью 3 м/с, вторую — со скоростью 6 м/с. Найдите среднюю скорость.</li>
|
||
<li>Куда направлена мгновенная скорость тела при движении по окружности?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §9 — СЛОЖЕНИЕ СКОРОСТЕЙ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref9">
|
||
<div class="para-hero ph-9">
|
||
<div class="ph-label">§9 · Физика 9 кл</div>
|
||
<h2>Сложение скоростей</h2>
|
||
<div class="ph-formula">$\vec{v} = \vec{v}' + \vec{u}$</div>
|
||
<div class="ph-desc">Скорость тела в неподвижной СО = скорость тела относительно подвижной СО + скорость подвижной СО. Применяется при движении лодки в реке, самолёта в потоке.</div>
|
||
<div class="ph-tags"><span class="ph-tag">🚤 лодка в реке</span><span class="ph-tag">✈️ самолёт в ветре</span><span class="ph-tag">$\vec{v} = \vec{v}' + \vec{u}$</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-water"></i> §9. Сложение скоростей</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Закон сложения скоростей</h3>
|
||
<div class="main-f">$\vec{v} = \vec{v}' + \vec{u}$</div>
|
||
<p>Три скорости: $\vec{v}'$ — скорость лодки <em>относительно воды</em> (как гребёт мотор), $\vec{u}$ — скорость течения <em>воды относительно берега</em>, $\vec{v}$ — итоговая скорость лодки <em>относительно берега</em>. Сложи первые два вектора — получишь третий. Именно так навигаторы кораблей и самолётов считают реальный курс с учётом ветра/течения.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Лодка поперёк реки</h3>
|
||
<div class="main-f">$v = \sqrt{v'^2 + u^2}$</div>
|
||
<p>Лодка гребёт перпендикулярно берегу ($v'$ — поперечная скорость), течение несёт вдоль реки ($u$ — продольная). Два вектора под углом 90° → суммарная скорость по теореме Пифагора: $v = \sqrt{v'^2 + u^2}$. Лодка движется наискосок — не туда, куда гребёт! Берег она пересечёт в другом месте.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Время переправы</h3>
|
||
<div class="main-f">$t = d/v'$</div>
|
||
<p>Время пересечения реки шириной $d$ зависит <em>только</em> от поперечной скорости $v'$: $t = d/v'$. Сколько бы ни было течение — оно сносит лодку <em>вдоль</em>, но не замедляет переправу. Хочешь оказаться точно напротив? Гребись под углом против течения, чтобы боковые скорости скомпенсировались.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Снос течением</h3>
|
||
<div class="main-f">$\Delta x = u \cdot t = u \cdot d/v'$</div>
|
||
<p>Пока лодка пересекала реку за время $t = d/v'$, течение успело снести её на $\Delta x = u \cdot t$. Широкая река + быстрое течение = большой снос. Пример: $d = 80$ м, $v' = 4$ м/с, $u = 3$ м/с → $t = 20$ с, снос = $3 \cdot 20 = 60$ м! Почти столько же, сколько ширина реки.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Плывёшь поперёк реки: для тебя берег движется прямо назад. Но кто-то с берега видит, что тебя несёт течением. Твоя «настоящая» скорость (относительно берега) — диагональ параллелограмма.</p>
|
||
<p>Самолёт летит на восток, ветер с севера — он отклоняется. Пилот должен корректировать курс, направляя нос немного севернее. Это и есть сложение скоростей на практике.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-ship"></i> Интерактив: лодка в реке</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v' (лодка), м/с:</span>
|
||
<input type="range" min="1" max="10" value="4" id="sl9vb" oninput="upd9()">
|
||
<span class="slider-val" id="v9vb">4 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">u (течение), м/с:</span>
|
||
<input type="range" min="0" max="8" value="3" id="sl9vu" oninput="upd9()">
|
||
<span class="slider-val" id="v9vu">3 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Ширина реки, м:</span>
|
||
<input type="range" min="20" max="200" value="80" id="sl9d" oninput="upd9()">
|
||
<span class="slider-val" id="v9d">80 м</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv9" style="height:180px"></canvas></div>
|
||
<div class="idiag-result" id="res9">v = — м/с | t = — с | снос = — м</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$\vec{v} = \vec{v}' + \vec{u}$ — складываем <b>векторно</b>.</li>
|
||
<li>Время переправы зависит только от $v'$ (скорость поперёк).</li>
|
||
<li>Снос = $u \cdot t$ (течение × время).</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Лодка плывёт со скоростью 4 м/с поперёк реки, течение 3 м/с. Найдите скорость лодки относительно берега.</li>
|
||
<li>Самолёт летит со скоростью 600 км/ч при встречном ветре 100 км/ч. Какова его скорость относительно земли?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §10 — УСКОРЕНИЕ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref10">
|
||
<div class="para-hero ph-10">
|
||
<div class="ph-label">§10 · Физика 9 кл</div>
|
||
<h2>Ускорение</h2>
|
||
<div class="ph-formula">$\vec{a} = \Delta\vec{v}/\Delta t$</div>
|
||
<div class="ph-desc">Ускорение характеризует быстроту изменения скорости. Это вектор — направлен туда, куда изменяется скорость. При торможении — против движения.</div>
|
||
<div class="ph-tags"><span class="ph-tag">$[a] = \text{м/с}^2$</span><span class="ph-tag">⬆️ разгон: a ∥ v</span><span class="ph-tag">⬇️ торможение: a против v</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-rocket"></i> §10. Ускорение</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Ускорение</h3>
|
||
<div class="main-f">$\vec{a} = \Delta\vec{v}/\Delta t$</div>
|
||
<p>Ускорение показывает, <em>насколько быстро меняется скорость</em>. Единица: 1 м/с² — это «на 1 м/с за каждую секунду». $a = 5\,\text{м/с}^2$: скорость прибавляется на 5 м/с каждую секунду. Важно: ускорение — <b>вектор</b>. Оно может менять и модуль скорости (разгон/торможение), и её направление (повороты).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Ускорение при разгоне</h3>
|
||
<div class="main-f">$\vec{a} \uparrow\uparrow \vec{v}$ (сонаправлены)</div>
|
||
<p>Ускорение направлено <b>туда же, куда движется тело</b> — скорость растёт. Машина стартует: ускорение вперёд → скорость растёт с каждой секундой. Чем дольше разгоняешься с постоянным ускорением — тем быстрее едешь. При $a = 5\,\text{м/с}^2$ через 4 с скорость: $0 + 5 \cdot 4 = 20$ м/с.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Ускорение при торможении</h3>
|
||
<div class="main-f">$\vec{a} \uparrow\downarrow \vec{v}$ (противоположны)</div>
|
||
<p>Машина едет вперёд ($v > 0$), нажимаешь тормоз: ускорение направлено назад ($a < 0$). Каждую секунду скорость уменьшается на $|a|$ м/с. Через $t = v_0 / |a|$ секунд — полная остановка. Запомни: ускорение со знаком «минус» — не значит «едет назад», это значит «тормозит».</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Изменение скорости</h3>
|
||
<div class="main-f">$\Delta\vec{v} = \vec{v} - \vec{v}_0 = \vec{a}\cdot\Delta t$</div>
|
||
<p>Изменение скорости — это вектор, направленный вдоль ускорения. $\Delta\vec{v} = \vec{a} \cdot \Delta t$: умножь ускорение на время — получишь, как изменилась скорость. При разгоне $\Delta v > 0$ (скорость выросла), при торможении $\Delta v < 0$ (упала). Это та же физика, просто записанная векторно.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Ускорение — это «изменение скорости в секунду». $a = 3\,\text{м/с}^2$ означает: каждую секунду скорость растёт на 3 м/с. Начал с 0 → через 1 с: 3 м/с → через 2 с: 6 м/с → через 3 с: 9 м/с.</p>
|
||
<p>Важно: ускорение НЕ означает «быстро едет». Большое ускорение = быстро <b>разгоняется</b>. Черепаха может ехать быстро (v большая), но с нулевым ускорением (равномерно).</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-gauge-high"></i> Интерактив: ускорение</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₀, м/с:</span>
|
||
<input type="range" min="0" max="30" value="0" id="sl10v0" oninput="upd10()">
|
||
<span class="slider-val" id="v10v0">0 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">a, м/с²:</span>
|
||
<input type="range" min="-10" max="10" value="3" id="sl10a" oninput="upd10()">
|
||
<span class="slider-val" id="v10a">3 м/с²</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv10" style="height:160px"></canvas></div>
|
||
<div class="idiag-result" id="res10">v(5с) = —</div>
|
||
</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🚀</div><div class="li-title">Ракета</div><div class="li-desc">При взлёте a = 3g ≈ 30 м/с². Космонавт «весит» в 3 раза больше</div></div>
|
||
<div class="life-item"><div class="li-icon">🏎️</div><div class="li-title">Формула-1</div><div class="li-desc">a ≈ 15 м/с² при разгоне (0–100 км/ч за 2 с)</div></div>
|
||
<div class="life-item"><div class="li-icon">🌍</div><div class="li-title">Свободное падение</div><div class="li-desc">g ≈ 9,8 м/с² — ускорение при падении на Землю</div></div>
|
||
<div class="life-item"><div class="li-icon">🛑</div><div class="li-title">Аварийное торможение</div><div class="li-desc">a ≈ −8 м/с² (против движения). 100 км/ч → 0 за ~3,5 с</div></div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$a = \Delta v / \Delta t$ — изменение скорости за единицу времени.</li>
|
||
<li>Ускорение вдоль скорости → разгон; против → торможение.</li>
|
||
<li>Ускорение ≠ большая скорость! Это <b>быстрота изменения</b> скорости.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Автомобиль разогнался с 0 до 20 м/с за 5 с. Найдите ускорение.</li>
|
||
<li>Тело движется с $v_0 = 15$ м/с и тормозит с ускорением $a = 3\,\text{м/с}^2$. Через сколько секунд оно остановится?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §11 — СКОРОСТЬ ПРИ РАВНОУСКОРЕННОМ ДВИЖЕНИИ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref11">
|
||
<div class="para-hero ph-11">
|
||
<div class="ph-label">§11 · Физика 9 кл</div>
|
||
<h2>Скорость при равноускоренном движении</h2>
|
||
<div class="ph-formula">$v = v_0 + at;\quad \langle v \rangle = (v_0 + v)/2$</div>
|
||
<div class="ph-desc">При равноускоренном движении скорость меняется линейно: каждую секунду добавляется a м/с. Средняя скорость = полусумма начальной и конечной.</div>
|
||
<div class="ph-tags"><span class="ph-tag">$v = v_0 + at$</span><span class="ph-tag">$v(t)$ — прямая</span><span class="ph-tag">$\langle v\rangle = (v_0+v)/2$</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-chart-line"></i> §11. Скорость при равноускоренном движении</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Скорость</h3>
|
||
<div class="main-f">$v_x = v_{0x} + a_x t$</div>
|
||
<p>Скорость прибавляет по $a$ каждую секунду — значит, меняется <b>равномерно</b>. График v(t) — прямая линия. Крутой наклон вверх = большое ускорение (быстрый разгон). Наклон вниз = замедление. По наклону прямой сразу видно $a_x$: $a_x = \Delta v / \Delta t$.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Средняя скорость</h3>
|
||
<div class="main-f">$\langle v_x \rangle = (v_{0x} + v_x)/2$</div>
|
||
<p>Для равноускоренного движения это <b>точная формула</b>, не приближение. Почему работает? Скорость меняется равномерно — как температура воздуха от утра до вечера. «Средняя за день» = (утром + вечером) / 2. Здесь то же самое: скорость менялась по прямой — среднее точно посередине.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>График v(t) — прямая</h3>
|
||
<div class="main-f">наклон = $a_x$; пересечение = $v_{0x}$</div>
|
||
<p>$a > 0$: прямая идёт вверх (разгон). $a < 0$: вниз (торможение). Точка, где прямая пересекает ось $t$ — это момент, когда $v = 0$: тело остановилось или развернулось. После этого момента скорость меняет знак — тело начинает двигаться в обратную сторону.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Площадь под v(t)</h3>
|
||
<div class="main-f">трапеция = $\Delta r = \langle v\rangle \cdot t$</div>
|
||
<p>Под прямой v(t) при равноускоренном движении — трапеция (или треугольник при $v_0 = 0$). Площадь этой фигуры = перемещение. Формула трапеции: $(v_0 + v)/2 \cdot t$ — это то же самое, что средняя скорость × время. Удобная проверка: посчитай перемещение двумя способами и сравни.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>$v = v_0 + at$ — каждую секунду скорость меняется на $a$. Начал с 5 м/с, $a = 3$ м/с²: через 1 с — 8 м/с, через 2 с — 11 м/с, через 3 с — 14 м/с. Просто прибавляй $a$ каждую секунду.</p>
|
||
<p>График $v(t)$ — прямая линия. Наклонена вверх = разгон. Наклонена вниз = торможение. Пересекает ось $t$ — это момент остановки. Закрашенная площадь под графиком = пройденный путь!</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-chart-area"></i> Интерактив: v(t) при равноускоренном движении</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₀, м/с:</span>
|
||
<input type="range" min="-20" max="20" value="0" id="sl11v0" oninput="upd11()">
|
||
<span class="slider-val" id="v11v0">0 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">a, м/с²:</span>
|
||
<input type="range" min="-5" max="5" value="2" id="sl11a" oninput="upd11()">
|
||
<span class="slider-val" id="v11a">2 м/с²</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv11" style="height:180px"></canvas></div>
|
||
<div class="idiag-result" id="res11">v(5с) = — м/с | ⟨v⟩ = — м/с</div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$v = v_0 + at$ — линейная зависимость от времени.</li>
|
||
<li>$\langle v\rangle = (v_0 + v)/2$ — строго для равноускоренного движения.</li>
|
||
<li>График v(t) — прямая; наклон = $a$.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Тело начало движение с $v_0 = 4$ м/с, $a = 2\,\text{м/с}^2$. Найдите скорость через 5 с.</li>
|
||
<li>Поезд затормозил с $v_0 = 20$ м/с до остановки за 50 с. Найдите ускорение.</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §12 — ПЕРЕМЕЩЕНИЕ ПРИ РАВНОУСКОРЕННОМ ДВИЖЕНИИ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref12">
|
||
<div class="para-hero ph-12">
|
||
<div class="ph-label">§12 · Физика 9 кл</div>
|
||
<h2>Перемещение и координата при равноускоренном движении</h2>
|
||
<div class="ph-formula">$x = x_0 + v_0 t + \tfrac{at^2}{2};\quad v^2 = v_0^2 + 2a\Delta r$</div>
|
||
<div class="ph-desc">Координата при равноускоренном движении — квадратичная функция времени (парабола). Формула «без t» связывает скорость, ускорение и перемещение напрямую.</div>
|
||
<div class="ph-tags"><span class="ph-tag">парабола x(t)</span><span class="ph-tag">$v^2 = v_0^2 + 2as$</span><span class="ph-tag">квадратичная зависимость</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-chart-line"></i> §12. Перемещение при равноускоренном движении</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Перемещение</h3>
|
||
<div class="main-f">$\Delta r_x = v_{0x}t + \dfrac{a_x t^2}{2}$</div>
|
||
<p>При $a > 0$: расстояние нарастает всё быстрее — это парабола. Первую секунду проехал немного, вторую — больше, третью — ещё больше. Почему? Ускорение каждую секунду добавляет не просто постоянную прибавку к пути, а «нарастающую»: $1^2, 2^2, 3^2$... При $a = 0$ — прямая линия (равномерное движение). При $a \ne 0$ — парабола.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Координата</h3>
|
||
<div class="main-f">$x = x_0 + v_{0x}t + \dfrac{a_x t^2}{2}$</div>
|
||
<p>График x(t) — парабола: сначала пологая, потом всё круче (при $a > 0$). Вершина параболы — это точка, где $v = 0$: мяч, брошенный вверх, достиг максимальной высоты. После вершины парабола идёт вниз — тело движется обратно. Нашёл вершину на графике — нашёл максимальное смещение.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Формула «без t»</h3>
|
||
<div class="main-f">$v_x^2 = v_{0x}^2 + 2a_x\Delta r_x$</div>
|
||
<p>Спасает, когда в задаче <b>не дано время</b>. Машина тормозит с 72 км/ч (= 20 м/с) до нуля при $a = -4\,\text{м/с}^2$: тормозной путь $s = v_0^2 / (2|a|) = 400 / 8 = 50$ м — и никакого $t$! Запомни: если в задаче нет $t$ и не нужно его найти, сразу бери эту формулу.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Таблица сравнения</h3>
|
||
<div class="main-f" style="font-size:.78rem;text-align:left;padding:6px 8px">
|
||
Равном.: $\Delta r = vt$<br>
|
||
Равноуск.: $\Delta r = v_0 t + at^2/2$<br>
|
||
«без t»: $v^2 = v_0^2 + 2as$
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Формула $x = x_0 + v_0 t + \frac{at^2}{2}$ — это три слагаемых: <b>где стоял</b> ($x_0$) + <b>куда уже шёл</b> ($v_0 t$) + <b>куда добавило ускорение</b> ($at^2/2$). При $v_0=0$, $x_0=0$ остаётся только $at^2/2$ — парабола.</p>
|
||
<p>Формула «без $t$»: $v^2 = v_0^2 + 2a\Delta r$ спасает когда в задаче <b>не дано время</b>. Торможение до нуля: $0 = v_0^2 - 2|a|s$, значит $s = v_0^2/(2|a|)$.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-project-diagram"></i> Интерактив: x(t) при равноускоренном движении</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₀, м/с:</span>
|
||
<input type="range" min="0" max="20" value="10" id="sl12v0" oninput="upd12()">
|
||
<span class="slider-val" id="v12v0">10 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">a, м/с²:</span>
|
||
<input type="range" min="-5" max="5" value="-2" id="sl12a" oninput="upd12()">
|
||
<span class="slider-val" id="v12a">-2 м/с²</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv12" style="height:200px"></canvas></div>
|
||
<div class="idiag-result" id="res12">Δr(5с) = — м | v(5с) = — м/с</div>
|
||
</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🚗</div><div class="li-title">Тормозной путь</div><div class="li-desc">При скорости 60 км/ч ≈ 17 м/с и a = −8 м/с²: s = 17²/16 ≈ 18 м</div></div>
|
||
<div class="life-item"><div class="li-icon">🎢</div><div class="li-title">Свободное падение</div><div class="li-desc">Мяч падает с h = 20 м: t = √(2h/g) ≈ 2 с, v = gt ≈ 20 м/с</div></div>
|
||
<div class="life-item"><div class="li-icon">🚀</div><div class="li-title">Старт ракеты</div><div class="li-desc">a = 30 м/с². Через 10 с: v = 300 м/с, s = 1500 м</div></div>
|
||
<div class="life-item"><div class="li-icon">⛷️</div><div class="li-title">Горнолыжник</div><div class="li-desc">Разгоняется вниз: a ≈ 5 м/с², за 10 с набирает 50 м/с ≈ 180 км/ч!</div></div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$x = x_0 + v_0 t + at^2/2$ — уравнение движения (парабола).</li>
|
||
<li>$v^2 = v_0^2 + 2a\Delta r$ — когда нет времени в условии.</li>
|
||
<li>Вершина параболы — точка остановки ($v = 0$).</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Тело $v_0 = 10$ м/с, $a = -2\,\text{м/с}^2$. Найдите перемещение за 4 с.</li>
|
||
<li>Автомобиль тормозит: $v_0 = 20$ м/с, $a = -4\,\text{м/с}^2$. Какой тормозной путь до полной остановки?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §13 — ДВИЖЕНИЕ ПО ОКРУЖНОСТИ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref13">
|
||
<div class="para-hero ph-13">
|
||
<div class="ph-label">§13 · Физика 9 кл</div>
|
||
<h2>Криволинейное движение. Угловая и линейная скорости</h2>
|
||
<div class="ph-formula">$\omega = 2\pi/T;\quad v = \omega R;\quad \nu = 1/T$</div>
|
||
<div class="ph-desc">При движении по окружности вводится угловая скорость ω. Линейная скорость тем больше, чем дальше точка от оси. Все точки тела имеют одинаковое ω.</div>
|
||
<div class="ph-tags"><span class="ph-tag">$\omega$ = рад/с</span><span class="ph-tag">$v = \omega R$</span><span class="ph-tag">$T = 1/\nu$</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-circle-notch"></i> §13. Движение по окружности</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Угловая скорость</h3>
|
||
<div class="main-f">$\omega = \Delta\varphi/\Delta t = 2\pi/T = 2\pi\nu$</div>
|
||
<p>Угол, на который поворачивается тело за одну секунду — в радианах. Один полный оборот = $2\pi \approx 6{,}28$ рад. Вентилятор делает 10 оборотов в секунду: $\omega = 10 \cdot 2\pi \approx 63$ рад/с. Все точки колеса вращаются с одной $\omega$ — одинаковый угол за одинаковое время, но скорость разная: у края быстрее, у центра — медленнее.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Линейная скорость</h3>
|
||
<div class="main-f">$v = \omega R$</div>
|
||
<p>При одной и той же угловой скорости точки, <em>дальше от оси</em>, проходят больший путь за оборот — значит, движутся <b>быстрее</b>. Велосипедное колесо: ступица и обод вращаются с одним $\omega$, но скорость обода в 10 раз выше, чем точки в 10 раз ближе к центру. Именно поэтому резина на внешнем крае стирается быстрее.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Период и частота</h3>
|
||
<div class="main-f">$T = 2\pi/\omega;\quad \nu = 1/T;\quad \omega = 2\pi\nu$</div>
|
||
<p>Период $T$ — сколько секунд на один полный оборот. Частота $\nu$ — сколько оборотов в секунду. Они обратны: $T = 1/\nu$. Пример: мотор 3000 об/мин = 50 об/с → $\nu = 50$ Гц, $T = 0{,}02$ с. Секундная стрелка: $T = 60$ с, $\nu = 1/60$ Гц. Перевод в $\omega$: умножь $\nu$ на $2\pi$.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Длина дуги</h3>
|
||
<div class="main-f">$s = R\cdot\Delta\varphi$</div>
|
||
<p>Дуга = радиус × угол (в радианах). Легко запомнить: 1 рад — это угол, при котором дуга равна радиусу. Полный оборот: $\Delta\varphi = 2\pi$ рад → $s = 2\pi R$ — длина окружности. Знакомая формула! $2\pi R$ — это просто частный случай $s = R \cdot \Delta\varphi$ при полном обороте.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Велосипедное колесо: все спицы вращаются с одной угловой скоростью ω (одинаковый угол в секунду). Но конец спицы (обод) движется намного быстрее, чем её центр — потому что $v = \omega R$ и $R$ больше.</p>
|
||
<p>Часовые стрелки: угловая скорость секундной стрелки в 60 раз больше минутной. Но линейная скорость зависит ещё и от длины стрелки.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-sync"></i> Интерактив: движение по окружности</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">R, м:</span>
|
||
<input type="range" min="0.1" max="5" step="0.1" value="1" id="sl13r" oninput="upd13()">
|
||
<span class="slider-val" id="v13r">1 м</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">ν, об/с:</span>
|
||
<input type="range" min="0.1" max="5" step="0.1" value="1" id="sl13nu" oninput="upd13()">
|
||
<span class="slider-val" id="v13nu">1 об/с</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv13" style="height:180px"></canvas></div>
|
||
<div class="idiag-result" id="res13">ω = — рад/с | v = — м/с | T = — с</div>
|
||
</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🎡</div><div class="li-title">Колесо обозрения</div><div class="li-desc">Все кабинки вращаются с одинаковым ω, но внешние движутся быстрее</div></div>
|
||
<div class="life-item"><div class="li-icon">⚙️</div><div class="li-title">Шестерёнки</div><div class="li-desc">Разные ω, но на точках касания линейные скорости одинаковы</div></div>
|
||
<div class="life-item"><div class="li-icon">🌍</div><div class="li-title">Земля</div><div class="li-desc">Один оборот за 24 ч = ω = 7,27·10⁻⁵ рад/с. На экваторе v = 465 м/с!</div></div>
|
||
<div class="life-item"><div class="li-icon">💿</div><div class="li-title">Виниловая пластинка</div><div class="li-desc">33 об/мин. Внешние дорожки длиннее, но воспроизводятся с той же скоростью</div></div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$\omega = 2\pi\nu = 2\pi/T$ — угловая скорость.</li>
|
||
<li>$v = \omega R$ — линейная скорость точки на расстоянии R от оси.</li>
|
||
<li>$1\,\text{об} = 2\pi\,\text{рад}$; $1\,\text{Гц} = 1\,\text{об/с}$.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Вентилятор вращается с частотой 10 Гц. Найдите ω и T.</li>
|
||
<li>Точка на диске радиусом 0,5 м вращается с ω = 20 рад/с. Найдите линейную скорость.</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §14 — ЦЕНТРОСТРЕМИТЕЛЬНОЕ УСКОРЕНИЕ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref14">
|
||
<div class="para-hero ph-14">
|
||
<div class="ph-label">§14 · Физика 9 кл</div>
|
||
<h2>Ускорение при движении по окружности</h2>
|
||
<div class="ph-formula">$a_c = v^2/R = \omega^2 R$</div>
|
||
<div class="ph-desc">Даже при постоянной скорости на окружности есть ускорение — центростремительное. Оно направлено к центру и изменяет направление скорости, но не её модуль.</div>
|
||
<div class="ph-tags"><span class="ph-tag">$a_c = v^2/R$</span><span class="ph-tag">→ к центру</span><span class="ph-tag">⊥ скорости</span></div>
|
||
</div>
|
||
<div class="section-title"><i class="fas fa-bullseye"></i> §14. Центростремительное ускорение</div>
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Центростремительное ускорение</h3>
|
||
<div class="main-f">$a_c = v^2/R = \omega^2 R$</div>
|
||
<p>Направлено к центру окружности и <b>перпендикулярно скорости</b>. Изменяет только направление скорости — заставляет тело «поворачивать», не разгоняя и не тормозя. Крутой поворот на большой скорости: маленький $R$ и большое $v$ → огромное $a_c$ → «тебя вдавливает в кресло». При увеличении радиуса поворота — $a_c$ падает.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Эквивалентные формулы</h3>
|
||
<div class="main-f">$a_c = \omega^2 R = \omega v = \dfrac{4\pi^2 R}{T^2}$</div>
|
||
<p>Три формулы — одна физика, разные «входные данные». Знаешь скорость и радиус → $a_c = v^2/R$. Знаешь угловую скорость и радиус → $a_c = \omega^2 R$. Знаешь период и радиус → $a_c = 4\pi^2 R / T^2$. Выбирай ту, где уже есть нужные данные — не нужно переводить лишний раз.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Направление</h3>
|
||
<div class="main-f">всегда к центру кривизны</div>
|
||
<p>Даже если скорость по модулю не меняется, <b>направление всё время поворачивает</b> — значит, есть ускорение. Его называют «нормальным» (⊥ к траектории) или центростремительным (к центру). При <em>равномерном</em> движении по окружности только оно и есть: $a_\tau = 0$. Тело едет с постоянной скоростью, но постоянно ускоряется!</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Полное ускорение при неравномерном</h3>
|
||
<div class="main-f">$a = \sqrt{a_c^2 + a_\tau^2}$</div>
|
||
<p>Машина разгоняется в повороте: $a_c$ меняет <em>направление</em> скорости (к центру дуги), $a_\tau$ меняет <em>модуль</em> скорости (вдоль движения). Оба действуют одновременно и перпендикулярны друг другу → полное ускорение: теорема Пифагора $a = \sqrt{a_c^2 + a_\tau^2}$. Водитель «давит на газ в вираже» — чувствует оба одновременно.</p>
|
||
</div>
|
||
</div>
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Крутишь камень на верёвке — верёвка постоянно тянет к центру. Уберёшь руку (уберёшь центростремительную силу) — камень полетит по прямой. Ускорение меняет <b>направление</b> скорости, заставляя тело «поворачивать».</p>
|
||
<p>Луна на орбите: скорость ~1 км/с, но она постоянно «падает» к Земле. Это и есть центростремительное ускорение — оно удерживает Луну на орбите.</p>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-circle"></i> Интерактив: центростремительное ускорение</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v, м/с:</span>
|
||
<input type="range" min="1" max="30" value="10" id="sl14v" oninput="upd14()">
|
||
<span class="slider-val" id="v14v">10 м/с</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">R, м:</span>
|
||
<input type="range" min="1" max="50" value="10" id="sl14r" oninput="upd14()">
|
||
<span class="slider-val" id="v14r">10 м</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv14" style="height:180px"></canvas></div>
|
||
<div class="idiag-result" id="res14">a_c = — м/с²</div>
|
||
</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🎢</div><div class="li-title">Американские горки</div><div class="li-desc">В петле a_c = v²/R. При высокой скорости — ощущение «перегрузки»</div></div>
|
||
<div class="life-item"><div class="li-icon">🛸</div><div class="li-title">МКС</div><div class="li-desc">v ≈ 7,7 км/с, R = 6770 км → a_c ≈ 8,7 м/с² ≈ g</div></div>
|
||
<div class="life-item"><div class="li-icon">🏎️</div><div class="li-title">Гоночный поворот</div><div class="li-desc">200 км/ч, R = 100 м → a_c = 31 м/с² ≈ 3g. Нужна прижимная сила</div></div>
|
||
<div class="life-item"><div class="li-icon">🌍</div><div class="li-title">Земля вокруг Солнца</div><div class="li-desc">v = 30 км/с, R = 1,5·10¹¹ м → a_c = 6·10⁻³ м/с²</div></div>
|
||
</div>
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$a_c = v^2/R = \omega^2 R$ — к центру, ⊥ скорости.</li>
|
||
<li>При равномерном движении по окружности ускорение ≠ 0!</li>
|
||
<li>Чем больше $v$ и меньше $R$ — тем больше $a_c$.</li>
|
||
</ul>
|
||
</div>
|
||
<ol class="q-list">
|
||
<li>Автомобиль движется в повороте со скоростью 20 м/с, радиус 50 м. Найдите центростремительное ускорение.</li>
|
||
<li>Спутник летит по круговой орбите. Ускорение равно $g = 9{,}8\,\text{м/с}^2$, радиус 6 400 км. Найдите скорость спутника.</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §15 — ПЕРВЫЙ ЗАКОН НЬЮТОНА
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref15">
|
||
|
||
<div class="para-hero ph-15">
|
||
<div class="ph-label">§15 · Физика 9 кл</div>
|
||
<h2>Первый закон Ньютона. Инерция</h2>
|
||
<div class="ph-formula">$\vec{F}_\text{рез} = \vec{0} \Leftrightarrow \vec{a} = \vec{0}$</div>
|
||
<div class="ph-desc">Если равнодействующая всех сил равна нулю, тело покоится или движется равномерно прямолинейно. Покой и равномерное прямолинейное движение физически равноправны.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📌 закон инерции</span>
|
||
<span class="ph-tag">🔄 инерциальные СО</span>
|
||
<span class="ph-tag">⚖️ покой = равномерное движение</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-balance-scale"></i> §15. Первый закон Ньютона</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Первый закон Ньютона</h3>
|
||
<div class="main-f">$\vec{F}_\text{рез} = \vec{0} \Rightarrow \vec{a} = \vec{0}$</div>
|
||
<p>Проще говоря: тело <b>само ничего не меняет</b>. Стоит — будет стоять. Летит — будет лететь. Чтобы скорость изменилась (по величине или по направлению), нужна суммарная сила. Нет суммарной силы — нет ускорения. Это работает только в инерциальных системах отсчёта (там, где нет «фиктивных» сил — в покоящемся вагоне, в равномерно летящем самолёте).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Инерция</h3>
|
||
<div class="main-f">свойство тела</div>
|
||
<p><b>Инерция</b> — это «нежелание» тела менять скорость. Тяжёлую тележку трудно разогнать — и столь же трудно остановить. Лёгкий мяч реагирует мгновенно. Разница — в инерции. Количественная мера инерции — <b>масса</b>: больше масса → больше инерция → нужна большая сила, чтобы изменить скорость.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Инерциальная система отсчёта</h3>
|
||
<div class="main-f">ИСО</div>
|
||
<p>ИСО — это система, в которой тело не ускоряется без причины. Земля приближённо ИСО. Равномерно летящий самолёт — ИСО: на борту кидаешь мяч вверх — он падает обратно в руки, как на земле. Но самолёт на вираже — уже нет: мяч «улетит» сам по себе без видимых сил. Любая ИСО движется относительно другой ИСО только <em>равномерно и прямолинейно</em>.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Равнодействующая = 0</h3>
|
||
<div class="main-f">$\vec{F}_1 + \vec{F}_2 + \ldots = \vec{0}$</div>
|
||
<p>Важно: не «сил нет», а «векторная сумма нулевая». На стол давит тяжесть книги вниз, стол давит на книгу вверх — две силы, но они в сумме ноль → книга стоит неподвижно. Машина едет равномерно? Тяга = трению → $F_\text{рез} = 0$ → $a = 0$. Равновесие — это всегда баланс сил, а не их отсутствие.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Инерция в жизни -->
|
||
<div class="section-title" style="margin-top:6px"><i class="fas fa-lightbulb"></i> Инерция вокруг нас</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🚌</div><div class="li-title">Автобус тормозит</div><div class="li-desc">Пассажир летит вперёд — тело стремится сохранить скорость</div></div>
|
||
<div class="life-item"><div class="li-icon">🍸</div><div class="li-title">Трюк со скатертью</div><div class="li-desc">Посуда остаётся на месте — она инертна, не успевает тронуться</div></div>
|
||
<div class="life-item"><div class="li-icon">🔨</div><div class="li-title">Забивание гвоздя</div><div class="li-desc">Тяжёлый молоток — большая инерция — большая сила удара</div></div>
|
||
<div class="life-item"><div class="li-icon">🚗</div><div class="li-title">Ремень безопасности</div><div class="li-desc">При ударе тело летит вперёд — ремень удерживает от инерции</div></div>
|
||
<div class="life-item"><div class="li-icon">🪐</div><div class="li-title">Планеты и спутники</div><div class="li-desc">Летят по орбите — сила тяжести меняет направление, но не гасит скорость</div></div>
|
||
<div class="life-item"><div class="li-icon">⚽</div><div class="li-title">Мяч в полёте</div><div class="li-desc">Без воздуха летел бы вечно — трение воздуха постепенно тормозит</div></div>
|
||
</div>
|
||
|
||
<!-- Анимация: инерция -->
|
||
<div class="idiag">
|
||
<h3>🎬 Анимация: шайба с трением и без</h3>
|
||
<div class="cv-wrap">
|
||
<canvas id="cv15" style="height:170px"></canvas>
|
||
</div>
|
||
<button class="cv-playbtn" onclick="startAnim15()"><i class="fas fa-play"></i> Запустить снова</button>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">🔵 Лёд (почти без трения): шайба не останавливается. 🟠 Асфальт: трение гасит скорость.</p>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-rocket"></i> Почему ракеты летают в космосе без топлива?</div>
|
||
<p>Запустив ракету и выключив двигатель, она продолжает лететь <b>по инерции</b> — в космосе нет воздуха и почти нет сил. Первый закон Ньютона работает идеально.</p>
|
||
<p>Именно поэтому межпланетные зонды летят к Марсу или Юпитеру, включая двигатели лишь для корректировки курса.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>1-й закон: без силы — нет ускорения. Скорость не меняется <b>ни по модулю, ни по направлению</b>.</li>
|
||
<li>Покой и равномерное прямолинейное движение — физически <b>одно и то же</b> (оба: $a = 0$).</li>
|
||
<li>Инерция — не сила, а <b>свойство</b> тела. Мера инерции — масса.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-graduation-cap"></i> Простыми словами</div>
|
||
<p>Тело само по себе <b>не хочет ничего менять</b>. Если оно стоит — хочет стоять. Если летит — хочет лететь. Чтобы что-то изменить, нужна сила.</p>
|
||
<p>Именно поэтому в магазине тяжёлую тележку трудно сдвинуть с места — у неё <b>большая инерция</b>. И трудно остановить разогнавшуюся.</p>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Что такое инерция? Приведи 3 примера из жизни.</li>
|
||
<li>Чем отличается инерциальная система отсчёта от неинерциальной?</li>
|
||
<li>Могут ли на тело действовать силы и при этом оно двигалось равномерно прямолинейно?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §16 — МАССА
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref16">
|
||
|
||
<div class="para-hero ph-16">
|
||
<div class="ph-label">§16 · Физика 9 кл</div>
|
||
<h2>Масса тела. Плотность. Сила тяжести</h2>
|
||
<div class="ph-formula">$F_\text{т} = mg$</div>
|
||
<div class="ph-desc">Масса — мера инертности тела и его гравитационных свойств. Она постоянна везде — и на Земле, и на Луне. Сила тяжести меняется, масса — нет.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⚖️ скалярная величина</span>
|
||
<span class="ph-tag">📐 [m] = кг</span>
|
||
<span class="ph-tag">🌍 не зависит от g</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-weight-hanging"></i> §16. Масса тела</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Сила тяжести</h3>
|
||
<div class="main-f">$F_\text{т} = mg$</div>
|
||
<p>Каждый килограмм массы даёт ~10 Н силы тяжести. Человек 60 кг: $F_\text{т} = 60 \cdot 10 = 600$ Н — именно с такой силой его тянет к Земле. Направлена всегда <b>строго вниз</b>, к центру Земли. Вес кажется разным на разных планетах, потому что $g$ меняется, а масса — нет.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Плотность → масса</h3>
|
||
<div class="main-f">$m = \rho V$</div>
|
||
<p>$\rho$ — плотность вещества (кг/м³).<br>$V$ — объём тела (м³).</p>
|
||
<p>Вода: $\rho = 1000\,\text{кг/м}^3$; Воздух: $\rho \approx 1{,}29\,\text{кг/м}^3$</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Аддитивность массы</h3>
|
||
<div class="main-f">$m = m_1 + m_2 + \ldots$</div>
|
||
<p>Масса кузова + масса двигателя + масса пассажиров = масса автомобиля. Это очевидно, но важен вывод: масса <b>не меняется</b> от того, как расположены части тела и как они движутся. Сжатая пружина весит столько же, сколько разжатая. Разогнанная машина — столько же, что стоящая.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Масса и инерция</h3>
|
||
<div class="main-f">бо́льшая $m$ → бо́льшая инерция</div>
|
||
<p>Одинаковая сила — разный эффект. Пнул лёгкий мяч (0,5 кг) и тяжёлый камень (5 кг) с одинаковой силой: мяч улетит в 10 раз быстрее ($a = F/m$). Масса — это «количество инертности»: насколько трудно изменить состояние тела. Большая масса = нужна большая сила для того же ускорения.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: масса → сила тяжести</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса $m$:</span>
|
||
<input type="range" min="1" max="80" value="60" id="sl16m" oninput="upd16()">
|
||
<span class="slider-val" id="v16m">60 кг</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">$g$ (планета):</span>
|
||
<input type="range" min="1" max="25" step="1" value="10" id="sl16g" oninput="upd16()">
|
||
<span class="slider-val" id="v16g">10 м/с²</span>
|
||
</div>
|
||
<div class="idiag-result" id="res16">$F_\text{т} = 60 \cdot 10 = 600\,\text{Н}$</div>
|
||
</div>
|
||
|
||
<!-- Планеты -->
|
||
<div class="idiag">
|
||
<h3>🪐 Вес человека (60 кг) на разных планетах</h3>
|
||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;margin-top:8px" id="planetGrid16">
|
||
</div>
|
||
<p style="font-size:.74rem;color:var(--muted);margin-top:8px">Масса всегда 60 кг — одинакова везде. Меняется только <b>сила тяжести</b>!</p>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-balance-scale-right"></i> Масса ≠ Вес</div>
|
||
<p>Ты весишь на Луне в 6 раз меньше — но твоя <b>масса не изменилась</b>. Там тебя так же трудно разогнать или остановить.</p>
|
||
<p>«Вес» в быту — это сила тяжести в ньютонах. В физике «масса» и «вес» — разные вещи. Масса в кг, вес (сила тяжести) в ньютонах.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li><b>Масса</b> (кг) — скалярная, не зависит от планеты и состояния движения.</li>
|
||
<li><b>Сила тяжести</b> (Н) — зависит от $g$: на Луне ($g \approx 1{,}6\,\text{м/с}^2$) в 6 раз меньше.</li>
|
||
<li>$F_\text{т} = mg$ — всегда направлена <b>вертикально вниз</b>.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Чем отличается масса от силы тяжести?</li>
|
||
<li>Как изменится сила тяжести тела при полёте на Марс ($g \approx 3{,}7\,\text{м/с}^2$)?</li>
|
||
<li>Масса тела 5 кг. Какова его сила тяжести на Луне ($g = 1{,}6\,\text{м/с}^2$)?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §17 — ВТОРОЙ ЗАКОН НЬЮТОНА
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref17">
|
||
|
||
<div class="para-hero ph-17">
|
||
<div class="ph-label">§17 · Физика 9 кл</div>
|
||
<h2>Второй закон Ньютона</h2>
|
||
<div class="ph-formula">$\vec{F}_\text{рез} = m\vec{a}$</div>
|
||
<div class="ph-desc">Ускорение тела прямо пропорционально равнодействующей сил и обратно пропорционально массе. Направление ускорения совпадает с направлением равнодействующей.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📐 [F] = Н = кг·м/с²</span>
|
||
<span class="ph-tag">↗️ a ∥ F_рез</span>
|
||
<span class="ph-tag">⚙️ только в ИСО</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-tachometer-alt"></i> §17. Второй закон Ньютона</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Второй закон Ньютона</h3>
|
||
<div class="main-f">$\vec{F}_\text{рез} = m\vec{a}$</div>
|
||
<p>Хочешь разогнать тело — приложи силу. Чем больше сила → тем больше ускорение. Чем больше масса → тем меньше ускорение при той же силе. $a = F/m$: ускорение прямо пропорционально силе и обратно пропорционально массе. Ускорение направлено <b>туда же, куда и сила</b> — всегда.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Единица силы — 1 Ньютон</h3>
|
||
<div class="main-f">$1\,\text{Н} = 1\,\dfrac{\text{кг}{\cdot}\text{м}}{\text{с}^2}$</div>
|
||
<p>1 Н — это сила, которая разгоняет 1 кг на 1 м/с каждую секунду. Яблоко (~100 г) тянет к земле с силой ~1 Н. Ты поднимаешь гантель 1 кг → прикладываешь ~10 Н. Сила — <b>вектор</b>: у неё есть и модуль, и направление. Направление ускорения совпадает с направлением равнодействующей.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Несколько сил — равнодействующая</h3>
|
||
<div class="main-f">$m\vec{a} = \vec{F}_1 + \vec{F}_2 + \ldots$</div>
|
||
<p>На тело тянут вправо с силой 30 Н и влево с трением 10 Н. В закон Ньютона входит не «30» и не «10» по отдельности — только их <b>векторная сумма</b>: 30 − 10 = 20 Н вправо. Именно эта равнодействующая и вызывает ускорение: $a = 20/m$. Сначала сложи все силы — потом подставляй в формулу.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Горизонтальное движение</h3>
|
||
<div class="main-f">$ma = F_\text{тяга} - F_\text{тр}$</div>
|
||
<p>Самая частая ситуация в задачах. Двигатель толкает вперёд, трение тормозит — берём разницу: $F_\text{рез} = F_\text{тяга} - F_\text{тр}$. Если $F_\text{тяга} > F_\text{тр}$ → разгон ($a > 0$). Если $F_\text{тяга} = F_\text{тр}$ → равномерно ($a = 0$, 1-й закон!). Если $F_\text{тяга} < F_\text{тр}$ → тормозит ($a < 0$). Все три случая — из одной формулы.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: $a = F / m$</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Сила $F$:</span>
|
||
<input type="range" min="1" max="100" value="20" id="sl17f" oninput="upd17()">
|
||
<span class="slider-val" id="v17f">20 Н</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса $m$:</span>
|
||
<input type="range" min="1" max="20" value="4" id="sl17m" oninput="upd17()">
|
||
<span class="slider-val" id="v17m">4 кг</span>
|
||
</div>
|
||
<div class="idiag-result" id="res17">$a = 20 / 4 = 5{,}0\,\text{м/с}^2$</div>
|
||
</div>
|
||
|
||
<!-- §17 canvas animation -->
|
||
<div class="idiag" style="margin-top:10px">
|
||
<h3>🎬 Анимация: разгон тела — скорость растёт!</h3>
|
||
<div class="cv-wrap">
|
||
<canvas id="cv17" style="height:120px"></canvas>
|
||
</div>
|
||
<button class="cv-playbtn" onclick="startAnim17()"><i class="fas fa-play"></i> Запустить снова</button>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">Синяя стрелка = сила $F$, длина = ускорение $a = F/m$. Поменяй ползунки и нажми снова!</p>
|
||
</div>
|
||
|
||
<!-- §17 life examples -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Второй закон в жизни</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🛹</div><div class="li-title">Скейтборд</div><div class="li-desc">Сильнее оттолкнулся → больше $F$ → больше ускорение $a$</div></div>
|
||
<div class="life-item"><div class="li-icon">🚀</div><div class="li-title">Ракета</div><div class="li-desc">Большая тяга + малая масса → огромное ускорение при старте</div></div>
|
||
<div class="life-item"><div class="li-icon">🏋️</div><div class="li-title">Штанга</div><div class="li-desc">Тяжёлая штанга поднимается медленнее: $a = F/m$, большое $m$</div></div>
|
||
<div class="life-item"><div class="li-icon">🚗</div><div class="li-title">Авто</div><div class="li-desc">Мощный двигатель → большая $F$ → быстрый разгон</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-lightbulb"></i> Почему порожний грузовик разгоняется быстрее гружёного?</div>
|
||
<p>Двигатель создаёт одинаковую тягу $F$. Но с грузом масса $m$ больше → ускорение $a = F/m$ меньше.</p>
|
||
<p>Именно поэтому гоночные автомобили такие лёгкие — минимальная масса при максимальной мощности двигателя.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>В 2-м законе $F$ — это <b>равнодействующая</b>, а не одна из сил.</li>
|
||
<li>Если $F_\text{рез} = 0$ — получаем 1-й закон: $a = 0$.</li>
|
||
<li>Ускорение всегда <b>параллельно</b> равнодействующей и направлено в ту же сторону.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Пример задачи</h3>
|
||
<div class="cond">Тело массой $m = 5\,\text{кг}$ тянут силой $F_\text{тяга} = 30\,\text{Н}$. Сила трения $F_\text{тр} = 10\,\text{Н}$. Найдите ускорение.</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span>Равнодействующая: $F_\text{рез} = F_\text{тяга} - F_\text{тр} = 30 - 10 = 20\,\text{Н}$</li>
|
||
<li><span class="step-n">2</span>2-й закон: $a = F_\text{рез}/m = 20/5 = 4\,\text{м/с}^2$</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Как изменится ускорение тела, если силу увеличить в 3 раза, а массу уменьшить в 2 раза?</li>
|
||
<li>Можно ли применять второй закон Ньютона в неинерциальных системах отсчёта?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §18 — ТРЕТИЙ ЗАКОН НЬЮТОНА
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref18">
|
||
|
||
<div class="para-hero ph-18">
|
||
<div class="ph-label">§18 · Физика 9 кл</div>
|
||
<h2>Третий закон Ньютона. Принцип Галилея</h2>
|
||
<div class="ph-formula">$\vec{F}_{1\to2} = -\vec{F}_{2\to1}$</div>
|
||
<div class="ph-desc">Силы взаимодействия двух тел равны по модулю, противоположны по направлению и приложены к РАЗНЫМ телам. Они не компенсируют друг друга!</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⚡ на разных телах</span>
|
||
<span class="ph-tag">↔️ одна природа</span>
|
||
<span class="ph-tag">🌍 принцип Галилея</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-arrows-alt-h"></i> §18. Третий закон Ньютона</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Третий закон Ньютона</h3>
|
||
<div class="main-f">$\vec{F}_{1\to2} = -\vec{F}_{2\to1}$</div>
|
||
<p>Любое взаимодействие — двустороннее. Ты толкаешь стену — стена толкает тебя с той же силой. Магнит притягивает гвоздь — гвоздь притягивает магнит с равной силой. Земля тянет тебя вниз — ты тянешь Землю вверх. Разница в том, что Земля на это не реагирует — у неё масса в $10^{22}$ раз больше твоей, ускорение исчезающе мало.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Свойства пары сил</h3>
|
||
<div class="main-f">всегда парные</div>
|
||
<ul>
|
||
<li>Равны по <b>модулю</b></li>
|
||
<li>Противоположны по <b>направлению</b></li>
|
||
<li><b>Одинаковой природы</b></li>
|
||
<li>Приложены к <b>разным</b> телам</li>
|
||
<li>Действуют одновременно</li>
|
||
</ul>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Принцип относительности Галилея</h3>
|
||
<div class="main-f">ИСО ↔ ИСО</div>
|
||
<p>В ровно летящем самолёте можно спокойно поиграть в мяч — всё идёт как на земле. Ни один эксперимент внутри ровно движущегося корабля не покажет, движешься ты или стоишь. Это и есть принцип Галилея: <b>физика не различает покой и равномерное прямолинейное движение</b>. Законы одинаковы в любой ИСО.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Почему лошадь тянет телегу?</h3>
|
||
<div class="main-f">разные тела!</div>
|
||
<p>Лошадь тянет телегу с силой $F$, телега тянет лошадь с силой $-F$. Но обе силы на <b>разных телах</b>. Телега едет, потому что $F_\text{тяга} > F_\text{тр.телеги}$.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>📌 Действие и противодействие — визуализация</h3>
|
||
<svg width="100%" viewBox="0 0 320 105" style="display:block;margin:0 auto">
|
||
<rect x="20" y="32" width="85" height="40" rx="8" fill="#a5f3fc" stroke="#0891b2" stroke-width="2"/>
|
||
<text x="62" y="56" font-size="11" text-anchor="middle" fill="#0e7490" font-weight="700">Тело 1</text>
|
||
<rect x="215" y="32" width="85" height="40" rx="8" fill="#a5f3fc" stroke="#0891b2" stroke-width="2"/>
|
||
<text x="257" y="56" font-size="11" text-anchor="middle" fill="#0e7490" font-weight="700">Тело 2</text>
|
||
<line x1="105" y1="44" x2="213" y2="44" stroke="#ef4444" stroke-width="2.5"/>
|
||
<polygon points="213,44 201,39 201,49" fill="#ef4444"/>
|
||
<text x="159" y="40" font-size="9" text-anchor="middle" fill="#ef4444" font-weight="700">F₁→₂</text>
|
||
<line x1="215" y1="60" x2="107" y2="60" stroke="#10b981" stroke-width="2.5"/>
|
||
<polygon points="107,60 119,55 119,65" fill="#10b981"/>
|
||
<text x="161" y="75" font-size="9" text-anchor="middle" fill="#10b981" font-weight="700">F₂→₁</text>
|
||
<text x="160" y="96" font-size="8" text-anchor="middle" fill="#64748b" font-family="Inter">|F₁→₂| = |F₂→₁|, но приложены к разным телам!</text>
|
||
</svg>
|
||
</div>
|
||
|
||
<!-- §18 life examples -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Третий закон вокруг нас</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🚀</div><div class="li-title">Ракета</div><div class="li-desc">Газы летят назад → ракета летит вперёд — среда не нужна!</div></div>
|
||
<div class="life-item"><div class="li-icon">💣</div><div class="li-title">Выстрел пушки</div><div class="li-desc">Снаряд вперёд → отдача толкает пушку назад с той же силой</div></div>
|
||
<div class="life-item"><div class="li-icon">🛶</div><div class="li-title">Вёсла</div><div class="li-desc">Толкаешь воду назад → вода толкает лодку вперёд</div></div>
|
||
<div class="life-item"><div class="li-icon">🧊</div><div class="li-title">Конькобежец</div><div class="li-desc">Отталкивается от льда → лёд давит назад с равной силой</div></div>
|
||
</div>
|
||
|
||
<!-- §18 canvas animation -->
|
||
<div class="idiag">
|
||
<h3>🎬 Анимация: отдача — два тела разлетаются</h3>
|
||
<div class="cv-wrap">
|
||
<canvas id="cv18" style="height:120px"></canvas>
|
||
</div>
|
||
<button class="cv-playbtn" onclick="startAnim18()"><i class="fas fa-play"></i> Запустить снова</button>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">🔵 Лёгкое тело летит быстрее. 🟠 Тяжёлое — медленнее. Силы равны, скорости — нет!</p>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-rocket"></i> Почему ракета летит в вакууме?</div>
|
||
<p>Многие думают: «В вакууме ракета не может лететь — не от чего оттолкнуться». Это <b>неверно!</b></p>
|
||
<p>Ракета отталкивается <b>от собственных газов</b>: газы назад — ракета вперёд. Третий закон работает без среды.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Силы 3-го закона <b>не компенсируют</b> друг друга — они приложены к <b>разным</b> телам.</li>
|
||
<li>Пара сил 3-го закона всегда одинаковой природы (обе гравитационные, или обе упругие).</li>
|
||
<li>Принцип Галилея: физика одинакова в любой инерциальной СО.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Почему пара сил третьего закона не уравновешивает тело?</li>
|
||
<li>Лошадь тянет телегу с силой 500 Н. С какой силой телега действует на лошадь?</li>
|
||
<li>В чём смысл принципа относительности Галилея?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §19 — ЗАКОН ГУКА
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref19">
|
||
|
||
<div class="para-hero ph-19">
|
||
<div class="ph-label">§19 · Физика 9 кл</div>
|
||
<h2>Деформация. Закон Гука</h2>
|
||
<div class="ph-formula">$F_\text{упр} = k|\Delta l|$</div>
|
||
<div class="ph-desc">Сила упругости пропорциональна деформации. Жёсткость k показывает, насколько сильно тело сопротивляется деформации. Природа сил упругости — электромагнитная.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📏 упругая деформация</span>
|
||
<span class="ph-tag">⚡ электромагнитная природа</span>
|
||
<span class="ph-tag">📐 [k] = Н/м</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-compress-arrows-alt"></i> §19. Закон Гука</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Закон Гука</h3>
|
||
<div class="main-f">$F_\text{упр} = k|\Delta l|$</div>
|
||
<p>Растянешь пружину на 1 см — сила 2 Н. На 2 см — сила 4 Н. На 10 см — 20 Н. Сила <b>пропорциональна деформации</b>: коэффициент пропорциональности $k$ — жёсткость. Чем жёстче пружина (большее $k$), тем больше сила при той же деформации. Направлена всегда <b>обратно растяжению</b> — пружина «хочет» вернуться.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Знаковая форма</h3>
|
||
<div class="main-f">$F_{\text{упр},x} = -kx$</div>
|
||
<p>Пружина растянута вправо ($x > 0$) — сила тянет влево ($F_x < 0$). Пружина сжата влево ($x < 0$) — сила толкает вправо ($F_x > 0$). Минус в формуле — не просто знак, а физический смысл: <b>сила всегда против деформации</b>, всегда «возвращает» тело к исходному положению.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Жёсткость</h3>
|
||
<div class="main-f">$k = \dfrac{F}{\Delta l}$</div>
|
||
<p>Единица Н/м: сколько ньютонов нужно на метр деформации. Пружина с $k = 500$ Н/м: растяни на 1 см = 0,01 м → сила 5 Н. Пружинные весы: измеряют деформацию, пересчитывают в килограммы именно через $k$. Жёсткость матраса, автомобильной подвески, прыжкового батута — всё описывается одной формулой Гука.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Виды деформаций</h3>
|
||
<div class="main-f">упругая / пластическая</div>
|
||
<p><b>Упругая</b>: убери силу — тело вернулось. Закон Гука работает. Примеры: сжатая пружина, натянутая резинка. <b>Пластическая</b>: убери силу — тело осталось деформированным. Перегнул проволоку — она уже не выпрямится. <b>Предел упругости</b>: слишком сильное растяжение — пружина не возвращается. Для каждого материала он свой.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: $F_\text{упр} = k \cdot \Delta l$</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Жёсткость $k$:</span>
|
||
<input type="range" min="50" max="1000" step="50" value="200" id="sl19k" oninput="upd19()">
|
||
<span class="slider-val" id="v19k">200 Н/м</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Деформация $\Delta l$:</span>
|
||
<input type="range" min="1" max="50" value="10" id="sl19x" oninput="upd19()">
|
||
<span class="slider-val" id="v19x">10 см</span>
|
||
</div>
|
||
<div class="idiag-result" id="res19">$F_\text{упр} = 200 \cdot 0{,}10 = 20{,}0\,\text{Н}$</div>
|
||
</div>
|
||
|
||
<!-- §19 spring canvas -->
|
||
<div class="idiag" style="margin-top:10px">
|
||
<h3>🎬 Пружина: визуализация деформации</h3>
|
||
<div class="cv-wrap">
|
||
<canvas id="cv19" style="height:160px"></canvas>
|
||
</div>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">Двигай ползунки выше — пружина меняет растяжение. Красная стрелка = сила упругости $F_\text{упр}$.</p>
|
||
</div>
|
||
|
||
<!-- §19 life examples -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Закон Гука в жизни</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🚗</div><div class="li-title">Подвеска авто</div><div class="li-desc">Пружинная подвеска сжимается на ямах → $F=k\Delta l$ гасит удар</div></div>
|
||
<div class="life-item"><div class="li-icon">⚖️</div><div class="li-title">Пружинные весы</div><div class="li-desc">Деформация пружины пропорциональна массе груза</div></div>
|
||
<div class="life-item"><div class="li-icon">🛏️</div><div class="li-title">Матрас</div><div class="li-desc">Пружины деформируются равномерно — каждая по закону Гука</div></div>
|
||
<div class="life-item"><div class="li-icon">🏹</div><div class="li-title">Лук и стрела</div><div class="li-desc">Натягиваем тетиву → копим упругую энергию → стрела летит</div></div>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Закон Гука: $F = k|\Delta l|$ — работает только при <b>упругой</b> деформации (не слишком большой).</li>
|
||
<li>Сила упругости <b>противоположна</b> деформации (знак минус в $F_x = -kx$).</li>
|
||
<li>Природа силы упругости — <b>электромагнитная</b> (взаимодействие атомов тела).</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Повесь гирю на пружину — пружина растянется до равновесия: сила тяжести вниз = сила упругости вверх. Чем тяжелее гиря — тем больше растяжение. <b>Именно так работают пружинные весы</b>: шкала откалибрована по закону Гука, каждый лишний килограмм даёт одинаковое дополнительное растяжение.</p>
|
||
<p>Предел упругости важен в инженерии: строительные балки, мосты, пружины механизмов — всё рассчитывается так, чтобы деформация оставалась упругой. Нарушишь предел — конструкция не вернётся в исходное состояние, жди аварии.</p>
|
||
</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Пример задачи</h3>
|
||
<div class="cond">На пружину жёсткостью $k = 500\,\text{Н/м}$ подвесили груз массой $m = 2\,\text{кг}$, $g = 10\,\text{м/с}^2$. Найдите деформацию пружины.</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span>Сила тяжести груза: $F_\text{т} = mg = 2 \cdot 10 = 20\,\text{Н}$</li>
|
||
<li><span class="step-n">2</span>При равновесии: $F_\text{упр} = F_\text{т} = 20\,\text{Н}$</li>
|
||
<li><span class="step-n">3</span>Деформация: $\Delta l = F/k = 20/500 = 0{,}04\,\text{м} = 4\,\text{см}$</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §20 — СИЛЫ ТРЕНИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref20">
|
||
|
||
<div class="para-hero ph-20">
|
||
<div class="ph-label">§20 · Физика 9 кл</div>
|
||
<h2>Силы трения</h2>
|
||
<div class="ph-formula">$F_\text{тр} = \mu N$</div>
|
||
<div class="ph-desc">Трение скольжения пропорционально силе нормального давления. Коэффициент трения μ зависит от материала и состояния поверхностей, но не от площади контакта.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">↔️ против скорости</span>
|
||
<span class="ph-tag">📐 μ — безразмерный</span>
|
||
<span class="ph-tag">🛞 качение < скольжение</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-hand-paper"></i> §20. Силы трения</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Трение скольжения</h3>
|
||
<div class="main-f">$F_\text{тр} = \mu N$</div>
|
||
<p>$\mu$ — безразмерный коэффициент: чем глаже поверхности, тем меньше. Лёд–металл: $\mu \approx 0{,}03$. Резина–асфальт: $\mu \approx 0{,}7$. $N$ — с какой силой тело давит на поверхность (на горизонтали $N = mg$). Сила трения всегда направлена <b>против скорости</b> скольжения — никогда не разгоняет, только тормозит.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Трение покоя</h3>
|
||
<div class="main-f">$F_\text{тр.пок} \leq \mu_\text{пок} N$</div>
|
||
<p>Книга лежит на столе — ты слегка толкаешь, она не двигается. Трение покоя точно «отвечает» на твой толчок, уравновешивая его. Усиливаешь толчок — трение покоя растёт вместе с ним. Но есть предел: $F_\text{тр.пок}^{max} = \mu_\text{пок} N$. Преодолел этот предел — книга тронулась, и дальше работает уже трение скольжения.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Горизонтальная поверхность</h3>
|
||
<div class="main-f">$N = mg;\quad F_\text{тр} = \mu mg$</div>
|
||
<p>На горизонтальной поверхности вся тяжесть тела давит на неё перпендикулярно → $N = mg$ → $F_\text{тр} = \mu mg$. Сурприз: большой кубик и маленький кубик из того же материала и с той же массой имеют <b>одинаковое трение</b> — площадь не важна! Важны только материалы ($\mu$) и вес ($N$).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Трение качения и сопротивление среды</h3>
|
||
<div class="main-f">$F_\text{кач} \ll F_\text{скольж}$</div>
|
||
<p>Колесо катится — в точке контакта нет скольжения, трение мало. Именно поэтому колесо изобрели: перевезти груз на колёсах в 10–100 раз легче, чем волоком. Шарикоподшипник — то же самое: шарики катятся, не скользят → потери минимальны. В жидкости или воздухе сопротивление растёт со скоростью в квадрате: вдвое быстрее — в четыре раза больше тормозит.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: $F_\text{тр} = \mu \cdot N$</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Коэфф. трения $\mu$:</span>
|
||
<input type="range" min="1" max="80" value="30" id="sl20mu" oninput="upd20()">
|
||
<span class="slider-val" id="v20mu">0.30</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса $m$ (→ $N\!=\!mg$):</span>
|
||
<input type="range" min="1" max="50" value="10" id="sl20m" oninput="upd20()">
|
||
<span class="slider-val" id="v20m">10 кг</span>
|
||
</div>
|
||
<div class="idiag-result" id="res20">$F_\text{тр} = 0{,}30 \cdot 100 = 30{,}0\,\text{Н}$</div>
|
||
</div>
|
||
|
||
<!-- §20 friction canvas -->
|
||
<div class="idiag" style="margin-top:10px">
|
||
<h3>🎬 Диаграмма сил трения</h3>
|
||
<div class="cv-wrap">
|
||
<canvas id="cv20" style="height:150px"></canvas>
|
||
</div>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">Двигай ползунки — стрелки меняют масштаб. $N\!=\!mg$ (вертикаль), $F_\text{тр}\!=\!\mu N$ (горизонталь).</p>
|
||
</div>
|
||
|
||
<!-- §20 mu table -->
|
||
<div class="idiag" style="margin-top:12px">
|
||
<h3>📊 Типичные значения коэффициента трения $\mu$</h3>
|
||
<table class="mu-tbl">
|
||
<tr><th>Материалы</th><th>μ (скольжение)</th><th>μ (покой)</th></tr>
|
||
<tr><td>Лёд — металл</td><td>0.03</td><td>0.05</td></tr>
|
||
<tr><td>Дерево — дерево</td><td>0.30</td><td>0.45</td></tr>
|
||
<tr><td>Резина — асфальт</td><td>0.70</td><td>0.80</td></tr>
|
||
<tr><td>Сталь — сталь (смазка)</td><td>0.10</td><td>0.12</td></tr>
|
||
<tr><td>Кожа — асфальт</td><td>0.50</td><td>0.65</td></tr>
|
||
</table>
|
||
</div>
|
||
|
||
<!-- §20 life examples -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Трение в жизни</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">👟</div><div class="li-title">Кроссовки</div><div class="li-desc">Рифлёная подошва → большой $\mu$ → не скользишь при ходьбе</div></div>
|
||
<div class="life-item"><div class="li-icon">🚗</div><div class="li-title">Тормоза</div><div class="li-desc">$F_\text{торм}=\mu mg$ — чем больше $\mu$, тем короче тормозной путь</div></div>
|
||
<div class="life-item"><div class="li-icon">❄️</div><div class="li-title">Лыжи</div><div class="li-desc">Смазка снижает $\mu$ снега → скорость выше</div></div>
|
||
<div class="life-item"><div class="li-icon">🔩</div><div class="li-title">Болт и гайка</div><div class="li-desc">Трение покоя в резьбе удерживает соединение от раскручивания</div></div>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Трение покоя — «умное»: оно подстраивается под приложенную силу. Толкаешь ящик с силой 10 Н — трение покоя ровно 10 Н. Усиливаешь до 30 Н — трение тоже 30 Н. Но как только преодолеешь максимум ($\mu_\text{пок} N$) — ящик трогается, и дальше тебя сопротивляет уже трение скольжения, которое обычно <em>меньше</em>. Именно поэтому сдвинуть тяжёлый предмет труднее, чем поддерживать его движение.</p>
|
||
<p>Трение — двуликое: мешает движению (гасит скорость, тратит энергию), но и <b>помогает</b>: без него ты не смог бы ходить, автомобиль — тормозить, болты — держаться в резьбе. Мир без трения — это ад на льду.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$F_\text{тр} = \mu N$ — трение скольжения; направлено <b>против скорости</b>.</li>
|
||
<li>Трение покоя <b>изменяется</b> от 0 до максимума $\mu_\text{пок} N$.</li>
|
||
<li>Трение <b>не зависит</b> от площади контакта — только от материалов и нормальной силы.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Почему трение покоя может быть меньше трения скольжения?</li>
|
||
<li>Брусок скользит по горизонтальной поверхности. Как направлена сила трения?</li>
|
||
<li>Почему в подшипниках используют шарики, а не скользящие втулки?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §21 — ДВИЖЕНИЕ ПОД ДЕЙСТВИЕМ СИЛЫ ТЯЖЕСТИ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref21">
|
||
|
||
<div class="para-hero ph-21">
|
||
<div class="ph-label">§21 · Физика 9 кл</div>
|
||
<h2>Движение тела под действием силы тяжести</h2>
|
||
<div class="ph-formula">$t_\text{пад} = \sqrt{2h/g};\quad v_\text{пад} = \sqrt{2gh}$</div>
|
||
<div class="ph-desc">Свободное падение, горизонтальный бросок, вертикальный бросок — всё это движение под действием только силы тяжести. Траектория горизонтального броска — парабола.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⬇️ g = 10 м/с²</span>
|
||
<span class="ph-tag">📐 траектория — парабола</span>
|
||
<span class="ph-tag">⏱️ время не зависит от v₀</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-arrow-down"></i> §21. Движение под действием силы тяжести</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Свободное падение (вниз)</h3>
|
||
<div class="main-f">$v_y = gt;\quad y = \dfrac{gt^2}{2}$</div>
|
||
<p>Уронил камень с высоты 20 м: $t = \sqrt{2 \cdot 20 / 10} = 2$ с. Скорость при ударе: $v = 10 \cdot 2 = 20$ м/с = 72 км/ч. Жёстко! Бросил вверх с той же высоты: время падения то же — только подождёшь дольше. Ускорение $g$ одинаково для пера и молотка (в вакууме). Это доказал Галилей.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Горизонтальный бросок</h3>
|
||
<div class="main-f">$x = v_0 t;\quad y = \dfrac{gt^2}{2}$</div>
|
||
<p>Два движения одновременно: по горизонтали — <b>равномерно</b> со скоростью $v_0$, по вертикали — <b>свободное падение</b> без начальной скорости. Они не мешают друг другу! Дальность: чем быстрее бросаешь и чем выше стол, тем дальше улетит. Стрела, вылетевшая горизонтально с коня, и монета, упавшая с той же высоты, ударятся о землю одновременно.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Бросок вертикально вверх</h3>
|
||
<div class="main-f">$v_y = v_0 - gt;\quad y = v_0 t - \dfrac{gt^2}{2}$</div>
|
||
<p>Бросил вверх со скоростью 20 м/с: поднимается $t_\text{п} = 20/10 = 2$ с, максимальная высота $H = 20^2/(2 \cdot 10) = 20$ м. Потом падает ещё 2 с — <b>полёт симметричен</b>: подъём = спуск. Скорость при возвращении равна начальной (в вакууме). В верхней точке $v = 0$, но $a = g \ne 0$ — тело не зависает, оно всё время ускоряется вниз.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Ускорение свободного падения</h3>
|
||
<div class="main-f">$g \approx 10\,\text{м/с}^2$</div>
|
||
<p>Не зависит от массы, размера или материала — это экспериментальный факт. Перо и молоток падают с одинаковым ускорением в вакууме. На Луне Армстронг это демонстрировал: перо и молоток упали одновременно! Используем $g = 10\,\text{м/с}^2$ для простоты (точнее: 9,8 м/с², разница ~2%).</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: свободное падение</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Высота $h$:</span>
|
||
<input type="range" min="1" max="125" value="20" id="sl21h" oninput="upd21()">
|
||
<span class="slider-val" id="v21h">20 м</span>
|
||
</div>
|
||
<div class="idiag-result" id="res21">$t = \sqrt{2{\cdot}20/10} = 2{,}0\,\text{с};\quad v = \sqrt{2{\cdot}10{\cdot}20} = 20{,}0\,\text{м/с}$</div>
|
||
</div>
|
||
|
||
<!-- §21 life examples -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Парабола вокруг нас</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">⚽</div><div class="li-title">Пас в футболе</div><div class="li-desc">Мяч летит по параболе: горизонталь — равномерно, вертикаль — ускорение $g$</div></div>
|
||
<div class="life-item"><div class="li-icon">💧</div><div class="li-title">Фонтан</div><div class="li-desc">Струя воды — парабола. Дальность зависит от скорости и угла броска</div></div>
|
||
<div class="life-item"><div class="li-icon">🏀</div><div class="li-title">Баскетбол</div><div class="li-desc">Точный бросок — правильно рассчитанная парабола траектории</div></div>
|
||
<div class="life-item"><div class="li-icon">🌋</div><div class="li-title">Вулкан</div><div class="li-desc">Выброшенные камни летят по параболе — можно предсказать зону падения</div></div>
|
||
</div>
|
||
|
||
<!-- §21 parabola canvas — THE BIG ANIMATION -->
|
||
<div class="idiag">
|
||
<h3>🎬 Горизонтальный бросок vs. свободное падение — упадут <em>одновременно!</em></h3>
|
||
<div class="cv-wrap">
|
||
<canvas id="cv21" style="height:220px"></canvas>
|
||
</div>
|
||
<button class="cv-playbtn" onclick="startAnim21()"><i class="fas fa-play"></i> Запустить анимацию</button>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">🔵 Бросок горизонтально. 🟠 Падает вертикально. По вертикали оба движутся <b>одинаково</b> — упадут в одно время!</p>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-brain"></i> Галилей vs. интуиция</div>
|
||
<p>Интуиция подсказывает: брошенное горизонтально тело падает <b>дольше</b>, ведь оно летит дальше.</p>
|
||
<p><b>На самом деле:</b> горизонтальная скорость не влияет на вертикальное падение. Оба тела — брошенное и просто упавшее с той же высоты — ударятся об землю одновременно. Именно это доказал Галилей, сбрасывая тела с Пизанской башни.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Время падения $t = \sqrt{2h/g}$ — <b>не зависит</b> от начальной горизонтальной скорости!</li>
|
||
<li>При горизонтальном броске: по горизонтали — <b>равномерно</b> ($v_x = v_0$), по вертикали — <b>равноускоренно</b> без начальной скорости.</li>
|
||
<li>Свободное падение — движение <b>только под действием силы тяжести</b>.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-graduation-cap"></i> Простыми словами</div>
|
||
<p>Если одновременно бросить один мяч горизонтально и уронить другой с той же высоты — они ударятся об пол <b>одновременно</b>. Горизонтальная скорость не влияет на вертикальное падение.</p>
|
||
<p>Это потому что горизонтальное и вертикальное движения <b>независимы</b>. Сила тяжести ускоряет только вертикальную составляющую скорости.</p>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Что такое свободное падение? При каких условиях падение можно считать свободным?</li>
|
||
<li>Почему ускорения всех свободно падающих тел одинаковы?</li>
|
||
<li>Что такое горизонтальная дальность полёта? Как её вычислить?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §22 — БРОСОК ПОД УГЛОМ К ГОРИЗОНТУ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref22">
|
||
|
||
<div class="para-hero ph-22">
|
||
<div class="ph-label">§22 · Физика 9 кл</div>
|
||
<h2>Бросок тела под углом к горизонту</h2>
|
||
<div class="ph-formula">$v_x = v_0\cos\alpha;\quad v_y = v_0\sin\alpha - gt$</div>
|
||
<div class="ph-desc">Любой бросок — это два независимых движения: равномерное горизонтальное и равноускоренное вертикальное. Меняя угол броска, можно управлять дальностью и высотой.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📐 L = v₀²sin2α/g</span>
|
||
<span class="ph-tag">⬆️ H = v₀²sin²α/2g</span>
|
||
<span class="ph-tag">🎯 max L при α=45°</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-location-arrow"></i> §22. Бросок тела под углом к горизонту</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Составляющие скорости</h3>
|
||
<div class="main-f">$v_x = v_0\cos\alpha;\quad v_y = v_0\sin\alpha - gt$</div>
|
||
<p>При броске под углом $\alpha$ начальная скорость делится на две: $v_x = v_0\cos\alpha$ — горизонтальная (постоянна весь полёт, сила тяжести не влияет), $v_y = v_0\sin\alpha$ — вертикальная (убывает из-за $g$, в верхней точке = 0). Например, бросок со скоростью 20 м/с под 30°: $v_x = 17{,}3$ м/с, $v_{y0} = 10$ м/с.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Дальность и высота</h3>
|
||
<div class="main-f">$L = \dfrac{v_0^2 \sin 2\alpha}{g};\quad H = \dfrac{v_0^2 \sin^2\!\alpha}{2g}$</div>
|
||
<p>Дальность $L = v_0^2\sin 2\alpha / g$: зависит от $\sin 2\alpha$, который максимален при $2\alpha = 90°$, то есть при $\alpha = 45°$ — золотой угол для максимальной дальности. При $\alpha = 30°$ и $\alpha = 60°$ дальность одинакова ($\sin 60° = \sin 120°$). Высота максимальна при $\alpha = 90°$ (бросок строго вверх).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Полное время полёта</h3>
|
||
<div class="main-f">$T = \dfrac{2v_0\sin\alpha}{g}$</div>
|
||
<p>Время полёта — только от вертикального движения: тело улетело вверх (время $v_{y0}/g$) и упало обратно (ещё столько же). Горизонтальная скорость на время <em>никак не влияет</em>: хоть 1 м/с, хоть 100 м/с горизонтально — вертикальный цикл тот же. Поэтому формула: $T = 2v_0\sin\alpha / g$.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Координаты в момент t</h3>
|
||
<div class="main-f">$x = v_0\cos\alpha\cdot t$</div>
|
||
<div class="main-f">$y = v_0\sin\alpha\cdot t - \tfrac{gt^2}{2}$</div>
|
||
<p>В каждый момент $t$: горизонталь нарастает равномерно ($x = v_0\cos\alpha \cdot t$), вертикаль — по параболе ($y = v_0\sin\alpha \cdot t - gt^2/2$). Подставь $x$ вместо $t$ — получишь уравнение параболы: $y = x\tan\alpha - gx^2/(2v_0^2\cos^2\alpha)$. Вершина параболы — точка где $v_y = 0$, то есть $t = v_0\sin\alpha / g$.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Представь: ты бросаешь мяч. <b>По горизонтали</b> мяч летит с постоянной скоростью — как будто никакой гравитации нет. <b>По вертикали</b> — он тормозит (летит вверх) и потом разгоняется (падает вниз), как при свободном падении.</p>
|
||
<p>Оба движения происходят <b>одновременно и независимо</b>. Поэтому траектория — парабола.</p>
|
||
<p>Угол 45° — <b>золотой угол</b>. При нём sin2α = sin90° = 1 — максимально возможная дальность для данной скорости.</p>
|
||
</div>
|
||
|
||
<!-- Интерактив: бросок под углом -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-chart-line"></i> Интерактив: бросок под углом</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Угол α:</span>
|
||
<input type="range" min="10" max="80" value="45" id="sl22a" oninput="upd22()">
|
||
<span class="slider-val" id="v22a">45°</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">v₀, м/с:</span>
|
||
<input type="range" min="5" max="30" value="20" id="sl22v" oninput="upd22()">
|
||
<span class="slider-val" id="v22v">20 м/с</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv22" style="height:200px"></canvas></div>
|
||
<div class="idiag-result" id="res22">L = — м | H = — м | T = — с</div>
|
||
</div>
|
||
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">⚽</div><div class="li-title">Удар по мячу</div><div class="li-desc">Футболист выбирает угол удара, чтобы мяч улетел как можно дальше</div></div>
|
||
<div class="life-item"><div class="li-icon">💦</div><div class="li-title">Фонтан</div><div class="li-desc">Струи воды — параболы. Угол сопла определяет форму дуги</div></div>
|
||
<div class="life-item"><div class="li-icon">🎯</div><div class="li-title">Артиллерия</div><div class="li-desc">Угол наклона ствола орудия рассчитывают по формуле дальности</div></div>
|
||
<div class="life-item"><div class="li-icon">🏀</div><div class="li-title">Баскетбол</div><div class="li-desc">Траектория броска — парабола. Игрок интуитивно решает задачу §22</div></div>
|
||
<div class="life-item"><div class="li-icon">🚀</div><div class="li-title">Ракета</div><div class="li-desc">Баллистические ракеты летят по параболе в безвоздушном пространстве</div></div>
|
||
<div class="life-item"><div class="li-icon">🌧️</div><div class="li-title">Дождь</div><div class="li-desc">Капли вылетают из тучи с горизонтальной скоростью ветра + вертикальным ускорением g</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-lightbulb"></i> Парадокс: почему именно 45°?</div>
|
||
<p>$L = v_0^2\sin 2\alpha / g$. Функция $\sin 2\alpha$ максимальна при $2\alpha = 90°$, то есть $\alpha = 45°$.</p>
|
||
<p>Но в реальности воздух тормозит мяч — оптимальный угол смещается к 35–40°. Именно поэтому в футболе не бьют «под 45°».</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Горизонтальная и вертикальная составляющие движения <b>независимы</b>.</li>
|
||
<li>Максимальная дальность — при $\alpha = 45°$.</li>
|
||
<li>Траектория при броске под углом — <b>парабола</b>.</li>
|
||
<li>В верхней точке $v_y = 0$, но $v_x = v_0\cos\alpha \neq 0$.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Как направлена скорость тела в верхней точке траектории при броске под углом?</li>
|
||
<li>При каком угле броска дальность максимальна? Почему?</li>
|
||
<li>Что происходит с горизонтальной составляющей скорости в течение всего полёта?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §23 — ЗАКОН ВСЕМИРНОГО ТЯГОТЕНИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref23">
|
||
|
||
<div class="para-hero ph-23">
|
||
<div class="ph-label">§23 · Физика 9 кл</div>
|
||
<h2>Закон всемирного тяготения</h2>
|
||
<div class="ph-formula">$F = G\dfrac{m_1 m_2}{r^2}$</div>
|
||
<div class="ph-desc">Каждое тело притягивает каждое другое тело с силой, прямо пропорциональной произведению масс и обратно пропорциональной квадрату расстояния между ними.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">G = 6,67·10⁻¹¹ Н·м²/кг²</span>
|
||
<span class="ph-tag">🌍 g = GM/R²</span>
|
||
<span class="ph-tag">🛰️ v₁ = 7,9 км/с</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-globe"></i> §23. Закон всемирного тяготения</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Закон всемирного тяготения</h3>
|
||
<div class="main-f">$F = G\dfrac{m_1 m_2}{r^2}$</div>
|
||
<p>Два человека по 60 кг на расстоянии 1 м: $F = 6{,}67 \cdot 10^{-11} \cdot 60 \cdot 60 / 1^2 \approx 2{,}4 \cdot 10^{-7}$ Н — в миллиарды раз меньше нейтона. Для людей гравитация ничтожна. Но для планет ($10^{24}$ кг) — главная сила во Вселенной. $r$ — расстояние между <b>центрами масс</b>, не между поверхностями.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Ускорение свободного падения</h3>
|
||
<div class="main-f">$g = \dfrac{GM}{R^2}$</div>
|
||
<p>Сила тяжести = $GMm/R^2 = mg$, значит $g = GM/R^2$ — зависит только от планеты, не от падающего тела. Марс легче Земли и меньше: $g_\text{Марс} = 3{,}7$ м/с². Юпитер огромен: $g_\text{Юп} = 25$ м/с² — тебя «приплющит» в 2,5 раза сильнее. Чем выше над поверхностью (больше $r$) — тем слабее $g$.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Первая космическая скорость</h3>
|
||
<div class="main-f">$v_1 = \sqrt{gR} \approx 7{,}9\,\text{км/с}$</div>
|
||
<p>Если пушка на горе выстрелит горизонтально со скоростью 7,9 км/с — ядро начнёт «падать» к Земле, но Земля «убегает» под ней так же быстро. Ядро в вечном падении — орбита! Это минимальная орбитальная скорость: $mg = mv^2/R$ → $v_1 = \sqrt{gR}$. Реальные спутники летят чуть выше — нет атмосферы.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Вторая космическая скорость</h3>
|
||
<div class="main-f">$v_2 = \sqrt{2gR} \approx 11{,}2\,\text{км/с}$</div>
|
||
<p>При скорости $v_2 \approx 11{,}2$ км/с тело навсегда покидает Землю — кинетической энергии хватает, чтобы «выбраться» из гравитационной ямы. Именно с такой скоростью стартуют межпланетные зонды. Быстрее $v_2$ — улетаешь к другим планетам или из Солнечной системы. Медленнее — возвращаешься назад.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Ньютон заметил, что Луна падает на Земли так же, как яблоко — только «мимо». Луна движется так быстро по горизонтали, что, падая вниз, она «промахивается» мимо Земли. Это и есть орбита!</p>
|
||
<p>Закон работает <b>между любыми телами</b>: притягиваются две книги на столе, два облака, две галактики. Просто при малых массах сила крошечная.</p>
|
||
<p>Ключевой факт: сила падает как $1/r^2$. Увеличь расстояние в 2 раза — сила уменьшится в <b>4 раза</b>.</p>
|
||
</div>
|
||
|
||
<!-- Интерактив: закон тяготения -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-satellite"></i> Интерактив: сила тяготения</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">m₁, кг:</span>
|
||
<input type="range" min="1" max="100" value="50" id="sl23m1" oninput="upd23()">
|
||
<span class="slider-val" id="v23m1">50 кг</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">m₂, кг:</span>
|
||
<input type="range" min="1" max="100" value="50" id="sl23m2" oninput="upd23()">
|
||
<span class="slider-val" id="v23m2">50 кг</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">r, м:</span>
|
||
<input type="range" min="1" max="20" value="5" id="sl23r" oninput="upd23()">
|
||
<span class="slider-val" id="v23r">5 м</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv23" style="height:160px"></canvas></div>
|
||
<div class="idiag-result" id="res23">F = — Н</div>
|
||
</div>
|
||
|
||
<!-- Таблица планет -->
|
||
<div class="section-title" style="margin-top:6px"><i class="fas fa-solar-system"></i> Данные планет Солнечной системы</div>
|
||
<table class="mu-tbl">
|
||
<tr><th>Планета</th><th>M, кг</th><th>R, км</th><th>g, м/с²</th></tr>
|
||
<tr><td>Меркурий</td><td>3,3·10²³</td><td>2 440</td><td>3,7</td></tr>
|
||
<tr><td>Венера</td><td>4,9·10²⁴</td><td>6 050</td><td>8,9</td></tr>
|
||
<tr><td><b>Земля</b></td><td><b>6,0·10²⁴</b></td><td><b>6 370</b></td><td><b>9,8</b></td></tr>
|
||
<tr><td>Марс</td><td>6,4·10²³</td><td>3 390</td><td>3,7</td></tr>
|
||
<tr><td>Юпитер</td><td>1,9·10²⁷</td><td>71 490</td><td>25</td></tr>
|
||
<tr><td>Луна</td><td>7,3·10²²</td><td>1 737</td><td>1,6</td></tr>
|
||
</table>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-lightbulb"></i> Почему Луна не падает на Землю?</div>
|
||
<p>Луна постоянно «падает» на Землю — сила тяжести притягивает её. Но скорость Луны (~1 км/с) настолько велика, что она успевает «промахнуться»: Земля «уходит из-под ног» так же быстро, как Луна к ней приближается. Это и есть орбита.</p>
|
||
<p>Это объяснение принадлежит Ньютону — он придумал «пушку на горе», из которой можно выстрелить так, что ядро облетит Землю.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$F \propto m_1 m_2$ — вдвое тяжелее тело: сила вдвое больше.</li>
|
||
<li>$F \propto 1/r^2$ — вдвое дальше: сила <b>в четыре раза</b> меньше.</li>
|
||
<li>Первая космическая скорость: $v_1 \approx 7{,}9\,\text{км/с}$.</li>
|
||
<li>$G = 6{,}67 \cdot 10^{-11}\,\text{Н}{\cdot}\text{м}^2/\text{кг}^2$ — запомнить значение!</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Как изменится сила тяготения, если расстояние между телами уменьшить в 3 раза?</li>
|
||
<li>Что такое первая космическая скорость и как она связана с $g$ и $R$?</li>
|
||
<li>Почему ускорение свободного падения на разных планетах разное?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §24 — ВЕС ТЕЛА. НЕВЕСОМОСТЬ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref24">
|
||
|
||
<div class="para-hero ph-24">
|
||
<div class="ph-label">§24 · Физика 9 кл</div>
|
||
<h2>Вес тела. Невесомость</h2>
|
||
<div class="ph-formula">$P = m(g \pm a)$</div>
|
||
<div class="ph-desc">Вес — это сила, с которой тело давит на опору или растягивает подвес. При ускорении тело «тяжелеет» или «легчает». При свободном падении — полная невесомость.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⬆️ лифт вверх: P > mg</span>
|
||
<span class="ph-tag">⬇️ лифт вниз: P < mg</span>
|
||
<span class="ph-tag">🕳️ a = g: P = 0</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-weight-hanging"></i> §24. Вес тела. Невесомость</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Вес тела при ускорении</h3>
|
||
<div class="main-f">$P = m(g + a)$ — лифт вверх ($a > 0$)</div>
|
||
<div class="main-f">$P = m(g - a)$ — лифт вниз ($a > 0$)</div>
|
||
<p>Вес — это не то же самое, что сила тяжести! Вес $\vec{P}$ — сила на опору, сила тяжести $\vec{F}_\text{т} = m\vec{g}$ — всегда одна и та же.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Невесомость</h3>
|
||
<div class="main-f">$a = g \Rightarrow P = 0$</div>
|
||
<p>Невесомость — не «нет гравитации», а «нет опоры». Стоишь на полу — пол давит снизу, ты его чувствуешь. Если пол исчезнет (лифт в свободном падении) — давить нечему, весы покажут 0. Твоя масса и $g$ никуда не делись, но опоры нет → веса нет → невесомость. Именно так на МКС: станция постоянно «падает» вокруг Земли.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Перегрузка</h3>
|
||
<div class="main-f">$Q = P/(mg) = (g+a)/g$</div>
|
||
<p>$Q = P/(mg)$: сколько «своих весов» ты ощущаешь. В покое $Q = 1$ (норма). Лифт разгоняется вверх: $Q > 1$ — ты тяжелее. Ракетный старт: $Q = 3{-}4$ — тело давит на кресло с утроенной силой. Отрицательная перегрузка ($Q < 0$): лифт падает быстрее $g$ — тебя отрывает от пола. Предел выносимости человека: ~9g кратковременно.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Пример: лифт</h3>
|
||
<div class="main-f">$m = 60\,\text{кг},\; a = 2\,\text{м/с}^2$</div>
|
||
<p>Вверх: $P = 60(10+2) = 720\,\text{Н}$ (тяжелее)<br>
|
||
Вниз: $P = 60(10-2) = 480\,\text{Н}$ (легче)<br>
|
||
Без ускорения: $P = 60\cdot10 = 600\,\text{Н}$</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Ты стоишь в лифте. Лифт трогается вверх — ты чувствуешь, что стал <b>тяжелее</b>. Пол давит на тебя сильнее. Весы покажут больше. Это и есть увеличение веса: $P = m(g + a)$.</p>
|
||
<p>Лифт едет вниз с ускорением — ты чувствуешь, что стал <b>легче</b>. Если трос обрежут (свободное падение) — ты взлетишь к потолку. Вес = 0. Невесомость!</p>
|
||
<p><b>Ключевое:</b> вес и сила тяжести — разные вещи. Сила тяжести $mg$ всегда одна и та же. Вес зависит от ускорения.</p>
|
||
</div>
|
||
|
||
<!-- Интерактив: лифт -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-elevator"></i> Интерактив: лифт</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса m, кг:</span>
|
||
<input type="range" min="10" max="120" value="60" id="sl24m" oninput="upd24()">
|
||
<span class="slider-val" id="v24m">60 кг</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Ускорение a:</span>
|
||
<input type="range" min="-10" max="10" value="0" id="sl24a" oninput="upd24()">
|
||
<span class="slider-val" id="v24a">0 м/с²</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv24" style="height:200px"></canvas></div>
|
||
<div class="idiag-result" id="res24">P = — Н | F_т = — Н</div>
|
||
</div>
|
||
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🚀</div><div class="li-title">Старт ракеты</div><div class="li-desc">Космонавт при старте испытывает 3–4g. Тело весит в 3–4 раза больше нормы</div></div>
|
||
<div class="life-item"><div class="li-icon">🛗</div><div class="li-title">Лифт</div><div class="li-desc">Каждый день испытываешь перегрузку/невесомость при разгоне/торможении</div></div>
|
||
<div class="life-item"><div class="li-icon">✈️</div><div class="li-title">Самолёт</div><div class="li-desc">В «яме» воздушной ямы самолёт резко снижается — пассажиры чувствуют невесомость</div></div>
|
||
<div class="life-item"><div class="li-icon">🎢</div><div class="li-title">Американские горки</div><div class="li-desc">На верхней части петли — отрицательная перегрузка. Кровь приливает к голове</div></div>
|
||
<div class="life-item"><div class="li-icon">🌌</div><div class="li-title">МКС</div><div class="li-desc">Станция находится в постоянном свободном падении вокруг Земли — отсюда невесомость</div></div>
|
||
<div class="life-item"><div class="li-icon">🏋️</div><div class="li-title">Прыжок с парашютом</div><div class="li-desc">Первые секунды свободного падения — невесомость. Парашют раскрылся — перегрузка</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-lightbulb"></i> МКС — почему невесомость?</div>
|
||
<p>Многие думают: на МКС невесомость, потому что «далеко от Земли» и нет гравитации. Но на высоте 400 км гравитация составляет ~88% от земной! Невесомость — потому что станция <b>постоянно падает</b> вокруг Земли. Это и есть орбитальный полёт.</p>
|
||
<p>Космонавты — парашютисты, которые никогда не приземляются.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Вес $P \neq$ сила тяжести $F_\text{т} = mg$. Вес зависит от ускорения, сила тяжести — нет.</li>
|
||
<li>Ускорение вверх → $P = m(g+a)$ — перегрузка.</li>
|
||
<li>Ускорение вниз → $P = m(g-a)$ — облегчение.</li>
|
||
<li>$a = g$ (свободное падение) → $P = 0$ — невесомость.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Чем отличается вес тела от силы тяжести?</li>
|
||
<li>Почему космонавты на орбите испытывают невесомость, хотя гравитация там есть?</li>
|
||
<li>Человек массой $m = 70\,\text{кг}$ в лифте. Лифт движется вниз с $a = 3\,\text{м/с}^2$. Каков его вес?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §25 — МОМЕНТ СИЛЫ. УСЛОВИЯ РАВНОВЕСИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref25">
|
||
|
||
<div class="para-hero ph-25">
|
||
<div class="ph-label">§25 · Физика 9 кл</div>
|
||
<h2>Условия равновесия тел. Момент силы</h2>
|
||
<div class="ph-formula">$M = F \cdot l;\quad \sum \vec{F} = \vec{0};\quad \sum M = 0$</div>
|
||
<div class="ph-desc">Тело в равновесии — если нет ни поступательного, ни вращательного движения. Момент силы — это «вращательный эффект» силы. Чем длиннее плечо, тем легче повернуть.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📐 [M] = Н·м</span>
|
||
<span class="ph-tag">⚖️ ΣM = 0</span>
|
||
<span class="ph-tag">↔️ ΣF = 0</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-balance-scale"></i> §25. Момент силы. Условия равновесия</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Момент силы</h3>
|
||
<div class="main-f">$M = F \cdot l$</div>
|
||
<p>$F$ — сила (Н), $l$ — <b>плечо</b> (м) — перпендикуляр от оси вращения до <em>линии действия</em> силы (не до точки приложения!). Тот же болт, та же сила — но длинный ключ даёт больший момент → легче открутить. Удвоил плечо — удвоил момент при той же силе. $[M] = \text{Н}{\cdot}\text{м}$.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Знак момента</h3>
|
||
<div class="main-f">$M = {+}F l$ или $M = {-}F l$</div>
|
||
<p>Чтобы условие равновесия $\sum M = 0$ работало, моментам нужен знак. Договоримся: <b>«+»</b> — против часовой стрелки (правило буравчика: палец вверх — ладонь против часовой). <b>«−»</b> — по часовой. Один груз на качелях «крутит» в одну сторону (+), второй — в другую (−). Баланс: суммарный момент = 0.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>1-е условие равновесия (поступат.)</h3>
|
||
<div class="main-f">$\vec{F}_1 + \vec{F}_2 + \ldots = \vec{0}$</div>
|
||
<p>Книга на столе: сила тяжести вниз + реакция стола вверх = 0 → покой. Люстра на потолке: тяжесть вниз + натяжение троса вверх = 0 → висит. Это условие не допускает ускорения: ни влево-вправо, ни вперёд-назад, ни вверх-вниз. Нарушишь — тело начнёт лететь.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>2-е условие равновесия (вращат.)</h3>
|
||
<div class="main-f">$M_1 + M_2 + \ldots = 0$</div>
|
||
<p>Даже если все силы уравновешены (1-е условие), тело может вращаться — если их моменты не компенсируют друг друга. Кран: трос тянет вниз слева (момент +), противовес давит вниз справа (момент −). Сумма = 0 → не вращается. Нарушь баланс моментов — кран начнёт заваливаться.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Интерактивные качели -->
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: балансирующие качели</h3>
|
||
<p style="font-size:.79rem;color:var(--muted);margin-bottom:8px">Двигай плечи — качели наклоняются! Найди баланс: $M_1 = M_2$</p>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Плечо $l_1$ (синий, 4 кг):</span>
|
||
<input type="range" min="1" max="20" value="8" id="sl25l1" oninput="upd25()">
|
||
<span class="slider-val" id="v25l1">0.8 м</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Плечо $l_2$ (оранж., 6 кг):</span>
|
||
<input type="range" min="1" max="20" value="6" id="sl25l2" oninput="upd25()">
|
||
<span class="slider-val" id="v25l2">0.6 м</span>
|
||
</div>
|
||
<div class="idiag-result" id="res25">M₁ = 32 Н·м | M₂ = 36 Н·м — наклон вправо</div>
|
||
<div class="cv-wrap" style="margin-top:8px">
|
||
<canvas id="cv25" style="height:180px"></canvas>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Жизненные примеры -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Момент силы в жизни</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🔧</div><div class="li-title">Гаечный ключ</div><div class="li-desc">Длинная ручка = большое плечо → меньше силы нужно для того же момента</div></div>
|
||
<div class="life-item"><div class="li-icon">🚪</div><div class="li-title">Ручка двери</div><div class="li-desc">Ручка у края: $l$ велико → легко открыть. Толкать у петель: $l$ мало → очень тяжело!</div></div>
|
||
<div class="life-item"><div class="li-icon">🏗️</div><div class="li-title">Башенный кран</div><div class="li-desc">Противовес сзади уравновешивает груз спереди: $M_1 = M_2$</div></div>
|
||
<div class="life-item"><div class="li-icon">🎡</div><div class="li-title">Качели</div><div class="li-desc">Тяжёлый ребёнок сидит ближе к центру, лёгкий — дальше. $F_1 l_1 = F_2 l_2$</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-bolt"></i> Почему трудно открыть дверь, толкая у петель?</div>
|
||
<p>Попробуй открыть дверь, нажав вблизи петель — почти невозможно! Плечо $l$ очень маленькое, значит момент $M = F \cdot l$ тоже мал при той же силе.</p>
|
||
<p>Поэтому ручки всегда ставят <b>максимально далеко от петель</b> — чтобы создавать большой момент небольшой силой.</p>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-ruler"></i> Как найти плечо «косой» силы?</div>
|
||
<p>Плечо — это <b>перпендикуляр</b> из оси вращения на <b>линию действия</b> силы (не на саму стрелку). Если сила приложена под углом, плечо $l = d \cdot \sin\alpha$, где $d$ — расстояние от оси до точки приложения.</p>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Представь качели. Слева сел тяжёлый человек (60 кг × 1 м = 60 Н·м), справа лёгкий ребёнок (30 кг). Чтобы сбалансировать — ребёнок должен сесть на 2 м от оси: $30 \cdot 2 = 60$ Н·м. Моменты равны — качели в равновесии. Это и есть условие $\sum M = 0$.</p>
|
||
<p>Ключевая ловушка: плечо — это не расстояние до <em>точки приложения</em> силы, а перпендикуляр до <em>линии действия</em>. Если сила приложена под углом — плечо короче, чем кажется. Именно поэтому «косая» сила создаёт меньший момент, чем «прямая» та же сила на том же расстоянии.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Два условия равновесия: <b>ΣF = 0</b> (нет поступательного движения) и <b>ΣM = 0</b> (нет вращения).</li>
|
||
<li>Плечо — это <b>перпендикуляр</b> от оси до линии действия силы, а не до точки приложения!</li>
|
||
<li>$[M] = \text{Н}{\cdot}\text{м}$ — единица момента силы.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Что называется плечом силы? Как его найти?</li>
|
||
<li>Запиши оба условия равновесия тела.</li>
|
||
<li>Почему длинный гаечный ключ эффективнее короткого?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §26 — РЫЧАГИ И БЛОКИ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref26">
|
||
|
||
<div class="para-hero ph-26">
|
||
<div class="ph-label">§26 · Физика 9 кл</div>
|
||
<h2>Простые механизмы. Рычаги. Блоки</h2>
|
||
<div class="ph-formula">$F_1 \cdot l_1 = F_2 \cdot l_2;\quad \dfrac{F_2}{F_1} = \dfrac{l_1}{l_2}$</div>
|
||
<div class="ph-desc">Рычаг — это «умножитель силы»: выигрываешь в силе во столько раз, во сколько одно плечо длиннее другого. Но в расстоянии ты проигрываешь ровно столько же!</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⚖️ F₁l₁ = F₂l₂</span>
|
||
<span class="ph-tag">🔄 блок меняет направление</span>
|
||
<span class="ph-tag">📏 выигрыш = l₁/l₂</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-tools"></i> §26. Рычаги и блоки</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Условие равновесия рычага</h3>
|
||
<div class="main-f">$F_1 \cdot l_1 = F_2 \cdot l_2$</div>
|
||
<p>Плечо нагрузки 0,2 м, плечо твоей силы 1 м → выигрыш = 5: тянешь с силой 100 Н, а поднимаешь груз 500 Н. Но! Твоя рука переместится в 5 раз дальше груза — работа не меняется ($F_1 \cdot s_1 = F_2 \cdot s_2$). Рычаг не создаёт энергию — только перераспределяет силу и расстояние.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Рычаг 1-го рода</h3>
|
||
<div class="main-f">ось между силами</div>
|
||
<p>Точка опоры — посередине, силы — по разные стороны. Качели: один толкает вниз слева, другой справа — точка опоры в центре. Ножницы: два лезвия, ось посередине. Лом под камень: камень давит вниз с одной стороны, ты тянешь вниз с другой — оба «вниз», но по разные стороны оси → противоположные моменты.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Неподвижный блок</h3>
|
||
<div class="main-f">выигрыш = 1</div>
|
||
<p>Ось блока закреплена. Верёвка меняет направление: тянешь вниз — груз идёт вверх. В силе выигрыша нет: сила нужна равная весу груза. Но удобство огромное: легче тянуть вниз (своим весом), чем поднимать вверх с напряжением мышц. Именно поэтому блок на колодце.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Подвижный блок</h3>
|
||
<div class="main-f">выигрыш = 2 (в силе)</div>
|
||
<p>Ось блока движется вместе с грузом — верёвка идёт сразу с двух сторон. Груз 100 кг = 1000 Н, а тянешь всего 500 Н — вдвое легче! Но верёвку надо вытянуть на 2 метра, чтобы груз поднялся на 1 метр. Работа та же: $500 \cdot 2 = 1000 \cdot 1$. «Золотое правило»: что выиграл в силе — проиграл в расстоянии.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Рычаг: интерактив -->
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: сила нужна меньше при длинном плече!</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Плечо нагрузки $l_2$:</span>
|
||
<input type="range" min="1" max="10" value="3" id="sl26l2" oninput="upd26()">
|
||
<span class="slider-val" id="v26l2">0.3 м</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Плечо силы $l_1$:</span>
|
||
<input type="range" min="3" max="20" value="9" id="sl26l1" oninput="upd26()">
|
||
<span class="slider-val" id="v26l1">0.9 м</span>
|
||
</div>
|
||
<div class="idiag-result" id="res26">F = 167 Н | Выигрыш = 3.0× | Нагрузка 50 кг</div>
|
||
<div class="cv-wrap" style="margin-top:8px">
|
||
<canvas id="cv26" style="height:160px"></canvas>
|
||
</div>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">Увеличивай $l_1$ — стрелка силы уменьшается. Чем длиннее плечо, тем меньше нужно сил!</p>
|
||
</div>
|
||
|
||
<!-- Жизненные примеры -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Рычаги вокруг нас</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">✂️</div><div class="li-title">Ножницы</div><div class="li-desc">Рычаг 1-го рода. Длинные ручки и короткие лезвия — выигрыш в силе для резки</div></div>
|
||
<div class="life-item"><div class="li-icon">🚜</div><div class="li-title">Лом под камень</div><div class="li-desc">Маленькое усилие на длинном конце — огромная сила на коротком конце у камня</div></div>
|
||
<div class="life-item"><div class="li-icon">🪣</div><div class="li-title">Колодец</div><div class="li-desc">Блок на колодце меняет направление силы — тянуть вниз удобнее, чем поднимать вверх</div></div>
|
||
<div class="life-item"><div class="li-icon">🏗️</div><div class="li-title">Строительный кран</div><div class="li-desc">Подвижные блоки дают выигрыш в силе, позволяя поднимать тонны</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-brain"></i> «Золотое правило механики»</div>
|
||
<p>Любой механизм — рычаг, блок, наклонная плоскость — даёт выигрыш <b>либо в силе, либо в расстоянии</b>, но никогда — в работе.</p>
|
||
<p>Выиграл в силе в $n$ раз → проиграл в пути в $n$ раз. Работа: $A = F \cdot s$ — остаётся той же.</p>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Архимед говорил: «Дайте мне точку опоры — и я переверну Землю». Рычаг с достаточно длинным плечом может создать любую силу. Но для этого нужно двигать ручку очень далеко. Поднять Землю на 1 нанометр потребовало бы, чтобы ты перемещал свою руку на сотни световых лет.</p>
|
||
<p>Именно это и есть «золотое правило механики»: <b>выигрываешь в силе — проигрываешь в пути</b>. Работа не меняется. Поэтому вечного двигателя не бывает — любой механизм лишь перераспределяет, но не создаёт энергию.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Рычаг: $F_1 l_1 = F_2 l_2$ — момент сил с обеих сторон равен (равновесие).</li>
|
||
<li><b>Неподвижный</b> блок — меняет направление, выигрыш = 1.</li>
|
||
<li><b>Подвижный</b> блок — выигрыш = 2 (сила в 2 раза меньше, путь в 2 раза длиннее).</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Сформулируй условие равновесия рычага.</li>
|
||
<li>Чем отличается подвижный блок от неподвижного?</li>
|
||
<li>Как получить выигрыш в силе 4 раза с помощью блоков?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §27 — КПД. НАКЛОННАЯ ПЛОСКОСТЬ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref27">
|
||
|
||
<div class="para-hero ph-27">
|
||
<div class="ph-label">§27 · Физика 9 кл</div>
|
||
<h2>Наклонная плоскость. «Золотое правило». КПД</h2>
|
||
<div class="ph-formula">$\dfrac{F_2}{F} = \dfrac{h}{l};\quad \eta = \dfrac{A_\text{пол}}{A_\text{затр}} \cdot 100\%$</div>
|
||
<div class="ph-desc">Наклонная плоскость уменьшает нужную силу, но удлиняет путь. КПД показывает, какую долю работы мы используем с пользой — всегда меньше 100% из-за трения.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📏 выигрыш = l/h</span>
|
||
<span class="ph-tag">⚡ КПД < 100%</span>
|
||
<span class="ph-tag">🔄 золотое правило</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-mountain"></i> §27. Наклонная плоскость и КПД</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Наклонная плоскость (без трения)</h3>
|
||
<div class="main-f">$F_2 = F \cdot \dfrac{h}{l}$</div>
|
||
<p>$F = mg$ — вес груза, $l$ — длина плоскости, $h$ — высота.</p>
|
||
<p>Выигрыш в силе: $l/h$ (во столько раз меньше нужная сила).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>КПД механизма</h3>
|
||
<div class="main-f">$\eta = \dfrac{A_\text{полез}}{A_\text{затрач}} \cdot 100\%$</div>
|
||
<p>$A_\text{полез} = mgh$ — работа против силы тяжести.</p>
|
||
<p>$A_\text{затрач} = F_2 \cdot l$ — работа приложенной силы.</p>
|
||
<p>Всегда: $\eta < 100\%$</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>«Золотое правило механики»</h3>
|
||
<div class="main-f">$A_\text{затрач} \geq A_\text{полез}$</div>
|
||
<p>Ни один механизм не даёт выигрыша в работе. Выигрываешь в силе — проигрываешь в пути.</p>
|
||
<p>$F_2 \cdot l = mg \cdot h$ — идеально (без трения)</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Силы на наклонной плоскости</h3>
|
||
<div class="main-f">$N = mg\cos\alpha;\quad F_\text{тр} = \mu N$</div>
|
||
<p>Компонента вдоль плоскости: $mg\sin\alpha$ (надо преодолеть, чтобы двигаться).</p>
|
||
<p>С трением: $F_2 = mg\sin\alpha + \mu mg\cos\alpha$</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Наклонная плоскость: интерактив -->
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: угол наклона → нужная сила</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Угол $\alpha$:</span>
|
||
<input type="range" min="5" max="70" value="20" id="sl27a" oninput="upd27()">
|
||
<span class="slider-val" id="v27a">20°</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса $m$:</span>
|
||
<input type="range" min="5" max="50" value="20" id="sl27m" oninput="upd27()">
|
||
<span class="slider-val" id="v27m">20 кг</span>
|
||
</div>
|
||
<div class="idiag-result" id="res27">F = 68 Н (против 200 Н напрямую) | Выигрыш = 2.9×</div>
|
||
<div class="cv-wrap" style="margin-top:8px">
|
||
<canvas id="cv27" style="height:180px"></canvas>
|
||
</div>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:6px">Меньше угол = больше выигрыш в силе. Но путь становится длиннее!</p>
|
||
</div>
|
||
|
||
<!-- КПД интерактив -->
|
||
<div class="idiag" style="margin-top:12px">
|
||
<h3>📊 КПД: полезная и затраченная работа</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Коэфф. трения $\mu$:</span>
|
||
<input type="range" min="0" max="40" value="15" id="sl27mu" oninput="upd27mu()">
|
||
<span class="slider-val" id="v27mu">0.15</span>
|
||
</div>
|
||
<div class="idiag-result" id="res27mu">КПД = 79% | Потери на трение: 21%</div>
|
||
<div class="cv-wrap" style="margin-top:6px">
|
||
<canvas id="cv27eff" style="height:70px"></canvas>
|
||
</div>
|
||
<p style="font-size:.78rem;color:var(--muted);margin-top:4px">↑ μ = больше трение = меньше КПД. При $\mu = 0$ (идеальный механизм) КПД = 100%.</p>
|
||
</div>
|
||
|
||
<!-- Жизненные примеры -->
|
||
<div class="section-title" style="margin-top:14px"><i class="fas fa-lightbulb"></i> Наклонная плоскость в жизни</div>
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">♿</div><div class="li-title">Пандус</div><div class="li-desc">Длинный пологий пандус = большой $l/h$ → инвалидное кресло закатить легче</div></div>
|
||
<div class="life-item"><div class="li-icon">🔩</div><div class="li-title">Шуруп</div><div class="li-desc">Резьба — это наклонная плоскость, «закрученная» вокруг стержня. $l/h$ очень велико</div></div>
|
||
<div class="life-item"><div class="li-icon">🪓</div><div class="li-title">Топор / клин</div><div class="li-desc">Острый клин = малый угол α → огромный выигрыш в силе при ударе</div></div>
|
||
<div class="life-item"><div class="li-icon">🛣️</div><div class="li-title">Серпантин дорог</div><div class="li-desc">Горный серпантин — очень длинная «наклонная плоскость» с малым углом</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-fire"></i> Почему КПД не бывает 100%?</div>
|
||
<p>Всегда есть <b>трение</b> в механизмах: блоки, подшипники, поверхности — всё это «ворует» часть работы и превращает её в тепло.</p>
|
||
<p>КПД 80-90% — хороший механизм. КПД < 50% — плохой. Задача инженеров — смазывать, полировать, выбирать материалы с малым $\mu$.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Выигрыш наклонной плоскости = $l/h$ (длина/высота).</li>
|
||
<li>КПД: $\eta = \frac{A_\text{пол}}{A_\text{затр}} \cdot 100\% < 100\%$ всегда (из-за трения).</li>
|
||
<li>«Золотое правило»: выигрываешь в силе в $n$ раз → проигрываешь в пути в $n$ раз.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>В чём состоит «золотое правило механики»?</li>
|
||
<li>Что такое КПД? Может ли он быть больше 100%?</li>
|
||
<li>Во сколько раз наклонная плоскость $l = 5\,\text{м}$, $h = 1\,\text{м}$ уменьшает нужную силу?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §28 — ЦЕНТР ТЯЖЕСТИ. ВИДЫ РАВНОВЕСИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref28">
|
||
|
||
<div class="para-hero ph-28">
|
||
<div class="ph-label">§28 · Физика 9 кл</div>
|
||
<h2>Центр тяжести. Виды равновесия</h2>
|
||
<div class="ph-formula">$x_c = \dfrac{\sum m_i x_i}{\sum m_i};\quad y_c = \dfrac{\sum m_i y_i}{\sum m_i}$</div>
|
||
<div class="ph-desc">Центр тяжести — точка, через которую проходит равнодействующая всех сил тяжести, действующих на тело. Устойчивость тела зависит от положения центра тяжести и площади опоры.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⬆️ устойчивое: ЦТ снизу</span>
|
||
<span class="ph-tag">↕️ неустойчивое: ЦТ сверху</span>
|
||
<span class="ph-tag">🔄 безразличное: ЦТ = ось</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-balance-scale"></i> §28. Центр тяжести. Виды равновесия</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Центр тяжести (ЦТ)</h3>
|
||
<div class="main-f">$x_c = \dfrac{m_1 x_1 + m_2 x_2}{m_1 + m_2}$</div>
|
||
<p>Точка, в которой можно считать сосредоточенной всю массу тела при вычислении действия силы тяжести.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Устойчивое равновесие</h3>
|
||
<div class="main-f">ЦТ — <b>ниже</b> точки опоры</div>
|
||
<p>При отклонении тело возвращается в исходное положение. Пример: маятник, кресло-качалка.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Неустойчивое равновесие</h3>
|
||
<div class="main-f">ЦТ — <b>выше</b> точки опоры</div>
|
||
<p>При малейшем отклонении тело падает. Пример: карандаш на острие, пирамида вверх ногами.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Безразличное равновесие</h3>
|
||
<div class="main-f">ЦТ = ось вращения</div>
|
||
<p>При отклонении тело остаётся в новом положении. Пример: однородный шар, колесо.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Представь неваляшку. Как бы ты её ни толкнул — она возвращается. Потому что её центр тяжести <b>очень низко</b> (снизу тяжёлый груз). Это устойчивое равновесие.</p>
|
||
<p>А теперь попробуй поставить карандаш на острие. Почти невозможно — центр тяжести <b>выше точки опоры</b>. Малейшее отклонение — и он падает. Неустойчивое равновесие.</p>
|
||
<p><b>Правило устойчивости:</b> чем <b>ниже ЦТ</b> и <b>шире площадь опоры</b>, тем устойчивее тело. Поэтому у грузовика широкая колея и низкий центр масс.</p>
|
||
</div>
|
||
|
||
<!-- Интерактив: 3 вида равновесия -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-balance-scale-right"></i> Интерактив: виды равновесия</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Тип:</span>
|
||
<input type="range" min="0" max="2" step="1" value="0" id="sl28type" oninput="upd28()">
|
||
<span class="slider-val" id="v28type">Устойчивое</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Угол отклонения:</span>
|
||
<input type="range" min="-40" max="40" value="0" id="sl28angle" oninput="upd28()">
|
||
<span class="slider-val" id="v28angle">0°</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv28" style="height:220px"></canvas></div>
|
||
<div class="idiag-result" id="res28">Устойчивое равновесие — тело вернётся!</div>
|
||
</div>
|
||
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🏗️</div><div class="li-title">Башенный кран</div><div class="li-desc">Тяжёлый противовес сзади — снижает ЦТ и не даёт упасть вперёд</div></div>
|
||
<div class="life-item"><div class="li-icon">🚗</div><div class="li-title">Гоночный автомобиль</div><div class="li-desc">Очень низкий кузов — центр тяжести у земли для максимальной устойчивости в поворотах</div></div>
|
||
<div class="life-item"><div class="li-icon">⛵</div><div class="li-title">Парусник</div><div class="li-desc">Тяжёлый киль снизу — устойчивость. Без киля парусник бы перевернулся</div></div>
|
||
<div class="life-item"><div class="li-icon">🤸</div><div class="li-title">Гимнаст</div><div class="li-desc">Стойка на руках — неустойчивое равновесие. Мышцы постоянно корректируют ЦТ</div></div>
|
||
<div class="life-item"><div class="li-icon">🪆</div><div class="li-title">Неваляшка</div><div class="li-desc">ЦТ очень низко — устойчивое равновесие. Сколько ни толкай — встанет</div></div>
|
||
<div class="life-item"><div class="li-icon">🚜</div><div class="li-title">Трактор</div><div class="li-desc">Широкие гусеницы и низкий ЦТ — не перевернётся на склоне</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-lightbulb"></i> Пизанская башня не падает — почему?</div>
|
||
<p>Башня накренена под углом ~4°. Казалось бы — должна упасть. Но центр тяжести башни всё ещё находится <b>внутри площади опоры</b> (фундамента). Как только ЦТ выйдет за её границу — башня упадёт.</p>
|
||
<p>Реставраторы укрепляли фундамент с более высокой стороны, чтобы чуть «выпрямить» башню и вернуть ЦТ подальше от края.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>ЦТ ниже опоры → устойчивое равновесие.</li>
|
||
<li>ЦТ выше опоры → неустойчивое.</li>
|
||
<li>ЦТ = ось → безразличное.</li>
|
||
<li>Тело устойчиво, если вертикаль через ЦТ проходит <b>внутри площади опоры</b>.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Почему гоночные автомобили делают с низким центром тяжести?</li>
|
||
<li>Назовите пример устойчивого, неустойчивого и безразличного равновесия из жизни.</li>
|
||
<li>При каком условии тело, стоящее на наклонной поверхности, не опрокидывается?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §29 — ЗАКОН АРХИМЕДА. ПЛАВАНИЕ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref29">
|
||
|
||
<div class="para-hero ph-29">
|
||
<div class="ph-label">§29 · Физика 9 кл</div>
|
||
<h2>Закон Архимеда. Плавание тел</h2>
|
||
<div class="ph-formula">$F_\text{выт} = \rho_\text{ж} g V_\text{погр}$</div>
|
||
<div class="ph-desc">На тело, погружённое в жидкость или газ, действует выталкивающая сила, равная весу вытесненной жидкости. Тело плавает, если его средняя плотность меньше плотности жидкости.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">🌊 [F_выт] = Н</span>
|
||
<span class="ph-tag">⬆️ плавает: ρ_тела < ρ_жидк</span>
|
||
<span class="ph-tag">⬇️ тонет: ρ_тела > ρ_жидк</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-water"></i> §29. Закон Архимеда. Плавание тел</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Закон Архимеда</h3>
|
||
<div class="main-f">$F_\text{выт} = \rho_\text{ж} g V_\text{погр}$</div>
|
||
<p>$\rho_\text{ж}$ — плотность жидкости, $V_\text{погр}$ — объём погружённой части тела. Направление — вертикально вверх.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Условие плавания</h3>
|
||
<div class="main-f">$F_\text{выт} = mg \Leftrightarrow \rho_\text{тела} \leq \rho_\text{жидк}$</div>
|
||
<p>Тело плавает, когда выталкивающая сила уравновешивает силу тяжести. При этом часть тела может быть над водой.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Доля погружённой части</h3>
|
||
<div class="main-f">$\dfrac{V_\text{погр}}{V_\text{тела}} = \dfrac{\rho_\text{тела}}{\rho_\text{жидк}}$</div>
|
||
<p>Лёд ($\rho = 900\,\text{кг/м}^3$) в воде ($\rho = 1000$) погружён на $900/1000 = 90\%$. Над водой торчит лишь 10%.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Тонет или плывёт?</h3>
|
||
<div class="main-f">$\rho_\text{т} < \rho_\text{ж}$ — плавает</div>
|
||
<div class="main-f">$\rho_\text{т} > \rho_\text{ж}$ — тонет</div>
|
||
<div class="main-f">$\rho_\text{т} = \rho_\text{ж}$ — нейтральный подъём</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Почему деревянный кубик плавает, а стальной тонет? Дерево легче воды ($\rho_\text{дерева} \approx 600\,\text{кг/м}^3 < 1000$). Стальной кубик тяжелее воды ($\rho_\text{ст} \approx 7800 > 1000$).</p>
|
||
<p>Но стальной <b>корабль</b> плавает! Потому что внутри много воздуха. <b>Средняя</b> плотность корабля (металл + воздух внутри) меньше воды.</p>
|
||
<p>Секрет Архимеда: не важно, из чего тело. Важно, <b>сколько воды оно вытесняет</b>. Выталкивающая сила = вес этой воды.</p>
|
||
</div>
|
||
|
||
<!-- Интерактив: Архимед -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-tint"></i> Интерактив: тело в жидкости</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">ρ тела, кг/м³:</span>
|
||
<input type="range" min="200" max="2000" value="700" id="sl29rho" oninput="upd29()">
|
||
<span class="slider-val" id="v29rho">700 кг/м³</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">V тела, дм³:</span>
|
||
<input type="range" min="1" max="20" value="5" id="sl29v" oninput="upd29()">
|
||
<span class="slider-val" id="v29v">5 дм³</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv29" style="height:200px"></canvas></div>
|
||
<div class="idiag-result" id="res29">F_выт = — Н | F_т = — Н</div>
|
||
</div>
|
||
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">🧊</div><div class="li-title">Айсберг</div><div class="li-desc">90% под водой, 10% видно. ρ льда = 900, ρ воды = 1000</div></div>
|
||
<div class="life-item"><div class="li-icon">🐟</div><div class="li-title">Рыбий пузырь</div><div class="li-desc">Рыба сжимает/расширяет пузырь, меняя свою среднюю плотность</div></div>
|
||
<div class="life-item"><div class="li-icon">🚢</div><div class="li-title">Корабль</div><div class="li-desc">Сталь + воздух. Средняя плотность меньше воды. Грузишь — погружается глубже</div></div>
|
||
<div class="life-item"><div class="li-icon">🎈</div><div class="li-title">Воздушный шар</div><div class="li-desc">Горячий воздух легче холодного — выталкивающая сила в воздухе!</div></div>
|
||
<div class="life-item"><div class="li-icon">🏊</div><div class="li-title">Мёртвое море</div><div class="li-desc">Солёность 30% — ρ = 1230 кг/м³. Человек всплывает сам</div></div>
|
||
<div class="life-item"><div class="li-icon">🔋</div><div class="li-title">Ареометр</div><div class="li-desc">Прибор для измерения плотности: плавает, по шкале читаешь ρ жидкости</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-lightbulb"></i> Как подводная лодка ныряет и всплывает?</div>
|
||
<p>У подводной лодки есть балластные цистерны. Чтобы нырнуть — заполняют водой (средняя плотность растёт, $\rho_\text{ср} > \rho_\text{воды}$, лодка тонет). Чтобы всплыть — продувают сжатым воздухом (выгоняют воду, $\rho_\text{ср} < \rho_\text{воды}$, лодка всплывает).</p>
|
||
<p>Это прямое применение закона Архимеда и условия плавания!</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$F_\text{выт} = \rho_\text{ж} g V_\text{погр}$ — зависит от плотности <b>жидкости</b> и объёма <b>погружённой части</b>.</li>
|
||
<li>Тело плавает при $\rho_\text{тела} \leq \rho_\text{жидкости}$.</li>
|
||
<li>Лёд в воде: 10% над водой — потому что $\rho_\text{льда}/\rho_\text{воды} = 0{,}9$.</li>
|
||
<li>$F_\text{выт}$ не зависит от формы тела и глубины погружения (только от $V_\text{погр}$).</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>От чего зависит архимедова сила? Как изменится $F_\text{выт}$, если тело перенести из воды в ртуть?</li>
|
||
<li>Почему стальной корабль плавает, а стальной гвоздь тонет?</li>
|
||
<li>Определите, потонет или всплывёт тело плотностью $1200\,\text{кг/м}^3$ в воде.</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §30 — ПЛАВАНИЕ СУДОВ. ВОЗДУХОПЛАВАНИЕ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref30">
|
||
|
||
<div class="para-hero ph-30">
|
||
<div class="ph-label">§30 · Физика 9 кл</div>
|
||
<h2>Плавание судов. Воздухоплавание</h2>
|
||
<div class="ph-formula">$\langle\rho\rangle = \dfrac{m_\text{судна}}{V_\text{судна}} < \rho_\text{воды}$</div>
|
||
<div class="ph-desc">Корабль плавает, потому что его средняя плотность (вместе с воздухом внутри) меньше воды. Воздушный шар летит, потому что вытесненный им воздух тяжелее шара с газом.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⚓ грузоподъёмность судна</span>
|
||
<span class="ph-tag">🎈 F_выт воздуха</span>
|
||
<span class="ph-tag">📏 осадка корабля</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-ship"></i> §30. Плавание судов. Воздухоплавание</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Условие плавания судна</h3>
|
||
<div class="main-f">$\langle\rho\rangle_\text{судна} = \dfrac{m_\text{т} + m_\text{груза}}{V_\text{корпуса}} < \rho_\text{воды}$</div>
|
||
<p>Средняя плотность = общая масса / полный объём корпуса. Пока $\langle\rho\rangle < 1000\,\text{кг/м}^3$ — судно плавает.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Грузоподъёмность судна</h3>
|
||
<div class="main-f">$m_\text{груз}^{max} = \rho_\text{ж} V_\text{корп} - m_\text{судна}$</div>
|
||
<p>Максимальный груз — когда весь объём корпуса под водой. Ватерлиния не должна превышать борт.</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Воздушный шар</h3>
|
||
<div class="main-f">$F_\text{подъём} = (\rho_\text{возд} - \rho_\text{газа})gV - mg_\text{обол}$</div>
|
||
<p>Шар поднимается, если подъёмная сила превышает вес оболочки и корзины. Горячий воздух ($\rho \approx 0{,}9\,\text{кг/м}^3$) легче холодного ($\rho = 1{,}29$).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Линия Плимсоля</h3>
|
||
<div class="main-f">метка на борту судна</div>
|
||
<p>Обязательная метка загрузки. Показывает максимально допустимую осадку в разных морях (солёная вода тяжелее пресной → корабль сидит выше).</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title"><i class="fas fa-user-graduate"></i> Как это понять?</div>
|
||
<p>Возьми пустую жестяную банку. Она плавает — металл + воздух внутри = маленькая средняя плотность. Теперь наполни её водой — банка тонет.</p>
|
||
<p>Корабль работает так же. Огромный стальной корпус — как банка, только очень большая. Внутри воздух, каюты, машины. <b>Средняя</b> плотность корабля с воздухом — меньше воды. Загружаешь груз — осадка увеличивается.</p>
|
||
<p>Воздушный шар — такой же принцип, только в воздухе. Лёгкий газ (водород, гелий, горячий воздух) вытесняет тяжёлый атмосферный воздух. Разница в весе и есть подъёмная сила.</p>
|
||
</div>
|
||
|
||
<!-- Интерактив: корабль с грузом -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-anchor"></i> Интерактив: корабль</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса судна, т:</span>
|
||
<input type="range" min="5" max="50" value="20" id="sl30ms" oninput="upd30()">
|
||
<span class="slider-val" id="v30ms">20 т</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Груз, т:</span>
|
||
<input type="range" min="0" max="30" value="5" id="sl30mg" oninput="upd30()">
|
||
<span class="slider-val" id="v30mg">5 т</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Объём корпуса, м³:</span>
|
||
<input type="range" min="10" max="100" value="40" id="sl30v" oninput="upd30()">
|
||
<span class="slider-val" id="v30v">40 м³</span>
|
||
</div>
|
||
<div class="cv-wrap"><canvas id="cv30" style="height:200px"></canvas></div>
|
||
<div class="idiag-result" id="res30">Осадка: — | ρ_ср = — кг/м³</div>
|
||
</div>
|
||
|
||
<div class="life-grid">
|
||
<div class="life-item"><div class="li-icon">⛴️</div><div class="li-title">Танкер</div><div class="li-desc">Гружёный — глубоко сидит. Пустой — высоко. Средняя плотность изменилась</div></div>
|
||
<div class="life-item"><div class="li-icon">🎈</div><div class="li-title">Монгольфьер</div><div class="li-desc">Первый воздушный шар (1783). Горячий воздух внутри — легче холодного снаружи</div></div>
|
||
<div class="life-item"><div class="li-icon">🛸</div><div class="li-title">Дирижабль</div><div class="li-desc">Гелий внутри — безопаснее водорода. Подъём = вытесненный воздух тяжелее гелия</div></div>
|
||
<div class="life-item"><div class="li-icon">🌊</div><div class="li-title">Осадка в морях</div><div class="li-desc">В солёном море (ρ=1025) судно сидит выше, чем в пресной воде (ρ=1000)</div></div>
|
||
<div class="life-item"><div class="li-icon">🏗️</div><div class="li-title">Подъём затонувших кораблей</div><div class="li-desc">Закачивают воздух в корпус — вытесняют воду, уменьшают среднюю плотность</div></div>
|
||
<div class="life-item"><div class="li-icon">🐙</div><div class="li-title">Кальмар</div><div class="li-desc">Nautilus (наутилус) — моллюск с камерой. Заполняет газом/жидкостью → регулирует плавучесть</div></div>
|
||
</div>
|
||
|
||
<div class="insight-box">
|
||
<div class="insight-title"><i class="fas fa-lightbulb"></i> Почему в солёной воде корабль «выше»?</div>
|
||
<p>Морская вода плотнее пресной ($\rho \approx 1025$ vs $1000\,\text{кг/м}^3$). Это значит, что для той же архимедовой силы нужен <b>меньший объём</b> погружённой части. Корабль «всплывает» немного выше при переходе из реки в море.</p>
|
||
<p>Именно поэтому на кораблях рисуют несколько линий Плимсоля: для Атлантики, для тропиков (горячая вода менее плотная), для пресных рек.</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-triangle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Судно плавает, если $\langle\rho\rangle_\text{судна} < \rho_\text{воды}$.</li>
|
||
<li>Загружая груз, увеличиваем $\langle\rho\rangle$ → судно глубже погружается.</li>
|
||
<li>Воздушный шар поднимается, если $(\rho_\text{возд} - \rho_\text{газа}) \cdot gV > mg_\text{оболочки}$.</li>
|
||
<li>В солёной воде судно сидит <b>выше</b>, чем в пресной.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<ol class="q-list">
|
||
<li>Почему стальной корабль плавает, хотя сталь тяжелее воды?</li>
|
||
<li>Как изменится осадка судна при переходе из моря в реку?</li>
|
||
<li>Какой газ легче заполняет воздушный шар: водород, гелий или горячий воздух? В чём их отличия?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §31 — ТЕОРИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref31">
|
||
|
||
<!-- Hero -->
|
||
<div class="para-hero ph-31">
|
||
<div class="ph-label">§31 · Физика 9 кл</div>
|
||
<h2>Импульс тела. Импульс системы тел</h2>
|
||
<div class="ph-formula">$\vec{p} = m\vec{v}$</div>
|
||
<div class="ph-desc">Импульс — это «количество движения»: учитывает и массу, и скорость сразу.<br>Изменить импульс может только внешняя сила, и только она.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">⚡ связь с 2-м законом Ньютона</span>
|
||
<span class="ph-tag">📐 [p] = кг·м/с</span>
|
||
<span class="ph-tag">↗️ векторная величина</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-bolt"></i> §31. Импульс тела. Импульс системы тел</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Импульс тела</h3>
|
||
<div class="main-f">$\vec{p} = m\vec{v}$</div>
|
||
<p><b>Векторная</b> величина. Направление совпадает с $\vec{v}$.</p>
|
||
<p>Единица: $[p] = \text{кг}{\cdot}\text{м/с}$</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Изменение импульса</h3>
|
||
<div class="main-f">$\Delta\vec{p} = \vec{F}\,\Delta t$</div>
|
||
<p>Изменение импульса тела равно <b>импульсу силы</b> $\vec{F}\,\Delta t$.</p>
|
||
<p>Также: $\dfrac{\Delta\vec{p}}{\Delta t} = \vec{F}$ — 2-й закон Ньютона.</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Импульс системы тел</h3>
|
||
<div class="main-f">$\vec{p}_{\text{сист}} = \vec{p}_1 + \vec{p}_2 + \ldots$</div>
|
||
<p><b>Внутренние силы</b> — взаимодействие тел внутри системы.<br>
|
||
<b>Внешние силы</b> — действующие на систему снаружи.</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Закон изменения импульса системы</h3>
|
||
<div class="main-f">$\Delta\vec{p}_{\text{сист}} = \vec{F}_{\text{внешн}}\,\Delta t$</div>
|
||
<p>Изменение импульса системы равно импульсу <b>результирующей внешних сил</b>.</p>
|
||
<p>Внутренние силы импульс системы <b>не изменяют</b>.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── СХЕМЫ §31 ── -->
|
||
<div class="idiag-2col">
|
||
<div class="idiag">
|
||
<h3>📌 Импульс — вектор вдоль скорости</h3>
|
||
<svg width="100%" viewBox="0 0 200 100" style="display:block;margin:0 auto">
|
||
<rect x="12" y="32" width="46" height="32" rx="8" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="2"/>
|
||
<text x="35" y="52" font-size="10" text-anchor="middle" fill="#1d4ed8" font-weight="700">m</text>
|
||
<line x1="58" y1="40" x2="100" y2="40" stroke="#0ea5e9" stroke-width="2.5"/>
|
||
<polygon points="100,40 89,35 89,45" fill="#0ea5e9"/>
|
||
<text x="79" y="33" font-size="9" fill="#0ea5e9" font-family="Inter" font-weight="700">v</text>
|
||
<line x1="58" y1="58" x2="138" y2="58" stroke="#1d4ed8" stroke-width="3.5"/>
|
||
<polygon points="138,58 125,53 125,63" fill="#1d4ed8"/>
|
||
<text x="97" y="73" font-size="9" fill="#1d4ed8" font-family="Inter" font-weight="700">p = mv</text>
|
||
<text x="148" y="37" font-size="8" fill="#0ea5e9" font-family="Inter">v</text>
|
||
<text x="148" y="60" font-size="8" fill="#1d4ed8" font-family="Inter">p</text>
|
||
<text x="148" y="48" font-size="10" fill="#64748b" font-family="Inter">∥</text>
|
||
<text x="10" y="95" font-size="7.5" fill="#64748b" font-family="Inter">p ∥ v · при большей m — p длиннее</text>
|
||
</svg>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3>💥 Удар о стену: почему |Δp| = m(v₁+v₂)</h3>
|
||
<svg width="100%" viewBox="0 0 200 115" style="display:block;margin:0 auto">
|
||
<rect x="104" y="5" width="12" height="105" rx="3" fill="#94a3b8"/>
|
||
<text x="110" y="4" font-size="7" text-anchor="middle" fill="#64748b" font-family="Inter">стена</text>
|
||
<circle cx="58" cy="55" r="18" fill="#dbeafe" stroke="#1d4ed8" stroke-width="2"/>
|
||
<text x="58" y="59" font-size="10" text-anchor="middle" fill="#1d4ed8" font-weight="700">m</text>
|
||
<line x1="76" y1="42" x2="100" y2="42" stroke="#1d4ed8" stroke-width="2.5"/>
|
||
<polygon points="100,42 90,37 90,47" fill="#1d4ed8"/>
|
||
<text x="86" y="36" font-size="9" fill="#1d4ed8" font-family="Inter" font-weight="700">p₁</text>
|
||
<line x1="100" y1="68" x2="76" y2="68" stroke="#10b981" stroke-width="2.5"/>
|
||
<polygon points="76,68 86,63 86,73" fill="#10b981"/>
|
||
<text x="86" y="82" font-size="9" fill="#10b981" font-family="Inter" font-weight="700">p₂</text>
|
||
<text x="5" y="40" font-size="7.5" fill="#1d4ed8" font-family="Inter">+mv₁ →</text>
|
||
<text x="5" y="72" font-size="7.5" fill="#10b981" font-family="Inter">← -mv₂</text>
|
||
<rect x="4" y="86" width="88" height="22" rx="5" fill="rgba(239,68,68,.08)" stroke="#ef4444" stroke-width="1"/>
|
||
<text x="48" y="97" font-size="7.5" text-anchor="middle" fill="#991b1b" font-family="Inter" font-weight="700">|Δp| = m(v₁+v₂)</text>
|
||
<text x="48" y="107" font-size="7" text-anchor="middle" fill="#64748b" font-family="Inter">знаки противоположны!</text>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: p = mv — меняй параметры</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса $m$:</span>
|
||
<input type="range" min="1" max="20" value="5" id="sl31m" oninput="upd31()">
|
||
<span class="slider-val" id="v31m">5 кг</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Скорость $v$:</span>
|
||
<input type="range" min="1" max="30" value="10" id="sl31v" oninput="upd31()">
|
||
<span class="slider-val" id="v31v">10 м/с</span>
|
||
</div>
|
||
<div class="idiag-result" id="res31">p = 5 × 10 = <b style="font-size:1.1em;color:var(--pri)">50</b> кг·м/с</div>
|
||
<svg width="100%" viewBox="0 0 380 38" style="display:block;margin-top:8px">
|
||
<rect x="2" y="9" width="376" height="20" rx="6" fill="rgba(29,78,216,.07)" stroke="var(--border)" stroke-width="1"/>
|
||
<rect x="2" y="9" id="bar31" width="32" height="20" rx="6" fill="var(--pri)"/>
|
||
<text x="8" y="23" font-size="10" fill="white" font-weight="700" id="barlbl31">50 кг·м/с</text>
|
||
<text x="4" y="36" font-size="8" fill="var(--muted)" font-family="Inter">0</text>
|
||
<text x="376" y="36" font-size="8" fill="var(--muted)" font-family="Inter" text-anchor="end">600 кг·м/с</text>
|
||
</svg>
|
||
<p style="font-size:.75rem;color:var(--muted);margin-top:6px">💡 Попробуй: грузовик m=20 кг, v=30 м/с vs велосипедист m=2 кг, v=5 м/с — у кого импульс больше?</p>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-circle"></i> Запомни!</div>
|
||
<ul>
|
||
<li><b>Импульс — вектор.</b> Нельзя просто складывать числа, если тела движутся в разные стороны — нужно учитывать знак проекции на ось.</li>
|
||
<li>$\Delta\vec{p} = \vec{F}\,\Delta t$ — это и есть 2-й закон Ньютона в другой форме записи.</li>
|
||
<li>Внутренние силы <b>не меняют</b> импульс системы — только внешние.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="mistakes-box">
|
||
<div class="mistakes-box-title"><i class="fas fa-triangle-exclamation"></i> Частые ошибки</div>
|
||
<ul>
|
||
<li>Путают импульс тела $p = mv$ с кинетической энергией $E_k = mv^2/2$ — это разные вещи.</li>
|
||
<li>При ударе мяча о стену берут $|\Delta p| = mv_2 - mv_1$ — забывают, что скорости противоположны, надо $m(v_2 + v_1)$.</li>
|
||
<li>Считают, что большая сила = большое изменение импульса. На самом деле важно произведение $F \cdot \Delta t$.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title">🧑🎓 Как я это понял</div>
|
||
<p><b>Зачем импульс, если есть скорость?</b><br>
|
||
Грузовик едет 5 км/ч, велосипедист — тоже 5 км/ч. Но остановить грузовик в сто раз сложнее. Дело не только в скорости — важна ещё и масса. Импульс $p = mv$ учитывает сразу и то, и другое.</p>
|
||
<p><b>Почему машины «мнутся» и почему это хорошо?</b><br>
|
||
Когда машина бьётся, скорость меняется за какое-то время: $\Delta p = F \cdot \Delta t$. Суммарное изменение импульса фиксировано. Но если кузов мнётся — время удара $\Delta t$ увеличивается → сила $F$ уменьшается. Именно поэтому делают «зоны деформации» и подушки безопасности: не жалеют машину, зато спасают водителя.</p>
|
||
<p><b>Почему каратист бьёт резко, а не медленно?</b><br>
|
||
При резком ударе время контакта $\Delta t$ мизерное. Из $\Delta p = F \cdot \Delta t$ следует $F = \Delta p / \Delta t$. Чем меньше $\Delta t$ — тем больше $F$. Одно и то же изменение импульса за 0,001 с даёт силу, которая за 1 с выглядела бы смешно.</p>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-calculator"></i> Пример решения задачи</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Мяч падает на пол и отскакивает</h3>
|
||
<div class="cond">
|
||
Мяч массой $m = 0{,}10\,\text{кг}$ падает с высоты $h = 0{,}20\,\text{м}$ на горизонтальный пол и отскакивает (упруго). Время удара $\Delta t = 5{,}0 \cdot 10^{-3}\,\text{с}$, $g = 10\,\text{м/с}^2$. Найдите среднюю силу удара.
|
||
</div>
|
||
<table class="given-table">
|
||
<tr><td>Дано</td><td>$m = 0{,}10\,\text{кг};\quad h = 0{,}20\,\text{м}$</td></tr>
|
||
<tr><td></td><td>$\Delta t = 5{,}0\cdot10^{-3}\,\text{с};\quad g = 10\,\text{м/с}^2$</td></tr>
|
||
<tr><td>Найти</td><td>$F_{\text{пол}} — ?$</td></tr>
|
||
</table>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span>Ось $Oy$ — вверх. Находим скорость мяча перед ударом:<br>\[v_1 = \sqrt{2gh} = \sqrt{2\cdot10\cdot0{,}20} = 2\,\text{м/с}\quad\text{(направлена вниз, проекция } {-}2\text{ м/с)}\]</span></li>
|
||
<li><span class="step-n">2</span><span>При упругом отскоке скорость сохраняется по модулю: $v_2 = 2\,\text{м/с}$ (вверх, проекция $+2$ м/с).<br>Изменение импульса (по модулю):\[|\Delta p| = m\cdot|v_2 - (-v_1)| = m(v_2+v_1) = 0{,}10\cdot4 = 0{,}40\,\text{кг}{\cdot}\text{м/с}\]</span></li>
|
||
<li><span class="step-n">3</span><span>По 2-му закону Ньютона: $\vec{F}_{\text{рез}}\,\Delta t = \Delta\vec{p}$, откуда средняя сила пола на мяч:\[F_{\text{пол}} = \frac{|\Delta p|}{\Delta t} + mg = \frac{0{,}40}{5{,}0\cdot10^{-3}} + 1 \approx 81\,\text{Н}\]</span></li>
|
||
<li><span class="step-n">4</span><span>По 3-му закону Ньютона сила мяча на пол равна $81\,\text{Н}$ — это в <b>81 раз</b> больше веса мяча!</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-question-circle"></i> Контрольные вопросы</div>
|
||
<ol class="q-list">
|
||
<li>Что такое импульс тела? Как он направлен? В каких единицах измеряется?</li>
|
||
<li>Как можно изменить импульс тела? Почему это изменение направлено именно так?</li>
|
||
<li>Что называют механической системой? Что такое импульс системы тел?</li>
|
||
<li>Какие силы называют внутренними? Какие — внешними?</li>
|
||
<li>Какие силы могут изменить импульс механической системы? Почему?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §32 — ТЕОРИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref32">
|
||
|
||
<!-- Hero -->
|
||
<div class="para-hero ph-32">
|
||
<div class="ph-label">§32 · Физика 9 кл</div>
|
||
<h2>Закон сохранения импульса. Реактивное движение</h2>
|
||
<div class="ph-formula">$\vec{p}_{\text{сист}} = \text{const}$</div>
|
||
<div class="ph-desc">Если внешние силы на систему не действуют — суммарный импульс не меняется.<br>Это объясняет и удары, и ракеты, и прыжки с лодки.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">🚀 реактивное движение</span>
|
||
<span class="ph-tag">💥 удар тел</span>
|
||
<span class="ph-tag">🔒 замкнутая система</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-atom"></i> §32. Закон сохранения импульса. Реактивное движение</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Закон сохранения импульса</h3>
|
||
<div class="main-f">$\vec{p}_{\text{сист}} = \text{const}$</div>
|
||
<p>Импульс системы сохраняется, если <b>результирующая внешних сил равна нулю</b>.</p>
|
||
<p>Замкнутая система: $\vec{F}_{\text{внешн}} = 0$.</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Применимость ЗСИ</h3>
|
||
<div class="main-f" style="font-size:.88rem">$\vec{F}_{\text{внешн}} = 0 \;\Rightarrow\; \vec{p}=\text{const}$</div>
|
||
<p>ЗСИ применим к незамкнутым системам, если:</p>
|
||
<ul>
|
||
<li>внешние силы малы по сравнению с внутренними;</li>
|
||
<li>проекция внешних сил на направление движения равна нулю.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Абсолютно неупругий удар</h3>
|
||
<div class="main-f">$m_1\vec{v}_1 + m_2\vec{v}_2 = (m_1{+}m_2)\vec{v}$</div>
|
||
<p>После удара тела движутся вместе с одинаковой скоростью $\vec{v}$.</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Реактивное движение</h3>
|
||
<div class="main-f">$m_1\vec{v}_1 + m_2\vec{v}_2 = 0$</div>
|
||
<p>Если система покоилась ($p_0 = 0$), после отделения части тело и отделившаяся часть движутся в <b>противоположных направлениях</b>.</p>
|
||
<p>Пушка на платформе, ракета, прыжок с лодки.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Схема: до и после удара -->
|
||
<div class="fcard" style="margin-bottom:16px">
|
||
<h3>Схема абсолютно неупругого удара (проекция на ось $Ox$)</h3>
|
||
<svg width="100%" viewBox="0 0 480 90" style="max-width:480px;display:block;margin:8px auto">
|
||
<!-- До удара -->
|
||
<text x="4" y="18" font-size="12" fill="#64748b" font-family="Inter">До удара:</text>
|
||
<!-- тело 1 -->
|
||
<rect x="10" y="28" width="60" height="30" rx="6" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="40" y="48" font-size="11" text-anchor="middle" fill="#1d4ed8" font-weight="700">m₁</text>
|
||
<polygon points="75,43 90,38 90,48" fill="#1d4ed8"/>
|
||
<text x="100" y="48" font-size="11" fill="#1d4ed8" font-family="JetBrains Mono">v₁→</text>
|
||
<!-- тело 2 -->
|
||
<rect x="160" y="28" width="60" height="30" rx="6" fill="#dbeafe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="190" y="48" font-size="11" text-anchor="middle" fill="#1d4ed8" font-weight="700">m₂</text>
|
||
<polygon points="225,43 240,38 240,48" fill="#64748b"/>
|
||
<text x="250" y="48" font-size="11" fill="#64748b" font-family="JetBrains Mono">v₂</text>
|
||
<!-- После удара -->
|
||
<text x="310" y="18" font-size="12" fill="#64748b" font-family="Inter">После удара:</text>
|
||
<rect x="310" y="28" width="100" height="30" rx="6" fill="#a5f3fc" stroke="#0891b2" stroke-width="1.5"/>
|
||
<text x="360" y="48" font-size="11" text-anchor="middle" fill="#0891b2" font-weight="700">m₁+m₂</text>
|
||
<polygon points="415,43 430,38 430,48" fill="#0891b2"/>
|
||
<text x="440" y="48" font-size="11" fill="#0891b2" font-family="JetBrains Mono">v</text>
|
||
</svg>
|
||
<p style="font-size:.82rem;color:var(--muted);text-align:center">Импульс до удара = Импульс после: $m_1 v_1 + m_2 v_2 = (m_1{+}m_2)v$</p>
|
||
</div>
|
||
|
||
<!-- ── СХЕМЫ §32 ── -->
|
||
<div class="idiag-2col">
|
||
<div class="idiag">
|
||
<h3>🚀 Ракета: реактивное движение в вакууме</h3>
|
||
<svg width="100%" viewBox="0 0 200 110" style="display:block;margin:0 auto">
|
||
<rect width="200" height="110" fill="#0f172a" rx="8"/>
|
||
<circle cx="18" cy="14" r="1" fill="white" opacity=".6"/>
|
||
<circle cx="52" cy="7" r="1.5" fill="white" opacity=".5"/>
|
||
<circle cx="88" cy="20" r="1" fill="white" opacity=".4"/>
|
||
<circle cx="138" cy="9" r="1" fill="white" opacity=".7"/>
|
||
<circle cx="172" cy="22" r="1" fill="white" opacity=".5"/>
|
||
<circle cx="28" cy="42" r="1" fill="white" opacity=".3"/>
|
||
<circle cx="162" cy="54" r="1" fill="white" opacity=".4"/>
|
||
<rect x="88" y="38" width="52" height="26" rx="5" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<polygon points="140,38 140,64 163,51" fill="#93c5fd"/>
|
||
<polygon points="88,64 76,78 88,70" fill="#93c5fd"/>
|
||
<polygon points="88,38 76,24 88,44" fill="#93c5fd"/>
|
||
<text x="114" y="55" font-size="9" text-anchor="middle" fill="#1e3a8a" font-weight="700">M</text>
|
||
<rect x="46" y="44" width="42" height="14" rx="5" fill="rgba(251,146,60,.4)" stroke="#f97316" stroke-width="1.2"/>
|
||
<text x="67" y="55" font-size="8.5" text-anchor="middle" fill="#ea580c" font-weight="700">m, u</text>
|
||
<line x1="163" y1="51" x2="188" y2="51" stroke="#60a5fa" stroke-width="2.5"/>
|
||
<polygon points="188,51 178,46 178,56" fill="#60a5fa"/>
|
||
<text x="168" y="44" font-size="8" fill="#93c5fd" font-family="Inter">MV→</text>
|
||
<line x1="46" y1="78" x2="20" y2="78" stroke="#fb923c" stroke-width="2.5"/>
|
||
<polygon points="20,78 30,73 30,83" fill="#fb923c"/>
|
||
<text x="24" y="92" font-size="8" fill="#fb923c" font-family="Inter">←mu</text>
|
||
<text x="100" y="102" font-size="7.5" text-anchor="middle" fill="#94a3b8" font-family="Inter">MV + mu = 0 · MV = mu</text>
|
||
</svg>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3>🧊 Лёд: суммарный импульс = 0</h3>
|
||
<svg width="100%" viewBox="0 0 200 115" style="display:block;margin:0 auto">
|
||
<rect x="0" y="88" width="200" height="20" fill="#bae6fd" opacity=".3" rx="2"/>
|
||
<text x="100" y="104" font-size="7.5" text-anchor="middle" fill="#0284c7" font-family="Inter">гладкий лёд (Fтрен ≈ 0)</text>
|
||
<text x="50" y="14" font-size="8" text-anchor="middle" fill="#64748b" font-family="Inter">ДО толчка</text>
|
||
<circle cx="35" cy="60" r="15" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="35" y="64" font-size="9" text-anchor="middle" fill="#1d4ed8" font-weight="700">m₁</text>
|
||
<circle cx="65" cy="60" r="15" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="65" y="64" font-size="9" text-anchor="middle" fill="#1d4ed8" font-weight="700">m₂</text>
|
||
<text x="50" y="84" font-size="8" text-anchor="middle" fill="#64748b" font-family="Inter">p = 0</text>
|
||
<line x1="88" y1="60" x2="108" y2="60" stroke="#94a3b8" stroke-width="1.5" stroke-dasharray="3,2"/>
|
||
<polygon points="108,60 99,55 99,65" fill="#94a3b8"/>
|
||
<text x="96" y="52" font-size="7" fill="#94a3b8" font-family="Inter">толчок</text>
|
||
<text x="155" y="14" font-size="8" text-anchor="middle" fill="#64748b" font-family="Inter">ПОСЛЕ толчка</text>
|
||
<circle cx="125" cy="60" r="14" fill="#dbeafe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="125" y="64" font-size="8.5" text-anchor="middle" fill="#1d4ed8" font-weight="700">m₁</text>
|
||
<line x1="111" y1="52" x2="97" y2="52" stroke="#1d4ed8" stroke-width="2"/>
|
||
<polygon points="97,52 107,47 107,57" fill="#1d4ed8"/>
|
||
<text x="99" y="44" font-size="7.5" fill="#1d4ed8" font-family="Inter">p₁←</text>
|
||
<circle cx="180" cy="60" r="14" fill="#a5f3fc" stroke="#0891b2" stroke-width="1.5"/>
|
||
<text x="180" y="64" font-size="8.5" text-anchor="middle" fill="#0891b2" font-weight="700">m₂</text>
|
||
<line x1="194" y1="52" x2="200" y2="52" stroke="#0891b2" stroke-width="2"/>
|
||
<polygon points="200,52 191,47 191,57" fill="#0891b2"/>
|
||
<text x="191" y="44" font-size="7.5" fill="#0891b2" font-family="Inter">→p₂</text>
|
||
<text x="155" y="84" font-size="8" text-anchor="middle" fill="#065f46" font-family="Inter" font-weight="700">p₁+p₂ = 0 ✓</text>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-circle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>ЗСИ работает только если <b>результирующая внешних сил = 0</b>. Трение, сила тяжести, реакция опоры — это всё внешние силы!</li>
|
||
<li>При ударе внутренние силы огромны (тысячи ньютонов), а внешние малы → ЗСИ применим даже для незамкнутой системы.</li>
|
||
<li>Ось выбирай сам. Всегда задавай положительное направление <b>до</b> составления уравнения.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="mistakes-box">
|
||
<div class="mistakes-box-title"><i class="fas fa-triangle-exclamation"></i> Частые ошибки</div>
|
||
<ul>
|
||
<li>Забывают знак: если вагоны едут <b>навстречу</b>, один из $v$ — отрицательный по выбранной оси.</li>
|
||
<li>Путают «реактивное движение» с «отталкиванием от среды» — ракета летит в вакууме без воздуха.</li>
|
||
<li>При отдаче пушки берут $v_{\text{пушки}} = v_{\text{снаряда}}$ — забывают, что массы разные: $m_1 v_1 = m_2 v_2$.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title">🧑🎓 Как я это понял</div>
|
||
<p><b>Лёд и друг</b><br>
|
||
Встань на лёд (трение почти нулевое) и толкни друга. Ты сам покатишься назад! Ты дал другу импульс вперёд — ты получил равный импульс назад. До толчка система покоилась ($p = 0$). После — суммарный импульс всё равно равен нулю. Ничего не пропало.</p>
|
||
<p><b>Как работает ракета в космосе?</b><br>
|
||
В космосе не на что опереться. Ракета выбрасывает газы назад — газы получают импульс назад. По ЗСИ ракета получает равный импульс вперёд. Никакого «отталкивания от воздуха» — чисто закон сохранения импульса.</p>
|
||
<p><b>Внутренние силы — «кукловод без рук»</b><br>
|
||
Сидишь в лодке и толкаешь борт изнутри. Лодка не поплывёт — ты часть той же системы. Только внешняя сила (весло, которое упирается в воду) может изменить суммарный импульс. Внутренние силы переносят импульс между частями системы, но общую сумму не меняют.</p>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-calculator"></i> Пример решения задачи</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Два вагона движутся навстречу и сцепляются</h3>
|
||
<div class="cond">
|
||
Вагон массой $m_1 = 10\,\text{т}$ движется со скоростью $v_1 = 0{,}1\,\text{м/с}$. Навстречу ему движется вагон массой $m_2 = 20\,\text{т}$ со скоростью $v_2 = 0{,}2\,\text{м/с}$. После сцепки определите скорость вагонов.
|
||
</div>
|
||
<table class="given-table">
|
||
<tr><td>Дано</td><td>$m_1 = 10^4\,\text{кг};\; v_1 = 0{,}1\,\text{м/с}$</td></tr>
|
||
<tr><td></td><td>$m_2 = 2{\cdot}10^4\,\text{кг};\; v_2 = 0{,}2\,\text{м/с}$</td></tr>
|
||
<tr><td>Найти</td><td>$v — ?$</td></tr>
|
||
</table>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span><b>Ось $Ox$:</b> в направлении движения 1-го вагона. Тогда $v_1 = +0{,}1$ м/с, а $v_2 = -0{,}2$ м/с (навстречу).</span></li>
|
||
<li><span class="step-n">2</span><span><b>ЗСИ</b> (силы трения малы по сравнению с силой удара):\[m_1 v_1 + m_2 v_2 = (m_1+m_2)\,v\]</span></li>
|
||
<li><span class="step-n">3</span><span>Подставляем:\[v = \frac{m_1 v_1 + m_2 v_2}{m_1+m_2} = \frac{10^4\cdot(+0{,}1) + 2\cdot10^4\cdot(-0{,}2)}{3\cdot10^4} = \frac{1000 - 4000}{30000} = -0{,}1\,\text{м/с}\]</span></li>
|
||
<li><span class="step-n">4</span><span>Знак «$-$» — вагоны едут в сторону <b>отрицательного направления оси</b>, т.е. в сторону 2-го вагона.<br><b>Ответ:</b> $v = 0{,}1\,\text{м/с}$ в сторону второго вагона.</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-question-circle"></i> Контрольные вопросы</div>
|
||
<ol class="q-list">
|
||
<li>Что происходит с импульсом системы, если внешние силы на неё не действуют?</li>
|
||
<li>В каких случаях закон сохранения импульса применим к незамкнутой системе?</li>
|
||
<li>Что такое реактивная сила? Приведите примеры.</li>
|
||
<li>Почему скорость ракеты увеличивается по мере её полёта?</li>
|
||
<li>Почему для запуска спутников применяют многоступенчатые ракеты?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §33 — ТЕОРИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref33">
|
||
|
||
<!-- Hero -->
|
||
<div class="para-hero ph-33">
|
||
<div class="ph-label">§33 · Физика 9 кл</div>
|
||
<h2>Механическая работа. Мощность</h2>
|
||
<div class="ph-formula">$A = F\,\Delta r\cos\alpha$</div>
|
||
<div class="ph-desc">Работа — это результат действия силы вдоль перемещения.<br>Мощность — это насколько быстро совершается работа.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📐 [A] = Дж = Н·м</span>
|
||
<span class="ph-tag">⚡ [P] = Вт = Дж/с</span>
|
||
<span class="ph-tag">📐 cosα — ключ к знаку</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-bolt"></i> §33. Механическая работа. Мощность</div>
|
||
|
||
<!-- Главная формула -->
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Механическая работа</h3>
|
||
<div class="main-f">$A = F\,\Delta r\cos\alpha$</div>
|
||
<p>$F$ — модуль силы, $\Delta r$ — модуль перемещения, $\alpha$ — угол между $\vec{F}$ и $\Delta\vec{r}$.</p>
|
||
<p style="margin-top:5px">$[A] = \text{Дж} = \text{Н}{\cdot}\text{м}$</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Знак работы</h3>
|
||
<div style="font-size:.82rem;line-height:2;margin-top:4px">
|
||
<div style="color:#065f46;font-weight:700">α < 90° → cos α > 0 → <span style="background:#d1fae5;border-radius:4px;padding:1px 6px">A > 0</span> положительная</div>
|
||
<div style="color:#92400e;font-weight:700">α = 90° → cos α = 0 → <span style="background:#fef3c7;border-radius:4px;padding:1px 6px">A = 0</span> равна нулю</div>
|
||
<div style="color:#991b1b;font-weight:700">α > 90° → cos α < 0 → <span style="background:#fee2e2;border-radius:4px;padding:1px 6px">A < 0</span> отрицательная</div>
|
||
</div>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Работа при подъёме тела</h3>
|
||
<div class="main-f">$A = mgh$</div>
|
||
<p>Работа силы тяжести при подъёме тела массой $m$ на высоту $h$ (сила и перемещение сонаправлены).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Работа по деформации пружины</h3>
|
||
<div class="main-f">$A = \dfrac{kx^2}{2}$</div>
|
||
<p>Работа внешней силы при растяжении или сжатии пружины жёсткостью $k$ на $x$.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Мощность -->
|
||
<div class="formula-grid" style="margin-bottom:16px">
|
||
<div class="fcard highlight">
|
||
<h3>Мощность</h3>
|
||
<div class="main-f">$P = \dfrac{A}{\Delta t}$</div>
|
||
<p>Мощность — быстрота совершения работы.</p>
|
||
<p>$[P] = \text{Вт} = \dfrac{\text{Дж}}{\text{с}}$; 1 кВт = 10³ Вт; 1 МВт = 10⁶ Вт</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Мощность через скорость</h3>
|
||
<div class="main-f">$P = Fv\cos\alpha$</div>
|
||
<p>Из $A = F\Delta r\cos\alpha$ и $P = A/\Delta t$, так как $\Delta r/\Delta t = v$.</p>
|
||
<p style="margin-top:6px">Если сила вдоль движения: $P = Fv$</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Важные частные случаи -->
|
||
<div class="def-box">
|
||
<b>Силы, перпендикулярные перемещению, работы не совершают</b> (α = 90°, cos 90° = 0).<br>
|
||
Примеры: сила реакции опоры при горизонтальном движении, центростремительная сила при движении по окружности.
|
||
</div>
|
||
|
||
<!-- ── СХЕМЫ §33 ── -->
|
||
<div class="idiag-2col">
|
||
<div class="idiag">
|
||
<h3>🛷 Санки: только Fcosα совершает работу</h3>
|
||
<svg width="100%" viewBox="0 0 210 128" style="display:block;margin:0 auto">
|
||
<line x1="5" y1="100" x2="205" y2="100" stroke="#94a3b8" stroke-width="2"/>
|
||
<line x1="15" y1="100" x2="5" y2="112" stroke="#94a3b8" stroke-width="1"/>
|
||
<line x1="35" y1="100" x2="25" y2="112" stroke="#94a3b8" stroke-width="1"/>
|
||
<line x1="55" y1="100" x2="45" y2="112" stroke="#94a3b8" stroke-width="1"/>
|
||
<line x1="75" y1="100" x2="65" y2="112" stroke="#94a3b8" stroke-width="1"/>
|
||
<line x1="95" y1="100" x2="85" y2="112" stroke="#94a3b8" stroke-width="1"/>
|
||
<line x1="115" y1="100" x2="105" y2="112" stroke="#94a3b8" stroke-width="1"/>
|
||
<line x1="135" y1="100" x2="125" y2="112" stroke="#94a3b8" stroke-width="1"/>
|
||
<rect x="55" y="72" width="54" height="28" rx="5" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="82" y="90" font-size="10" text-anchor="middle" fill="#1d4ed8" font-weight="700">m</text>
|
||
<line x1="109" y1="78" x2="152" y2="47" stroke="#1d4ed8" stroke-width="2.5"/>
|
||
<polygon points="152,47 138,51 143,63" fill="#1d4ed8"/>
|
||
<text x="158" y="44" font-size="9" fill="#1d4ed8" font-family="Inter" font-weight="700">F</text>
|
||
<line x1="109" y1="87" x2="152" y2="87" stroke="#10b981" stroke-width="2.5"/>
|
||
<polygon points="152,87 142,82 142,92" fill="#10b981"/>
|
||
<text x="123" y="98" font-size="8" fill="#10b981" font-family="Inter" font-weight="700">F·cosα ✓</text>
|
||
<line x1="152" y1="47" x2="152" y2="87" stroke="#94a3b8" stroke-width="1.5" stroke-dasharray="4,2"/>
|
||
<polygon points="152,87 147,76 157,76" fill="#94a3b8"/>
|
||
<text x="156" y="70" font-size="7.5" fill="#94a3b8" font-family="Inter">F·sinα ✗</text>
|
||
<path d="M 122 78 A 14 14 0 0 1 130 69" stroke="#64748b" fill="none" stroke-width="1.2"/>
|
||
<text x="131" y="70" font-size="8" fill="#64748b" font-family="Inter">α</text>
|
||
<text x="5" y="12" font-size="7.5" fill="#10b981" font-family="Inter" font-weight="700">F·cosα → вдоль Δr → A > 0</text>
|
||
<text x="5" y="22" font-size="7.5" fill="#94a3b8" font-family="Inter">F·sinα → ⊥ Δr → A = 0</text>
|
||
</svg>
|
||
</div>
|
||
<div class="idiag">
|
||
<h3>🔩 Пружина: работа = площадь треугольника под F-x</h3>
|
||
<svg width="100%" viewBox="0 0 200 130" style="display:block;margin:0 auto">
|
||
<line x1="28" y1="108" x2="183" y2="108" stroke="var(--muted)" stroke-width="1.5"/>
|
||
<line x1="28" y1="108" x2="28" y2="15" stroke="var(--muted)" stroke-width="1.5"/>
|
||
<polygon points="28,15 24,27 32,27" fill="var(--muted)"/>
|
||
<polygon points="183,108 171,104 171,112" fill="var(--muted)"/>
|
||
<text x="187" y="112" font-size="9" fill="var(--muted)" font-family="Inter">x</text>
|
||
<text x="20" y="13" font-size="9" fill="var(--muted)" font-family="Inter">F</text>
|
||
<line x1="24" y1="34" x2="32" y2="34" stroke="var(--muted)" stroke-width="1"/>
|
||
<text x="2" y="37" font-size="8" fill="#1d4ed8" font-family="Inter">kx</text>
|
||
<line x1="110" y1="104" x2="110" y2="112" stroke="var(--muted)" stroke-width="1"/>
|
||
<text x="106" y="122" font-size="8" fill="#1d4ed8" font-family="Inter">x</text>
|
||
<line x1="28" y1="108" x2="135" y2="28" stroke="#1d4ed8" stroke-width="2.5"/>
|
||
<line x1="28" y1="34" x2="110" y2="34" stroke="#1d4ed8" stroke-width="1" stroke-dasharray="3,2"/>
|
||
<line x1="110" y1="34" x2="110" y2="108" stroke="#1d4ed8" stroke-width="1" stroke-dasharray="3,2"/>
|
||
<polygon points="28,108 110,108 110,34" fill="rgba(29,78,216,.14)" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="55" y="88" font-size="8.5" fill="#1d4ed8" font-family="Inter" font-weight="700">A = kx²/2</text>
|
||
<text x="52" y="100" font-size="7.5" fill="#64748b" font-family="Inter">(площадь ▲)</text>
|
||
<text x="128" y="34" font-size="8.5" fill="#1d4ed8" font-family="Inter" font-weight="700">F=kx</text>
|
||
<text x="28" y="15" font-size="7.5" fill="#64748b" font-family="Inter">F растёт → ср. значение = kx/2</text>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Цепочка вывода P = Fv -->
|
||
<div class="fchain">
|
||
<span class="fchain-note">Откуда $P = Fv$:</span>
|
||
<span class="fchain-step">$A = F\Delta r\cos\alpha$</span>
|
||
<span class="fchain-arrow">÷ Δt</span>
|
||
<span class="fchain-step">$P = F\dfrac{\Delta r}{\Delta t}\cos\alpha$</span>
|
||
<span class="fchain-arrow">$\Delta r/\Delta t = v$</span>
|
||
<span class="fchain-step">$P = Fv\cos\alpha$</span>
|
||
<span class="fchain-arrow">при α=0°</span>
|
||
<span class="fchain-step">$P = Fv$ ✓</span>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-circle"></i> Запомни!</div>
|
||
<ul>
|
||
<li><b>Угол α</b> — это угол между вектором силы $\vec{F}$ и вектором перемещения $\Delta\vec{r}$, а не с горизонтом или чем-то ещё.</li>
|
||
<li>Если тело движется <b>горизонтально</b>, а сила направлена <b>вертикально</b> — работа равна нулю.</li>
|
||
<li>Сила тяжести совершает <b>положительную</b> работу при спуске и <b>отрицательную</b> при подъёме.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="mistakes-box">
|
||
<div class="mistakes-box-title"><i class="fas fa-triangle-exclamation"></i> Частые ошибки</div>
|
||
<ul>
|
||
<li>Берут угол между верёвкой и горизонтом вместо угла между $\vec{F}$ и $\Delta\vec{r}$ — результат неверный.</li>
|
||
<li>Забывают $A = kx^2/2$ — это не $A = kx$, потому что сила пружины сама растёт с деформацией.</li>
|
||
<li>Путают мощность двигателя с силой тяги: большая мощность ≠ большая сила (при высокой скорости сила маленькая и наоборот).</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title">🧑🎓 Как я это понял</div>
|
||
<p><b>Нести сумку — это не работа (серьёзно)</b><br>
|
||
Когда несёшь сумку по горизонтали, ты держишь её рукой вверх (сила направлена вертикально), а сумка при этом едет горизонтально. Угол между силой и перемещением = 90°, cos 90° = 0, значит $A = 0$. Мышцы устают — это да. Но с точки зрения физики работа равна нулю. Обидно.</p>
|
||
<p><b>Угол α — это угол между «куда тянешь» и «куда едет»</b><br>
|
||
Тянешь санки верёвкой под углом 30° к земле: часть силы тянет вперёд (делает работу), часть — поднимает санки вверх (работы нет). Только та часть силы, которая направлена вдоль движения, и совершает работу — это и есть $F \cos\alpha$.</p>
|
||
<p><b>Мощность — это «кто быстрее сделает ту же работу»</b><br>
|
||
Подняться на 5-й этаж пешком за 2 минуты или за 10 — работа одинакова ($mgh$). Но кто пробежал за 2 минуты — его мощность в 5 раз больше. Именно поэтому двигатели характеризуют мощностью: не «сколько сделает», а «как быстро».</p>
|
||
<p><b>Зачем формула $P = Fv$?</b><br>
|
||
Если знаешь скорость машины и силу тяги — мощность считается мгновенно. Гоночная машина едет 60 м/с с тягой 3000 Н → мощность = 180 000 Вт = 180 кВт. Никакого времени знать не нужно.</p>
|
||
</div>
|
||
|
||
<!-- Схема угла -->
|
||
<div class="fcard" style="margin-bottom:16px">
|
||
<h3>Схема: работа при разных углах</h3>
|
||
<svg width="100%" viewBox="0 0 480 100" style="max-width:480px;display:block;margin:6px auto">
|
||
<!-- Случай 1: α = 0 -->
|
||
<rect x="10" y="40" width="70" height="25" rx="5" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<polygon points="80,52 100,47 100,57" fill="#065f46"/>
|
||
<text x="110" y="48" font-size="10" fill="#064e3b" font-family="Inter" font-weight="700">F, Δr</text>
|
||
<text x="10" y="82" font-size="10" fill="#065f46" font-family="Inter">α=0°, A=FΔr > 0</text>
|
||
<!-- Случай 2: α = 90° -->
|
||
<rect x="170" y="40" width="70" height="25" rx="5" fill="#fef3c7" stroke="#f59e0b" stroke-width="1.5"/>
|
||
<polygon points="240,52 260,47 260,57" fill="#92400e"/>
|
||
<polygon points="205,40 200,20 210,20" fill="#92400e"/>
|
||
<text x="165" y="82" font-size="10" fill="#92400e" font-family="Inter">α=90°, A=0</text>
|
||
<!-- Случай 3: α > 90° -->
|
||
<rect x="330" y="40" width="70" height="25" rx="5" fill="#fee2e2" stroke="#ef4444" stroke-width="1.5"/>
|
||
<polygon points="330,52 310,47 310,57" fill="#991b1b"/>
|
||
<polygon points="400,52 420,47 420,57" fill="#64748b"/>
|
||
<text x="305" y="82" font-size="10" fill="#991b1b" font-family="Inter">α>90°, A<0 (торм.)</text>
|
||
</svg>
|
||
</div>
|
||
|
||
<!-- Интерактивный угол α -->
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: как угол α влияет на работу</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Угол α:</span>
|
||
<input type="range" min="0" max="180" value="45" id="sl33a" oninput="upd33()">
|
||
<span class="slider-val" id="v33a">45°</span>
|
||
</div>
|
||
<div style="display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap;margin-top:10px">
|
||
<svg width="200" height="110" id="svg33" style="flex-shrink:0;border:1.5px solid var(--border);border-radius:12px;background:rgba(29,78,216,.03)">
|
||
<rect x="60" y="60" width="40" height="30" rx="6" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text x="80" y="79" font-size="9" text-anchor="middle" fill="#1d4ed8" font-weight="700">m</text>
|
||
<line x1="100" y1="75" x2="178" y2="75" stroke="#94a3b8" stroke-width="2"/>
|
||
<polygon points="178,75 167,70 167,80" fill="#94a3b8"/>
|
||
<text x="135" y="90" font-size="8" fill="#64748b" font-family="Inter">Δr</text>
|
||
<line id="fline33" x1="80" y1="75" x2="108" y2="47" stroke="#10b981" stroke-width="3"/>
|
||
<polygon id="farrow33" points="108,47 97,56 107,63" fill="#10b981"/>
|
||
<text id="ftxt33" x="115" y="46" font-size="9" fill="#10b981" font-family="Inter" font-weight="700">F</text>
|
||
<text id="albl33" x="103" y="70" font-size="8" fill="#64748b" font-family="Inter">α</text>
|
||
</svg>
|
||
<div style="flex:1;min-width:140px">
|
||
<div style="font-size:.84rem;margin-bottom:8px;font-weight:600">cos <span id="aval33">45</span>° = <b id="cosval33" style="font-family:'JetBrains Mono',monospace;color:var(--pri);font-size:.92rem">0.71</b></div>
|
||
<div class="idiag-result" id="worksign33" style="font-size:.82rem;padding:8px 12px"><span class="work-pos">A > 0 — положительная</span></div>
|
||
<div style="font-size:.77rem;color:var(--muted);margin-top:8px;line-height:1.6" id="workdesc33">Сила «помогает» движению</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-calculator"></i> Примеры решения задач</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Автомобиль поднимается в гору</h3>
|
||
<div class="cond">
|
||
Автомобиль массой $m = 2{,}0\,\text{т}$, мощность двигателя $P \approx 2{,}9\cdot10^4\,\text{Вт}$, скорость подъёма $v = 3{,}0\,\text{м/с}$, $g = 10\,\text{м/с}^2$. Найдите угол наклона горы.
|
||
</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span>Сила тяги направлена вдоль движения (α = 0°), поэтому $P = Fv$:<br>$F = P/v = 2{,}9\cdot10^4\,/\,3{,}0 \approx 9{,}7\cdot10^3\,\text{Н}$</span></li>
|
||
<li><span class="step-n">2</span><span>При равномерном движении сила тяги = составляющая тяжести вдоль горы:<br>$F = mg\sin\alpha$</span></li>
|
||
<li><span class="step-n">3</span><span>$\sin\alpha = F/(mg) = 9700/(2000\cdot10) = 0{,}485 \approx 0{,}5$ → $\alpha = 30°$</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Работа по деформации пружины</h3>
|
||
<div class="cond">
|
||
Пружину жёсткостью $k = 200\,\text{Н/м}$ растянули с $l_0 = 16\,\text{см}$ до $l = 20\,\text{см}$. Найдите работу внешней силы.
|
||
</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span>Деформация (удлинение, а не полная длина!):<br>$x = l - l_0 = 0{,}20 - 0{,}16 = 0{,}04\,\text{м}$</span></li>
|
||
<li><span class="step-n">2</span><span>Работа внешней силы при деформации пружины:\[A = \frac{kx^2}{2} = \frac{200\cdot(0{,}04)^2}{2} = \frac{200\cdot0{,}0016}{2} = 0{,}16\,\text{Дж}\]</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-list-check"></i> Главные выводы</div>
|
||
<div class="def-box" style="border-left-color:#10b981">
|
||
1. Работа силы равна произведению модулей силы и перемещения на косинус угла между ними.<br>
|
||
2. Острый угол → A > 0; тупой угол → A < 0; прямой угол → A = 0.<br>
|
||
3. Силы, перпендикулярные перемещению тела, работы не совершают.<br>
|
||
4. Мощность численно равна работе, совершаемой за единицу времени.<br>
|
||
5. Мощность пропорциональна произведению действующей силы и скорости движения тела.
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-question-circle"></i> Контрольные вопросы</div>
|
||
<ol class="q-list">
|
||
<li>Положительной или отрицательной будет работа силы тяжести, действующей на тело, движущееся вверх? Падающее вниз? Почему?</li>
|
||
<li>Положительной или отрицательной будет работа силы сопротивления воздуха при движении мяча вверх? При движении вниз?</li>
|
||
<li>Чему равна суммарная работа, которую совершила сила тяжести при броске мяча вверх и при его движении обратно?</li>
|
||
<li>Совершает ли работу нормальная составляющая силы реакции поверхности, действующая на движущееся по этой поверхности тело?</li>
|
||
<li>Можно ли при заданной мощности выиграть и в силе, и в скорости одновременно?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §34 — ТЕОРИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref34">
|
||
|
||
<!-- Hero -->
|
||
<div class="para-hero ph-34">
|
||
<div class="ph-label">§34 · Физика 9 кл</div>
|
||
<h2>Потенциальная энергия</h2>
|
||
<div class="ph-formula">$E_\text{п} = mgh \quad\text{или}\quad E_\text{п} = \tfrac{kx^2}{2}$</div>
|
||
<div class="ph-desc">Потенциальная энергия — это «запас» работы, которую могут совершить силы взаимодействия.<br>Нулевой уровень выбираешь сам — важна только разность энергий.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📐 [Eп] = Дж</span>
|
||
<span class="ph-tag">📈 mgh — линейно от h</span>
|
||
<span class="ph-tag">📈 kx²/2 — квадратично от x</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-battery-half"></i> §34. Потенциальная энергия</div>
|
||
|
||
<div class="def-box">
|
||
<b>Потенциальная энергия</b> — мера способности сил взаимодействия механической системы совершать работу.<br>
|
||
Потенциальная энергия равна работе, которую совершат силы взаимодействия при переходе тела из данного состояния на <b>нулевой уровень</b>: $E_\text{п} = A$.
|
||
</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Потенциальная энергия в поле тяжести</h3>
|
||
<div class="main-f">$E_\text{п} = mgh$</div>
|
||
<p>$m$ — масса тела, $g$ — ускорение свободного падения, $h$ — высота над нулевым уровнем.</p>
|
||
<p style="margin-top:6px">$[E_\text{п}] = \text{Дж}$</p>
|
||
</div>
|
||
<div class="fcard highlight">
|
||
<h3>Потенциальная энергия упруго деформированного тела</h3>
|
||
<div class="main-f">$E_\text{п} = \dfrac{kx^2}{2}$</div>
|
||
<p>$k$ — жёсткость пружины, $x$ — деформация (растяжение или сжатие).</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Изменение потенциальной энергии и работа</h3>
|
||
<div class="main-f">$\Delta E_\text{п} = -A$</div>
|
||
<p>Изменение потенциальной энергии и работа сил взаимодействия имеют <b>противоположные знаки</b>.</p>
|
||
<p style="margin-top:5px;font-size:.79rem">Тело опускается → $A > 0$ → $\Delta E_\text{п} < 0$ (энергия убывает)</p>
|
||
</div>
|
||
<div class="fcard">
|
||
<h3>Нулевой уровень</h3>
|
||
<div class="main-f" style="font-size:.9rem">$E_\text{п}(h{=}0) = 0$</div>
|
||
<p>Нулевой уровень потенциальной энергии <b>выбирается произвольно</b>.</p>
|
||
<p style="margin-top:5px;font-size:.79rem">Изменение $\Delta E_\text{п}$ от выбора нулевого уровня <b>не зависит</b>.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Графики из учебника -->
|
||
<div class="fcard" style="margin-bottom:16px">
|
||
<h3>Графики потенциальной энергии</h3>
|
||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:10px">
|
||
<div>
|
||
<svg width="100%" viewBox="0 0 200 140">
|
||
<text x="100" y="14" font-size="11" text-anchor="middle" fill="var(--pri)" font-family="Inter" font-weight="700">E п = mgh (гравитац.)</text>
|
||
<line x1="20" y1="120" x2="180" y2="120" stroke="var(--muted)" stroke-width="1.5"/>
|
||
<line x1="20" y1="120" x2="20" y2="20" stroke="var(--muted)" stroke-width="1.5"/>
|
||
<polygon points="20,20 16,32 24,32" fill="var(--muted)"/>
|
||
<polygon points="180,120 168,116 168,124" fill="var(--muted)"/>
|
||
<text x="183" y="124" font-size="10" fill="var(--muted)" font-family="Inter">h</text>
|
||
<text x="14" y="18" font-size="10" fill="var(--muted)" font-family="Inter">Eп</text>
|
||
<line x1="20" y1="120" x2="170" y2="30" stroke="#1d4ed8" stroke-width="2.5"/>
|
||
<text x="130" y="55" font-size="9" fill="#1d4ed8" font-family="Inter" font-weight="700">прямая</text>
|
||
<text x="100" y="135" font-size="9" text-anchor="middle" fill="var(--muted)" font-family="Inter">Eп ~ h (линейно)</text>
|
||
</svg>
|
||
</div>
|
||
<div>
|
||
<svg width="100%" viewBox="0 0 200 140">
|
||
<text x="100" y="14" font-size="11" text-anchor="middle" fill="var(--pri)" font-family="Inter" font-weight="700">E п = kx²/2 (пружина)</text>
|
||
<line x1="20" y1="120" x2="180" y2="120" stroke="var(--muted)" stroke-width="1.5"/>
|
||
<line x1="20" y1="120" x2="20" y2="20" stroke="var(--muted)" stroke-width="1.5"/>
|
||
<polygon points="20,20 16,32 24,32" fill="var(--muted)"/>
|
||
<polygon points="180,120 168,116 168,124" fill="var(--muted)"/>
|
||
<text x="183" y="124" font-size="10" fill="var(--muted)" font-family="Inter">x</text>
|
||
<text x="14" y="18" font-size="10" fill="var(--muted)" font-family="Inter">Eп</text>
|
||
<path d="M20,120 Q80,118 110,90 Q140,62 170,28" stroke="#1d4ed8" stroke-width="2.5" fill="none"/>
|
||
<text x="130" y="60" font-size="9" fill="#1d4ed8" font-family="Inter" font-weight="700">парабола</text>
|
||
<text x="100" y="135" font-size="9" text-anchor="middle" fill="var(--muted)" font-family="Inter">Eп ~ x² (квадратично)</text>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── СХЕМЫ §34 ── -->
|
||
<div class="idiag">
|
||
<h3>📏 Нулевой уровень — двигай и смотри что меняется, а что нет</h3>
|
||
<div class="slider-row" style="margin-bottom:12px">
|
||
<span class="slider-lbl">Уровень h=0:</span>
|
||
<input type="range" min="0" max="6" step="0.5" value="0" id="sl34zero" oninput="upd34zero()">
|
||
<span class="slider-val" id="v34zero">пол (0 м)</span>
|
||
</div>
|
||
|
||
<div style="display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap">
|
||
|
||
<!-- SVG-сцена -->
|
||
<svg width="160" height="230" style="flex-shrink:0;border:1.5px solid var(--border);border-radius:12px;overflow:visible;background:rgba(29,78,216,.025)">
|
||
<!-- Стена слева -->
|
||
<rect x="0" y="0" width="14" height="230" fill="#e2e8f0"/>
|
||
<!-- Этажи: фиксированные реальные высоты. 1 м = 22px. Низ SVG = y=218 = реальный -1м (земля). -->
|
||
<!-- Реальный пол = 0 м = y=196. Полка 1 = 2м = y=152. Полка 2 = 5м = y=86 -->
|
||
<!-- Земля (улица) -->
|
||
<rect x="14" y="218" width="146" height="12" fill="#94a3b8" rx="2"/>
|
||
<line x1="14" y1="218" x2="160" y2="218" stroke="#64748b" stroke-width="1.5"/>
|
||
<!-- Пол комнаты -->
|
||
<rect x="14" y="196" width="146" height="5" fill="#94a3b8"/>
|
||
<text x="17" y="208" font-size="7.5" fill="#64748b" font-family="Inter">пол</text>
|
||
<!-- Потолок -->
|
||
<rect x="14" y="18" width="146" height="5" fill="#94a3b8"/>
|
||
<text x="17" y="16" font-size="7.5" fill="#64748b" font-family="Inter">потолок (7 м)</text>
|
||
<!-- Полка А (шар лежит) — реальная высота 2 м = y=152 -->
|
||
<rect x="40" y="152" width="55" height="5" rx="2" fill="#1d4ed8" opacity=".4"/>
|
||
<!-- Шар А (позиция 1 — низкая) cy = 152-12 = 140 -->
|
||
<circle cx="67" cy="140" r="12" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="2"/>
|
||
<text x="67" y="144" font-size="8" text-anchor="middle" fill="#1d4ed8" font-weight="700">m</text>
|
||
<text x="100" y="144" font-size="7.5" fill="#1d4ed8" font-family="Inter">2 м</text>
|
||
<!-- Полка Б (шар лежит) — реальная высота 5 м = y=86 -->
|
||
<rect x="40" y="86" width="55" height="5" rx="2" fill="#7c3aed" opacity=".4"/>
|
||
<!-- Шар Б (позиция 2 — высокая) cy = 86-12 = 74 -->
|
||
<circle cx="67" cy="74" r="12" fill="#ede9fe" stroke="#7c3aed" stroke-width="2"/>
|
||
<text x="67" y="78" font-size="8" text-anchor="middle" fill="#7c3aed" font-weight="700">m</text>
|
||
<text x="100" y="78" font-size="7.5" fill="#7c3aed" font-family="Inter">5 м</text>
|
||
<!-- Скобка ΔЕп: стрелка между шарами -->
|
||
<line x1="130" y1="74" x2="130" y2="140" stroke="#10b981" stroke-width="2"/>
|
||
<polygon points="130,74 126,85 134,85" fill="#10b981"/>
|
||
<polygon points="130,140 126,129 134,129" fill="#10b981"/>
|
||
<text x="134" y="112" font-size="8" fill="#065f46" font-family="Inter" font-weight="700">Δh=3м</text>
|
||
<!-- Нулевой уровень — динамическая линия -->
|
||
<line id="zline34" x1="14" y1="196" x2="160" y2="196" stroke="#10b981" stroke-width="2.5" stroke-dasharray="6,3"/>
|
||
<text id="zlbl34" x="16" y="192" font-size="8" fill="#10b981" font-family="Inter" font-weight="800">h = 0</text>
|
||
<!-- Стрелки от нулевого уровня до шара А -->
|
||
<line id="za_line" x1="22" y1="196" x2="22" y2="140" stroke="#1d4ed8" stroke-width="1.8" stroke-dasharray="3,2"/>
|
||
<polygon id="za_arr1" points="22,140 18,151 26,151" fill="#1d4ed8"/>
|
||
<polygon id="za_arr2" points="22,196 18,185 26,185" fill="#1d4ed8"/>
|
||
<text id="za_lbl" x="4" y="172" font-size="8" fill="#1d4ed8" font-family="Inter" font-weight="700">h₁</text>
|
||
<!-- Стрелки от нулевого уровня до шара Б -->
|
||
<line id="zb_line" x1="33" y1="196" x2="33" y2="74" stroke="#7c3aed" stroke-width="1.8" stroke-dasharray="3,2"/>
|
||
<polygon id="zb_arr1" points="33,74 29,85 37,85" fill="#7c3aed"/>
|
||
<polygon id="zb_arr2" points="33,196 29,185 37,185" fill="#7c3aed"/>
|
||
<text id="zb_lbl" x="4" y="130" font-size="8" fill="#7c3aed" font-family="Inter" font-weight="700">h₂</text>
|
||
</svg>
|
||
|
||
<!-- Правая панель с числами -->
|
||
<div style="flex:1;min-width:170px;display:flex;flex-direction:column;gap:10px">
|
||
|
||
<div style="background:rgba(29,78,216,.07);border:1.5px solid rgba(29,78,216,.25);border-radius:10px;padding:10px 13px">
|
||
<div style="font-size:.73rem;font-weight:700;color:#1d4ed8;margin-bottom:5px">🔵 Шар на нижней полке (2 м)</div>
|
||
<div style="font-family:'JetBrains Mono',monospace;font-size:.85rem;font-weight:700;color:var(--text)">
|
||
h₁ = <span id="h1val">2</span> м<br>
|
||
Eп₁ = <span id="ep1val" style="color:#1d4ed8">400</span> Дж
|
||
</div>
|
||
</div>
|
||
|
||
<div style="background:rgba(124,58,237,.07);border:1.5px solid rgba(124,58,237,.25);border-radius:10px;padding:10px 13px">
|
||
<div style="font-size:.73rem;font-weight:700;color:#7c3aed;margin-bottom:5px">🟣 Шар на верхней полке (5 м)</div>
|
||
<div style="font-family:'JetBrains Mono',monospace;font-size:.85rem;font-weight:700;color:var(--text)">
|
||
h₂ = <span id="h2val">5</span> м<br>
|
||
Eп₂ = <span id="ep2val" style="color:#7c3aed">1000</span> Дж
|
||
</div>
|
||
</div>
|
||
|
||
<div style="background:rgba(16,185,129,.1);border:2px solid #10b981;border-radius:10px;padding:10px 13px">
|
||
<div style="font-size:.73rem;font-weight:700;color:#065f46;margin-bottom:5px">✅ Изменение энергии</div>
|
||
<div style="font-family:'JetBrains Mono',monospace;font-size:.9rem;font-weight:800;color:#065f46">
|
||
ΔEп = <span id="depval">600</span> Дж
|
||
</div>
|
||
<div style="font-size:.72rem;color:#065f46;margin-top:4px;font-weight:600" id="dep_note">
|
||
= 2 × 10 × 3 = не меняется!
|
||
</div>
|
||
</div>
|
||
|
||
<div style="font-size:.75rem;color:var(--muted);line-height:1.6;padding:0 2px">
|
||
💡 Двигай нулевой уровень — Eп₁ и Eп₂ меняются,<br>но <b style="color:#065f46">ΔEп всегда = 600 Дж</b>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3>🎚️ Интерактив: Eп = mgh</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса $m$:</span>
|
||
<input type="range" min="1" max="20" value="5" id="sl34m" oninput="upd34()">
|
||
<span class="slider-val" id="v34m">5 кг</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Высота $h$:</span>
|
||
<input type="range" min="0" max="20" value="4" id="sl34h" oninput="upd34()">
|
||
<span class="slider-val" id="v34h">4 м</span>
|
||
</div>
|
||
<div style="display:flex;gap:16px;align-items:center;flex-wrap:wrap">
|
||
<div style="flex:1;min-width:180px">
|
||
<div class="idiag-result" id="res34">Eп = 5 × 10 × 4 = <b style="font-size:1.1em;color:var(--pri)">200</b> Дж</div>
|
||
<p style="font-size:.75rem;color:var(--muted);margin-top:8px">💡 Подними m=10 кг на h=10 м — 1000 Дж! Столько тратит кран, поднимая гирю.</p>
|
||
</div>
|
||
<svg width="60" height="118" id="svg34lift" style="flex-shrink:0">
|
||
<line x1="8" y1="5" x2="8" y2="103" stroke="var(--muted)" stroke-width="1"/>
|
||
<text x="3" y="9" font-size="7" fill="var(--muted)" font-family="Inter">h</text>
|
||
<line x1="4" y1="103" x2="54" y2="103" stroke="#94a3b8" stroke-width="1.5"/>
|
||
<text x="30" y="113" font-size="7" text-anchor="middle" fill="#94a3b8" font-family="Inter">h=0</text>
|
||
<rect x="18" y="5" width="34" height="98" rx="5" fill="rgba(29,78,216,.07)" stroke="var(--border)" stroke-width="1.5"/>
|
||
<rect x="20" id="liftbar34" y="80" width="30" height="22" rx="4" fill="var(--pri)" opacity=".7"/>
|
||
<circle id="liftball34" cx="35" cy="70" r="9" fill="#bfdbfe" stroke="#1d4ed8" stroke-width="1.5"/>
|
||
<text id="liftballtxt" x="35" y="74" font-size="7" text-anchor="middle" fill="#1d4ed8" font-weight="700">m</text>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Цепочка связей §34 -->
|
||
<div class="fchain">
|
||
<span class="fchain-note">Связь работы и энергии:</span>
|
||
<span class="fchain-step">тело опускается</span>
|
||
<span class="fchain-arrow">→</span>
|
||
<span class="fchain-step">$A_{\text{тяж}} > 0$</span>
|
||
<span class="fchain-arrow">→</span>
|
||
<span class="fchain-step">$\Delta E_\text{п} = -A < 0$</span>
|
||
<span class="fchain-arrow">→</span>
|
||
<span class="fchain-step">$E_\text{п}$ убывает</span>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-circle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>$\Delta E_\text{п} = -A$: минус означает, что при совершении положительной работы запас энергии <b>уменьшается</b>.</li>
|
||
<li>$x$ в формуле $E_\text{п} = kx^2/2$ — это <b>деформация</b> (изменение длины), а не полная длина пружины!</li>
|
||
<li>Нулевой уровень для $mgh$ выбирают там, куда падает тело — тогда $E_\text{п}$ на нулевом уровне = 0.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="mistakes-box">
|
||
<div class="mistakes-box-title"><i class="fas fa-triangle-exclamation"></i> Частые ошибки</div>
|
||
<ul>
|
||
<li>Подставляют полную длину пружины $l$ вместо деформации $x = l - l_0$ в $kx^2/2$.</li>
|
||
<li>Путают знак: тело поднялось → $A_{\text{тяж}} < 0$ → $\Delta E_\text{п} = -A > 0$ → энергия выросла (всё логично).</li>
|
||
<li>Думают, что $E_\text{п}$ — абсолютная характеристика тела. На самом деле она зависит от выбора нулевого уровня, зато $\Delta E_\text{п}$ — не зависит.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="student-box">
|
||
<div class="student-box-title">🧑🎓 Как я это понял</div>
|
||
<p><b>Потенциальная энергия — это «замороженная» работа</b><br>
|
||
Кирпич лежит на высоте 10 м. Он ничего не делает. Но стоит его отпустить — он упадёт, разгонится и совершит работу. Откуда она возьмётся? Из высоты. Пока кирпич висит — у него есть потенциальная энергия. Это как деньги на счёте: их не видно, но они есть.</p>
|
||
<p><b>Нулевой уровень — сам выбираешь</b><br>
|
||
Считать высоту от пола, от земли или от крыши — всё равно. Меняется только само число $E_\text{п} = mgh$, но разница $\Delta E_\text{п}$ между двумя положениями всегда одинакова. Именно поэтому нулевой уровень выбирают там, где удобно: обычно там, куда тело падает.</p>
|
||
<p><b>Пружина тоже хранит энергию — и квадратично</b><br>
|
||
Растянул пружину в 2 раза сильнее — энергия выросла в 4 раза ($E_\text{п} = kx^2/2$). Это не линейно! Поэтому взведённый арбалет опасен сильнее, чем кажется: маленькая дополнительная деформация даёт большой прирост энергии.</p>
|
||
<p><b>$\Delta E_\text{п} = -A$: почему минус?</b><br>
|
||
Тело падает → сила тяжести совершает работу $A > 0$ (помогает движению) → потенциальная энергия уменьшается $\Delta E_\text{п} < 0$. Энергия «потратилась» на работу. Знак минус — это просто способ сказать: что потратил на работу, то убыло из запаса.</p>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-calculator"></i> Пример решения задачи</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Работа внешней силы и изменение $E_\text{п}$ пружины</h3>
|
||
<div class="cond">
|
||
Пружину жёсткостью $k = 200\,\text{Н/м}$ растянули с $l_0 = 16\,\text{см}$ до $l = 20\,\text{см}$. Найдите работу внешней силы, работу силы упругости и изменение потенциальной энергии.
|
||
</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span>Деформация (не путать с полной длиной!):<br>$x = l - l_0 = 0{,}20 - 0{,}16 = 0{,}04\,\text{м}$</span></li>
|
||
<li><span class="step-n">2</span><span>Работа внешней силы = прирост $E_\text{п}$ пружины:\[A_\text{внеш} = \frac{kx^2}{2} = \frac{200\cdot0{,}04^2}{2} = 0{,}16\,\text{Дж}\]</span></li>
|
||
<li><span class="step-n">3</span><span>Сила упругости — против деформации, значит работает против: $A_\text{упр} = -0{,}16\,\text{Дж}$</span></li>
|
||
<li><span class="step-n">4</span><span>$\Delta E_\text{п} = -A_\text{упр} = -(-0{,}16) = +0{,}16\,\text{Дж}$ — энергия выросла. ✓</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Определить массу тела по работе при подъёме</h3>
|
||
<div class="cond">
|
||
При медленном подъёме камня из ямы глубиной $h = 2{,}0\,\text{м}$ совершена работа $A = 100\,\text{Дж}$, $g = 10\,\text{м/с}^2$. Найдите массу камня.
|
||
</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span>При равномерном подъёме сила равна весу, поэтому $A = mgh$.</span></li>
|
||
<li><span class="step-n">2</span><span>Выражаем массу:\[m = \frac{A}{gh} = \frac{100}{10\cdot2{,}0} = 5{,}0\,\text{кг}\]</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-list-check"></i> Главные выводы</div>
|
||
<div class="def-box" style="border-left-color:#10b981">
|
||
1. Потенциальная энергия характеризует способность тела совершать работу.<br>
|
||
2. Потенциальная энергия равна работе сил взаимодействия при переходе тела на нулевой уровень.<br>
|
||
3. Изменение потенциальной энергии равно работе сил взаимодействия, взятой с противоположным знаком: $\Delta E_\text{п} = -A$.
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-question-circle"></i> Контрольные вопросы</div>
|
||
<ol class="q-list">
|
||
<li>В каких случаях тело обладает потенциальной энергией?</li>
|
||
<li>Как определить потенциальную энергию любого тела? От чего она зависит?</li>
|
||
<li>Чему равна потенциальная энергия тела в системе «тело + Земля»?</li>
|
||
<li>Чему равна потенциальная энергия упруго деформированного тела?</li>
|
||
<li>Почему значение потенциальной энергии зависит от выбора нулевого уровня, а её изменение — нет?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §35 — ТЕОРИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref35">
|
||
|
||
<div class="para-hero ph-35">
|
||
<div class="ph-label">§35 · Физика 9 кл</div>
|
||
<h2>Кинетическая энергия. Полная энергия системы тел</h2>
|
||
<div class="ph-formula">$E_\text{к} = \dfrac{mv^2}{2}$</div>
|
||
<div class="ph-desc">Кинетическая энергия — это «энергия движения». Она зависит от скорости квадратично:<br>удвоить скорость — значит учетверить энергию.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">📐 [Eк] = Дж</span>
|
||
<span class="ph-tag">📈 пропорциональна v²</span>
|
||
<span class="ph-tag">⚡ теорема ΔEк = Aрез</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-bolt"></i> §35. Кинетическая энергия</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>Кинетическая энергия</h3>
|
||
<div class="main-f">$E_\text{к} = \dfrac{mv^2}{2}$</div>
|
||
<p><b>Скалярная</b> величина, всегда $\geq 0$.</p>
|
||
<p>$[E_\text{к}] = \text{Дж}$</p>
|
||
<p style="margin-top:6px;font-size:.79rem">$m$ — масса тела, $v$ — скорость</p>
|
||
</div>
|
||
|
||
<div class="fcard highlight">
|
||
<h3>Теорема о кинетической энергии</h3>
|
||
<div class="main-f">$\Delta E_\text{к} = A_\text{рез}$</div>
|
||
<p>Изменение $E_\text{к}$ равно <b>работе результирующей всех сил</b>.</p>
|
||
<p style="margin-top:5px;font-size:.79rem">$\dfrac{mv^2}{2} - \dfrac{mv_0^2}{2} = A_\text{рез}$</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Механическая энергия</h3>
|
||
<div class="main-f">$E_\text{мех} = E_\text{к} + E_\text{п}$</div>
|
||
<p>Сумма кинетической и потенциальной энергии тела (или системы).</p>
|
||
<p style="margin-top:5px;font-size:.79rem">$E_\text{мех} = \dfrac{mv^2}{2} + mgh$</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Полная энергия системы</h3>
|
||
<div class="main-f">$E = E_\text{мех} + E_\text{внутр}$</div>
|
||
<p><b>Полная энергия</b> системы тел включает механическую и внутреннюю (тепловую) энергию.</p>
|
||
<p style="margin-top:5px;font-size:.79rem">$E = \text{const}$ — закон сохранения энергии</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── ИНТЕРАКТИВНЫЙ КАЛЬКУЛЯТОР Eк ── -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-sliders"></i> Калькулятор кинетической энергии</h3>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Масса m:</span>
|
||
<input type="range" min="1" max="20" step="1" value="5" id="sl35m" oninput="upd35()">
|
||
<span class="slider-val" id="v35m">5 кг</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl">Скорость v:</span>
|
||
<input type="range" min="0" max="30" step="1" value="10" id="sl35v" oninput="upd35()">
|
||
<span class="slider-val" id="v35v">10 м/с</span>
|
||
</div>
|
||
<div class="idiag-result" id="res35">Eк = 5 × 100 / 2 = <b style="font-size:1.1em;color:var(--pri)">250</b> Дж</div>
|
||
|
||
<!-- Полоска энергии -->
|
||
<div style="margin-top:10px;background:rgba(29,78,216,.07);border-radius:9px;height:22px;overflow:hidden;position:relative">
|
||
<div id="bar35" style="height:100%;background:linear-gradient(90deg,#6d28d9,#8b5cf6);border-radius:9px;transition:width .3s;width:25%"></div>
|
||
</div>
|
||
<div style="font-size:.73rem;color:var(--muted);margin-top:5px;text-align:right">Шкала: 0 — 4 500 Дж</div>
|
||
|
||
<!-- Сравнение: удвоение скорости -->
|
||
<div class="student-box" style="margin-top:14px">
|
||
<div class="student-box-title"><i class="fas fa-lightbulb"></i> Ключевое наблюдение</div>
|
||
<p>Скорость удвоить (×2) → $E_\text{к}$ увеличится <b>в 4 раза</b>.</p>
|
||
<p>Скорость утроить (×3) → $E_\text{к}$ увеличится <b>в 9 раз</b>.</p>
|
||
<p>Это потому что $E_\text{к} \sim v^2$ — зависит от квадрата скорости!</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── ТЕОРЕМА О Eк: ЦЕПОЧКА ── -->
|
||
<div class="section-title"><i class="fas fa-link"></i> Как применять теорему о Eк</div>
|
||
<div class="fchain">
|
||
<span class="fchain-step">$A_\text{рез} = F_\text{рез}\,\Delta r$</span>
|
||
<span class="fchain-arrow">→</span>
|
||
<span class="fchain-step">$A_\text{рез} = \Delta E_\text{к}$</span>
|
||
<span class="fchain-arrow">→</span>
|
||
<span class="fchain-step">$A_\text{рез} = \dfrac{mv^2}{2} - \dfrac{mv_0^2}{2}$</span>
|
||
<span class="fchain-note">Работа всех сил = изменение Eк</span>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-circle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>В теореме учитывается работа <b>ВСЕХ</b> сил, а не только одной.</li>
|
||
<li>$E_\text{к}$ скалярная и всегда $\geq 0$; импульс $\vec{p}$ — векторный.</li>
|
||
<li>$E_\text{к}$ пропорциональна $v^2$: скорость ×2 → $E_\text{к}$ ×4.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-calculator"></i> Пример решения</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Поезд разгоняется до скорости</h3>
|
||
<div class="cond">
|
||
Поезд массой $m = 600\,\text{т} = 6\cdot10^5\,\text{кг}$ разгоняется с нуля до скорости $v = 54\,\text{км/ч} = 15\,\text{м/с}$. Найдите кинетическую энергию поезда и работу тяговых сил.
|
||
</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span>$E_\text{к} = \dfrac{mv^2}{2} = \dfrac{6\cdot10^5 \cdot 15^2}{2} = \dfrac{6\cdot10^5 \cdot 225}{2} = 6{,}75\cdot10^7\,\text{Дж} = 67{,}5\,\text{МДж}$</span></li>
|
||
<li><span class="step-n">2</span><span>По теореме о кинетической энергии: $A = \Delta E_\text{к} = E_\text{к} - 0 = 6{,}75\cdot10^7\,\text{Дж}$</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-question-circle"></i> Контрольные вопросы</div>
|
||
<ol class="q-list">
|
||
<li>Что такое кинетическая энергия? В каких единицах она измеряется?</li>
|
||
<li>Как изменится кинетическая энергия тела при увеличении его скорости в 3 раза?</li>
|
||
<li>Что гласит теорема о кинетической энергии? Какова её связь со 2-м законом Ньютона?</li>
|
||
<li>Что такое механическая энергия? Из каких частей она состоит?</li>
|
||
<li>Может ли кинетическая энергия тела быть отрицательной?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: §36 — ТЕОРИЯ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-ref36">
|
||
|
||
<div class="para-hero ph-36">
|
||
<div class="ph-label">§36 · Физика 9 кл</div>
|
||
<h2>Закон сохранения энергии</h2>
|
||
<div class="ph-formula">$E_\text{мех} = \text{const}$</div>
|
||
<div class="ph-desc">В замкнутой системе без трения полная механическая энергия не изменяется.<br>Кинетическая и потенциальная энергии непрерывно переходят друг в друга.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">🔄 Eк ↔ Eп</span>
|
||
<span class="ph-tag">⚡ без трения: Eмех = const</span>
|
||
<span class="ph-tag">🌡 с трением: ΔEмех = Aвнеш</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="section-title"><i class="fas fa-scale-balanced"></i> §36. Закон сохранения механической энергии</div>
|
||
|
||
<div class="formula-grid">
|
||
<div class="fcard highlight">
|
||
<h3>ЗСЭ — замкнутая система (без трения)</h3>
|
||
<div class="main-f">$E_\text{мех} = \text{const}$</div>
|
||
<p>$E_{\text{к}1} + E_{\text{п}1} = E_{\text{к}2} + E_{\text{п}2}$</p>
|
||
<p style="margin-top:5px;font-size:.79rem">Условие: <b>только консервативные силы</b> (тяжесть и упругость).</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>ЗСЭ с трением</h3>
|
||
<div class="main-f">$\Delta E_\text{мех} = A_\text{внеш}$</div>
|
||
<p>Изменение мех. энергии равно работе <b>внешних (диссипативных) сил</b>.</p>
|
||
<p style="margin-top:5px;font-size:.79rem">$A_\text{тр} < 0$ → $E_\text{мех}$ уменьшается → энергия уходит в тепло.</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Закон сохранения полной энергии</h3>
|
||
<div class="main-f">$E_\text{полн} = \text{const}$</div>
|
||
<p>$E_\text{полн} = E_\text{мех} + E_\text{внутр}$</p>
|
||
<p style="margin-top:5px;font-size:.79rem">Полная энергия сохраняется <b>всегда</b>, в любой системе.</p>
|
||
</div>
|
||
|
||
<div class="fcard">
|
||
<h3>Практические следствия</h3>
|
||
<div class="main-f" style="font-size:.9rem">$v = \sqrt{2gh}$</div>
|
||
<p>Скорость тела, упавшего с высоты $h$ (начальная скорость = 0, без трения).</p>
|
||
<p style="margin-top:5px;font-size:.79rem">Из: $mgh = \dfrac{mv^2}{2}$</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── АНИМАЦИЯ: МАЯТНИК ── -->
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-circle-notch"></i> Маятник: превращение Eк ↔ Eп</h3>
|
||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start">
|
||
<div>
|
||
<svg id="svgPend36" width="100%" viewBox="0 0 200 220" style="display:block">
|
||
<!-- Потолок -->
|
||
<rect x="0" y="0" width="200" height="14" fill="#94a3b8" rx="2"/>
|
||
<rect x="93" y="0" width="14" height="14" fill="#64748b"/>
|
||
<!-- Нить (динамическая) -->
|
||
<line id="pend-rope" x1="100" y1="14" x2="100" y2="165" stroke="#64748b" stroke-width="2.5"/>
|
||
<!-- Шар -->
|
||
<circle id="pend-ball" cx="100" cy="165" r="15" fill="#ddd6fe" stroke="#6d28d9" stroke-width="2.5"/>
|
||
<!-- Уровень равновесия (пунктир) -->
|
||
<line x1="10" y1="165" x2="190" y2="165" stroke="#94a3b8" stroke-width="1" stroke-dasharray="4,3"/>
|
||
<text x="150" y="160" font-size="8" fill="#94a3b8" font-family="Inter">h = 0</text>
|
||
<!-- Высота h -->
|
||
<line id="pend-hline" x1="160" y1="165" x2="160" y2="165" stroke="#0f766e" stroke-width="2" stroke-dasharray="3,2"/>
|
||
<text id="pend-hlbl" x="165" y="165" font-size="9" fill="#0f766e" font-family="Inter" font-weight="700"></text>
|
||
<!-- Скорость -->
|
||
<line id="pend-vline" x1="100" y1="165" x2="100" y2="165" stroke="#6d28d9" stroke-width="2.5"/>
|
||
<polygon id="pend-varr" points="100,165 96,165 98,165" fill="#6d28d9"/>
|
||
<!-- Метки Eк и Eп -->
|
||
<text id="pend-ek" x="6" y="200" font-size="9" fill="#6d28d9" font-family="Inter" font-weight="700"></text>
|
||
<text id="pend-ep" x="6" y="213" font-size="9" fill="#0f766e" font-family="Inter" font-weight="700"></text>
|
||
</svg>
|
||
<button class="btn btn-ghost" id="pendBtn36" onclick="togglePend36()" style="width:100%;margin-top:6px;font-size:.78rem">
|
||
<i class="fas fa-play"></i> Запустить
|
||
</button>
|
||
</div>
|
||
<div style="padding-top:10px">
|
||
<div style="font-size:.83rem;font-weight:600;margin-bottom:10px">Энергия в точках:</div>
|
||
<!-- Шкала Eк -->
|
||
<div style="font-size:.78rem;color:var(--muted);margin-bottom:4px">Eк (кинетическая)</div>
|
||
<div style="background:rgba(109,40,217,.1);border-radius:8px;height:16px;overflow:hidden;margin-bottom:10px">
|
||
<div id="bar-ek36" style="height:100%;background:linear-gradient(90deg,#6d28d9,#8b5cf6);border-radius:8px;transition:width .1s;width:0%"></div>
|
||
</div>
|
||
<!-- Шкала Eп -->
|
||
<div style="font-size:.78rem;color:var(--muted);margin-bottom:4px">Eп (потенциальная)</div>
|
||
<div style="background:rgba(15,118,110,.1);border-radius:8px;height:16px;overflow:hidden;margin-bottom:14px">
|
||
<div id="bar-ep36" style="height:100%;background:linear-gradient(90deg,#0f766e,#2dd4bf);border-radius:8px;transition:width .1s;width:100%"></div>
|
||
</div>
|
||
<!-- Итог -->
|
||
<div class="idiag-result" id="sum-e36" style="font-size:.8rem">Eмех = const</div>
|
||
<div class="student-box" style="margin-top:10px">
|
||
<div class="student-box-title" style="font-size:.8rem"><i class="fas fa-lightbulb"></i> Наблюдение</div>
|
||
<p style="font-size:.78rem">В высшей точке: <b>Eп max, Eк = 0</b></p>
|
||
<p style="font-size:.78rem">В нижней точке: <b>Eк max, Eп = 0</b></p>
|
||
<p style="font-size:.78rem">Сумма Eк + Eп = const всегда!</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ── ПРИМЕР С ТРЕНИЕМ ── -->
|
||
<div class="section-title"><i class="fas fa-fire"></i> Закон сохранения с трением</div>
|
||
|
||
<div class="def-box" style="border-left-color:#ef4444">
|
||
При наличии <b>сил трения</b> механическая энергия убывает — переходит во внутреннюю (тепловую) энергию. Но <b>полная</b> энергия системы по-прежнему сохраняется: <span style="font-size:.95em">$E_\text{полн} = E_\text{мех} + E_\text{внутр} = \text{const}$</span>.
|
||
</div>
|
||
|
||
<div class="fchain">
|
||
<span class="fchain-step">$E_{\text{мех}1}$</span>
|
||
<span class="fchain-arrow">+</span>
|
||
<span class="fchain-step">$A_\text{тр}$</span>
|
||
<span class="fchain-arrow">=</span>
|
||
<span class="fchain-step">$E_{\text{мех}2}$</span>
|
||
<span class="fchain-note">$A_\text{тр} < 0$ — трение уменьшает Eмех</span>
|
||
</div>
|
||
|
||
<div class="remember-box">
|
||
<div class="remember-box-title"><i class="fas fa-exclamation-circle"></i> Запомни!</div>
|
||
<ul>
|
||
<li>Без трения: $E_\text{к} + E_\text{п} = \text{const}$ — можно писать равенство в двух точках.</li>
|
||
<li>С трением: $\Delta E_\text{мех} = A_\text{тр}$ — часть энергии ушла в теплоту.</li>
|
||
<li>Полная энергия $E_\text{полн}$ сохраняется <b>всегда</b>.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-calculator"></i> Пример решения</div>
|
||
|
||
<div class="example-box">
|
||
<h3>Шарик бросают вертикально вверх</h3>
|
||
<div class="cond">
|
||
Шарик массой $m = 0{,}5\,\text{кг}$ бросают вертикально вверх с начальной скоростью $v_0 = 20\,\text{м/с}$. $g = 10\,\text{м/с}^2$. Нет трения. Найдите максимальную высоту подъёма.
|
||
</div>
|
||
<div class="sol">
|
||
<ol class="sol-steps">
|
||
<li><span class="step-n">1</span><span>В высшей точке скорость = 0: $E_{\text{к}2} = 0$. Нулевой уровень — точка бросания: $E_{\text{п}1} = 0$.</span></li>
|
||
<li><span class="step-n">2</span><span>По ЗСЭ: $E_{\text{к}1} + E_{\text{п}1} = E_{\text{к}2} + E_{\text{п}2}$<br>
|
||
$\dfrac{mv_0^2}{2} + 0 = 0 + mgh_{\max}$</span></li>
|
||
<li><span class="step-n">3</span><span>$h_{\max} = \dfrac{v_0^2}{2g} = \dfrac{400}{20} = 20\,\text{м}$</span></li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-question-circle"></i> Контрольные вопросы</div>
|
||
<ol class="q-list">
|
||
<li>При каком условии сохраняется механическая энергия системы тел?</li>
|
||
<li>Что происходит с механической энергией при наличии сил трения?</li>
|
||
<li>Как связаны кинетическая и потенциальная энергия тела при его падении?</li>
|
||
<li>Куда «исчезает» механическая энергия при торможении автомобиля?</li>
|
||
<li>Чем отличается механическая энергия от полной энергии системы?</li>
|
||
</ol>
|
||
</div>
|
||
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: ЛАБОРАТОРИЯ №11 — Проверка ЗСИ
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-lab11">
|
||
|
||
<div class="para-hero ph-lab">
|
||
<div class="ph-label">🔬 Лабораторная работа № 11</div>
|
||
<h2>Проверка закона сохранения импульса</h2>
|
||
<div class="ph-formula">$m_1 l_1 = m_1 l_1' + m_2 l_2'$</div>
|
||
<div class="ph-desc">Шар скатывается с лотка и сталкивается у края стола со вторым шаром. По дальностям полёта проверяем ЗСИ и вычисляем погрешности.</div>
|
||
<div class="ph-tags">
|
||
<span class="ph-tag">Задачи 1–7 хода работы</span>
|
||
<span class="ph-tag">Анализ погрешностей</span>
|
||
<span class="ph-tag">H = 15 см (фиксировано)</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="fcard" style="margin-bottom:16px">
|
||
<h3>📋 Принцип метода</h3>
|
||
<p style="font-size:.84rem;line-height:1.85;margin-top:8px;color:var(--text)">
|
||
Оба шара вылетают горизонтально с одной высоты H, поэтому время полёта одинаково:
|
||
$t = \sqrt{2H/g}$. Скорость пропорциональна дальности: $v = l/t$.
|
||
Подставляя в ЗСИ $m_1 v_0 = m_1 v_1' + m_2 v_2'$, получаем рабочую формулу:
|
||
</p>
|
||
<div style="text-align:center;margin:10px 0;padding:10px 16px;background:rgba(185,28,28,.07);border-radius:9px;font-size:1.05rem;font-weight:800">
|
||
$m_1 l_1 = m_1 l_1' + m_2 l_2'$
|
||
</div>
|
||
<p style="font-size:.82rem;color:var(--muted);margin-top:6px">
|
||
$l_1$ — дальность шара 1 <em>без</em> столкновения; $l_1'$, $l_2'$ — дальности шаров <em>после</em> столкновения.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="idiag">
|
||
<h3><i class="fas fa-drafting-compass"></i> Виртуальная установка — траектории</h3>
|
||
<canvas id="cvLab11" width="540" height="195" style="width:100%;border-radius:10px;display:block;background:var(--bg)"></canvas>
|
||
<div style="margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:6px 18px">
|
||
<div class="slider-row">
|
||
<span class="slider-lbl" style="min-width:56px">m₁</span>
|
||
<input type="range" id="l11m1" min="100" max="400" value="200" step="10" oninput="updLab11()">
|
||
<span class="slider-val" id="l11m1v">200</span><span style="font-size:.76rem;color:var(--muted);margin-left:2px">г</span>
|
||
</div>
|
||
<div class="slider-row">
|
||
<span class="slider-lbl" style="min-width:56px">m₂</span>
|
||
<input type="range" id="l11m2" min="50" max="300" value="100" step="10" oninput="updLab11()">
|
||
<span class="slider-val" id="l11m2v">100</span><span style="font-size:.76rem;color:var(--muted);margin-left:2px">г</span>
|
||
</div>
|
||
<div class="slider-row" style="grid-column:1/3">
|
||
<span class="slider-lbl" style="min-width:56px">h лотка</span>
|
||
<input type="range" id="l11h" min="5" max="25" value="15" step="1" oninput="updLab11()">
|
||
<span class="slider-val" id="l11hv">15</span><span style="font-size:.76rem;color:var(--muted);margin-left:2px">см</span>
|
||
</div>
|
||
</div>
|
||
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;font-size:.82rem">
|
||
<div class="idiag-result">l₁ = <b id="l11r1">—</b> м</div>
|
||
<div class="idiag-result">l₁' = <b id="l11r1p">—</b> м</div>
|
||
<div class="idiag-result">l₂' = <b id="l11r2p">—</b> м</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div style="margin:20px 0">
|
||
<div class="section-title"><i class="fas fa-table-list"></i> Таблица измерений</div>
|
||
<div style="overflow-x:auto;border-radius:12px;border:1px solid var(--border)">
|
||
<table class="lab11-tbl">
|
||
<thead><tr>
|
||
<th>№</th><th>m₁, кг</th><th>m₂, кг</th>
|
||
<th>l₁, м</th><th>l₁', м</th><th>l₂', м</th>
|
||
</tr></thead>
|
||
<tbody id="lab11tb"></tbody>
|
||
</table>
|
||
</div>
|
||
<div style="display:flex;gap:10px;margin-top:12px;flex-wrap:wrap;align-items:center">
|
||
<button class="btn btn-pri" id="lab11b1" onclick="lab11add()"><i class="fas fa-flask"></i> Провести опыт</button>
|
||
<button class="btn btn-ghost" onclick="lab11all()"><i class="fas fa-forward-fast"></i> Все 5 опытов</button>
|
||
<button class="btn btn-ghost" style="margin-left:auto" onclick="lab11reset()"><i class="fas fa-rotate-right"></i> Сначала</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="lab11vrf" style="display:none">
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-check-double"></i> Проверка закона и погрешности</div>
|
||
<div id="lab11nb"></div>
|
||
<div id="lab11cn" style="padding:14px 18px;border-radius:12px;font-size:.88rem;font-weight:700;line-height:1.7;margin-top:12px"></div>
|
||
</div>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-question-circle"></i> Контрольные вопросы</div>
|
||
<ol class="q-list">
|
||
<li>Как направлен импульс тела?</li>
|
||
<li>При каких условиях выполняется закон сохранения импульса?</li>
|
||
<li>Почему для системы двух шаров можно применять закон сохранения импульса?</li>
|
||
</ol>
|
||
|
||
<hr class="divider">
|
||
<div class="section-title"><i class="fas fa-star"></i> Суперзадание</div>
|
||
<div style="background:var(--card);border:2px solid var(--warn);border-radius:12px;padding:16px 20px;font-size:.93rem;line-height:1.75">
|
||
Можно ли утверждать, что суммарный импульс шаров не будет изменяться и при их дальнейшем полёте по параболической траектории вплоть до соударения с поверхностью стола? Ответ аргументируйте.
|
||
</div>
|
||
<div style="text-align:center;margin-top:12px">
|
||
<button onclick="toggleSuperAns()" id="superAnsBtn" style="background:var(--pri);color:#fff;border:none;border-radius:10px;padding:9px 22px;font-size:.88rem;font-weight:700;cursor:pointer;transition:filter .15s">
|
||
<i class="fas fa-lightbulb"></i> Показать решение
|
||
</button>
|
||
</div>
|
||
<div id="superAns" style="display:none;margin-top:14px">
|
||
<div class="nb-wrap">
|
||
<div class="nb-hdr">📐 Решение</div>
|
||
|
||
<div style="background:var(--warn-bg);border-left:4px solid var(--warn);border-radius:0 8px 8px 0;padding:12px 16px;margin:12px 0;font-size:.91rem;line-height:1.7;color:#78350f">
|
||
<b>Ответ: нет — суммарный вектор импульса изменяется.</b><br>
|
||
Однако горизонтальная составляющая суммарного импульса остаётся постоянной, и именно она измеряется в опыте.
|
||
</div>
|
||
|
||
<hr class="nb-div">
|
||
<div class="nb-sh">Аргументация:</div>
|
||
|
||
<div class="nb-step">
|
||
<b>1. Какие силы действуют на шары в полёте?</b><br>
|
||
<span class="nb-i">После удара оба шара летят по параболе. На каждый из них действует <em>только сила тяжести</em> (трение воздуха пренебрежимо мало).</span>
|
||
<span class="nb-i">Сила тяжести — <em>внешняя</em> сила по отношению к системе «шар 1 + шар 2».</span>
|
||
</div>
|
||
|
||
<div class="nb-step">
|
||
<b>2. Как изменяется суммарный вектор импульса?</b><br>
|
||
<span class="nb-i">По второму закону Ньютона для системы тел:</span>
|
||
<span class="nb-i" style="font-style:normal"> <span class="nb-box">Δ<b>p</b> = <b>F</b><sub>внеш</sub>·Δt = (m₁+m₂)·<b>g</b>·Δt</span></span>
|
||
<span class="nb-i">За каждую секунду полёта суммарный импульс приобретает направленную <em>вертикально вниз</em> добавку. Значит, суммарный вектор импульса непрерывно изменяется.</span>
|
||
</div>
|
||
|
||
<div class="nb-step">
|
||
<b>3. Почему опыт всё равно верифицирует закон сохранения импульса?</b><br>
|
||
<span class="nb-i">Сила тяжести направлена строго вертикально → горизонтальная проекция внешней силы равна нулю:</span>
|
||
<span class="nb-i" style="font-style:normal"> <span class="nb-box">F<sub>внеш, x</sub> = 0 ⟹ p<sub>1x</sub> + p<sub>2x</sub> = const</span></span>
|
||
<span class="nb-i">Горизонтальные скорости шаров <em>не меняются</em> в течение всего полёта.</span>
|
||
<span class="nb-i">Горизонтальная дальность l = v<sub>x</sub> · t<sub>пад</sub>, причём <em>время падения одинаково</em> для обоих шаров (одна высота стола).</span>
|
||
<span class="nb-i">Следовательно, l ∝ v<sub>x</sub> ∝ p<sub>x</sub> — расстояния пропорциональны горизонтальным импульсам, которые и сохраняются.</span>
|
||
</div>
|
||
|
||
<!-- SVG диаграмма -->
|
||
<div style="margin:14px 0 6px;text-align:center">
|
||
<svg width="420" height="160" viewBox="0 0 420 160" style="max-width:100%;font-family:inherit">
|
||
<!-- стол -->
|
||
<rect x="0" y="68" width="120" height="6" fill="var(--pri)" rx="2"/>
|
||
<rect x="0" y="74" width="120" height="80" fill="rgba(29,78,216,.07)" rx="2"/>
|
||
<!-- пол -->
|
||
<line x1="120" y1="154" x2="420" y2="154" stroke="var(--border)" stroke-width="2"/>
|
||
<!-- вертикальная линия края стола -->
|
||
<line x1="120" y1="74" x2="120" y2="154" stroke="var(--border)" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||
<!-- траектория шар 1 (быстрый) -->
|
||
<path d="M120 71 Q210 71 310 154" fill="none" stroke="var(--pri)" stroke-width="2.2" stroke-dasharray="6,3"/>
|
||
<!-- траектория шар 2 (медленнее) -->
|
||
<path d="M120 71 Q175 71 240 154" fill="none" stroke="var(--acc)" stroke-width="2.2" stroke-dasharray="6,3"/>
|
||
<!-- точка удара -->
|
||
<circle cx="120" cy="71" r="5" fill="var(--warn)" stroke="#fff" stroke-width="1.5"/>
|
||
<!-- стрелка g -->
|
||
<line x1="380" y1="40" x2="380" y2="90" stroke="#ef4444" stroke-width="2"/>
|
||
<polygon points="380,95 375,83 385,83" fill="#ef4444"/>
|
||
<text x="387" y="72" font-size="13" fill="#ef4444" font-weight="700">g</text>
|
||
<!-- стрелка p_total (меняется) -->
|
||
<line x1="200" y1="95" x2="200" y2="130" stroke="#ef4444" stroke-width="1.5" stroke-dasharray="3,2"/>
|
||
<line x1="200" y1="95" x2="255" y2="95" stroke="var(--pri)" stroke-width="1.5"/>
|
||
<line x1="200" y1="95" x2="248" y2="127" stroke="#6d28d9" stroke-width="2"/>
|
||
<polygon points="248,132 241,122 252,120" fill="#6d28d9"/>
|
||
<text x="258" y="131" font-size="11" fill="#6d28d9" font-weight="700">p⃗∑</text>
|
||
<text x="257" y="93" font-size="10" fill="var(--pri)">p⃗<tspan font-size="9">∑x</tspan></text>
|
||
<text x="178" y="133" font-size="10" fill="#ef4444">Δp⃗<tspan font-size="9">∑</tspan></text>
|
||
<!-- метки шаров -->
|
||
<text x="315" y="150" font-size="11" fill="var(--pri)" font-weight="700">шар 1</text>
|
||
<text x="243" y="150" font-size="11" fill="var(--acc)" font-weight="700">шар 2</text>
|
||
<!-- удар -->
|
||
<text x="126" y="66" font-size="11" fill="var(--warn)" font-weight="700">удар</text>
|
||
</svg>
|
||
<div style="font-size:.78rem;color:var(--muted);margin-top:2px">
|
||
p⃗<sub>∑</sub> — суммарный вектор импульса нарастает вниз; горизонтальная составляющая p<sub>∑x</sub> постоянна
|
||
</div>
|
||
</div>
|
||
|
||
<div class="nb-ans" style="background:var(--ok-bg);border-color:var(--ok);color:#065f46">
|
||
<b>Вывод:</b> Суммарный <em>вектор</em> импульса системы изменяется под действием силы тяжести. Но его горизонтальная составляющая сохраняется во всё время полёта. Именно это свойство лежит в основе опыта: расстояния на столе отражают горизонтальные скорости, а горизонтальные импульсы не изменяются ни во время удара, ни после него.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- ══════════════════════════════════════════════════
|
||
ТАБ: ЗАДАЧИ (единый)
|
||
══════════════════════════════════════════════════ -->
|
||
<div class="content" id="tab-tasks">
|
||
|
||
<!-- Переключатель параграфов — карточки глав -->
|
||
<div class="para-selector">
|
||
<div class="psel-grid">
|
||
|
||
<!-- I. Кинематика §1–14 -->
|
||
<div class="psel-card psel-c1">
|
||
<div class="psel-card-hdr">
|
||
<span class="psel-card-title">Кинематика</span>
|
||
<span class="psel-card-sub">§1–14</span>
|
||
</div>
|
||
<div class="psel-card-pills">
|
||
<button class="para-pill active" data-para="p1" onclick="setParaTab('p1')" title="Механическое движение">§1</button>
|
||
<button class="para-pill" data-para="p2" onclick="setParaTab('p2')" title="Относительность движения">§2</button>
|
||
<button class="para-pill" data-para="p3" onclick="setParaTab('p3')" title="Скаляры и векторы">§3</button>
|
||
<button class="para-pill" data-para="p4" onclick="setParaTab('p4')" title="Проекции вектора">§4</button>
|
||
<button class="para-pill" data-para="p5" onclick="setParaTab('p5')" title="Путь и перемещение">§5</button>
|
||
<button class="para-pill" data-para="p6" onclick="setParaTab('p6')" title="Равномерное движение">§6</button>
|
||
<button class="para-pill" data-para="p7" onclick="setParaTab('p7')" title="Движение двух тел">§7</button>
|
||
<button class="para-pill" data-para="p8" onclick="setParaTab('p8')" title="Средняя скорость">§8</button>
|
||
<button class="para-pill" data-para="p9" onclick="setParaTab('p9')" title="Сложение скоростей">§9</button>
|
||
<button class="para-pill" data-para="p10" onclick="setParaTab('p10')" title="Ускорение">§10</button>
|
||
<button class="para-pill" data-para="p11" onclick="setParaTab('p11')" title="Равноускоренное движение: скорость">§11</button>
|
||
<button class="para-pill" data-para="p12" onclick="setParaTab('p12')" title="Равноускоренное движение: x(t)">§12</button>
|
||
<button class="para-pill" data-para="p13" onclick="setParaTab('p13')" title="Движение по окружности">§13</button>
|
||
<button class="para-pill" data-para="p14" onclick="setParaTab('p14')" title="Центростремительное ускорение">§14</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- II. Динамика §15–21 -->
|
||
<div class="psel-card psel-c2">
|
||
<div class="psel-card-hdr">
|
||
<span class="psel-card-title">Динамика</span>
|
||
<span class="psel-card-sub">§15–21</span>
|
||
</div>
|
||
<div class="psel-card-pills">
|
||
<button class="para-pill" data-para="p15" onclick="setParaTab('p15')" title="Первый закон Ньютона">§15</button>
|
||
<button class="para-pill" data-para="p16" onclick="setParaTab('p16')" title="Масса. Плотность. Сила тяжести">§16</button>
|
||
<button class="para-pill" data-para="p17" onclick="setParaTab('p17')" title="Второй закон Ньютона">§17</button>
|
||
<button class="para-pill" data-para="p18" onclick="setParaTab('p18')" title="Третий закон Ньютона">§18</button>
|
||
<button class="para-pill" data-para="p19" onclick="setParaTab('p19')" title="Деформация. Закон Гука">§19</button>
|
||
<button class="para-pill" data-para="p20" onclick="setParaTab('p20')" title="Силы трения">§20</button>
|
||
<button class="para-pill" data-para="p21" onclick="setParaTab('p21')" title="Движение под действием силы тяжести">§21</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- III. Тяготение §22–24 -->
|
||
<div class="psel-card psel-c3">
|
||
<div class="psel-card-hdr">
|
||
<span class="psel-card-title">Тяготение</span>
|
||
<span class="psel-card-sub">§22–24</span>
|
||
</div>
|
||
<div class="psel-card-pills">
|
||
<button class="para-pill" data-para="p22" onclick="setParaTab('p22')" title="Бросок под углом к горизонту">§22</button>
|
||
<button class="para-pill" data-para="p23" onclick="setParaTab('p23')" title="Закон всемирного тяготения">§23</button>
|
||
<button class="para-pill" data-para="p24" onclick="setParaTab('p24')" title="Вес тела. Невесомость">§24</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- IV. Статика §25–27 -->
|
||
<div class="psel-card psel-c4">
|
||
<div class="psel-card-hdr">
|
||
<span class="psel-card-title">Статика</span>
|
||
<span class="psel-card-sub">§25–27</span>
|
||
</div>
|
||
<div class="psel-card-pills">
|
||
<button class="para-pill" data-para="p25" onclick="setParaTab('p25')" title="Момент силы. Условия равновесия">§25</button>
|
||
<button class="para-pill" data-para="p26" onclick="setParaTab('p26')" title="Рычаги и блоки">§26</button>
|
||
<button class="para-pill" data-para="p27" onclick="setParaTab('p27')" title="Наклонная плоскость. КПД">§27</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- V. Гидростатика §28–30 -->
|
||
<div class="psel-card psel-c5">
|
||
<div class="psel-card-hdr">
|
||
<span class="psel-card-title">Гидростатика</span>
|
||
<span class="psel-card-sub">§28–30</span>
|
||
</div>
|
||
<div class="psel-card-pills">
|
||
<button class="para-pill" data-para="p28" onclick="setParaTab('p28')" title="Центр тяжести. Виды равновесия">§28</button>
|
||
<button class="para-pill" data-para="p29" onclick="setParaTab('p29')" title="Закон Архимеда. Плавание тел">§29</button>
|
||
<button class="para-pill" data-para="p30" onclick="setParaTab('p30')" title="Плавание судов. Воздухоплавание">§30</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- VI. Импульс & Энергия §31–36 -->
|
||
<div class="psel-card psel-c6">
|
||
<div class="psel-card-hdr">
|
||
<span class="psel-card-title">Импульс & Энергия</span>
|
||
<span class="psel-card-sub">§31–36</span>
|
||
</div>
|
||
<div class="psel-card-pills">
|
||
<button class="para-pill" data-para="p31" onclick="setParaTab('p31')" title="Импульс тела">§31</button>
|
||
<button class="para-pill" data-para="p32" onclick="setParaTab('p32')" title="Закон сохранения импульса">§32</button>
|
||
<button class="para-pill" data-para="p33" onclick="setParaTab('p33')" title="Механическая работа. Мощность">§33</button>
|
||
<button class="para-pill" data-para="p34" onclick="setParaTab('p34')" title="Потенциальная энергия">§34</button>
|
||
<button class="para-pill" data-para="p35" onclick="setParaTab('p35')" title="Кинетическая энергия">§35</button>
|
||
<button class="para-pill" data-para="p36" onclick="setParaTab('p36')" title="Закон сохранения энергии">§36</button>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- Сложные задачи -->
|
||
<button class="para-pill psel-hard-card" data-para="hard" onclick="setParaTab('hard')">
|
||
<div class="psel-hard-icon"><i class="fas fa-bolt"></i></div>
|
||
<div class="psel-hard-body">
|
||
<div class="psel-hard-title">Сложные задачи</div>
|
||
<div class="psel-hard-sub">Все темы · §1–36</div>
|
||
</div>
|
||
<div class="psel-hard-arrow"><i class="fas fa-arrow-right"></i></div>
|
||
</button>
|
||
</div>
|
||
|
||
<!-- §1 -->
|
||
<div id="ptab-p1" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp1">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp1">0</span> / <span id="maxp1">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p1')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp1" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp1"></div>
|
||
<div id="taskAreap1"></div>
|
||
<div class="feedback" id="fbp1"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp1" onclick="nextTask('p1')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump1">
|
||
<h2>§1 — готово!</h2>
|
||
<div class="big-score" id="sumScorep1"></div>
|
||
<div class="sum-grade" id="sumGradep1"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p1')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p2')">→ §2</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §2 -->
|
||
<div id="ptab-p2" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp2">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp2">0</span> / <span id="maxp2">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p2')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp2" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp2"></div>
|
||
<div id="taskAreap2"></div>
|
||
<div class="feedback" id="fbp2"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp2" onclick="nextTask('p2')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump2">
|
||
<h2>§2 — готово!</h2>
|
||
<div class="big-score" id="sumScorep2"></div>
|
||
<div class="sum-grade" id="sumGradep2"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p2')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p3')">→ §3</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §3 -->
|
||
<div id="ptab-p3" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp3">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp3">0</span> / <span id="maxp3">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p3')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp3" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp3"></div>
|
||
<div id="taskAreap3"></div>
|
||
<div class="feedback" id="fbp3"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp3" onclick="nextTask('p3')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump3">
|
||
<h2>§3 — готово!</h2>
|
||
<div class="big-score" id="sumScorep3"></div>
|
||
<div class="sum-grade" id="sumGradep3"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p3')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p4')">→ §4</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §4 -->
|
||
<div id="ptab-p4" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp4">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp4">0</span> / <span id="maxp4">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p4')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp4" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp4"></div>
|
||
<div id="taskAreap4"></div>
|
||
<div class="feedback" id="fbp4"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp4" onclick="nextTask('p4')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump4">
|
||
<h2>§4 — готово!</h2>
|
||
<div class="big-score" id="sumScorep4"></div>
|
||
<div class="sum-grade" id="sumGradep4"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p4')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p5')">→ §5</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §5 -->
|
||
<div id="ptab-p5" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp5">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp5">0</span> / <span id="maxp5">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p5')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp5" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp5"></div>
|
||
<div id="taskAreap5"></div>
|
||
<div class="feedback" id="fbp5"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp5" onclick="nextTask('p5')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump5">
|
||
<h2>§5 — готово!</h2>
|
||
<div class="big-score" id="sumScorep5"></div>
|
||
<div class="sum-grade" id="sumGradep5"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p5')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p6')">→ §6</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §6 -->
|
||
<div id="ptab-p6" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp6">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp6">0</span> / <span id="maxp6">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p6')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp6" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp6"></div>
|
||
<div id="taskAreap6"></div>
|
||
<div class="feedback" id="fbp6"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp6" onclick="nextTask('p6')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump6">
|
||
<h2>§6 — готово!</h2>
|
||
<div class="big-score" id="sumScorep6"></div>
|
||
<div class="sum-grade" id="sumGradep6"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p6')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p7')">→ §7</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §7 -->
|
||
<div id="ptab-p7" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp7">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp7">0</span> / <span id="maxp7">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p7')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp7" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp7"></div>
|
||
<div id="taskAreap7"></div>
|
||
<div class="feedback" id="fbp7"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp7" onclick="nextTask('p7')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump7">
|
||
<h2>§7 — готово!</h2>
|
||
<div class="big-score" id="sumScorep7"></div>
|
||
<div class="sum-grade" id="sumGradep7"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p7')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p8')">→ §8</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §8 -->
|
||
<div id="ptab-p8" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp8">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp8">0</span> / <span id="maxp8">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p8')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp8" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp8"></div>
|
||
<div id="taskAreap8"></div>
|
||
<div class="feedback" id="fbp8"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp8" onclick="nextTask('p8')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump8">
|
||
<h2>§8 — готово!</h2>
|
||
<div class="big-score" id="sumScorep8"></div>
|
||
<div class="sum-grade" id="sumGradep8"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p8')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p9')">→ §9</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §9 -->
|
||
<div id="ptab-p9" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp9">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp9">0</span> / <span id="maxp9">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p9')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp9" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp9"></div>
|
||
<div id="taskAreap9"></div>
|
||
<div class="feedback" id="fbp9"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp9" onclick="nextTask('p9')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump9">
|
||
<h2>§9 — готово!</h2>
|
||
<div class="big-score" id="sumScorep9"></div>
|
||
<div class="sum-grade" id="sumGradep9"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p9')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p10')">→ §10</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §10 -->
|
||
<div id="ptab-p10" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp10">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp10">0</span> / <span id="maxp10">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p10')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp10" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp10"></div>
|
||
<div id="taskAreap10"></div>
|
||
<div class="feedback" id="fbp10"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp10" onclick="nextTask('p10')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump10">
|
||
<h2>§10 — готово!</h2>
|
||
<div class="big-score" id="sumScorep10"></div>
|
||
<div class="sum-grade" id="sumGradep10"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p10')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p11')">→ §11</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §11 -->
|
||
<div id="ptab-p11" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp11">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp11">0</span> / <span id="maxp11">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p11')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp11" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp11"></div>
|
||
<div id="taskAreap11"></div>
|
||
<div class="feedback" id="fbp11"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp11" onclick="nextTask('p11')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump11">
|
||
<h2>§11 — готово!</h2>
|
||
<div class="big-score" id="sumScorep11"></div>
|
||
<div class="sum-grade" id="sumGradep11"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p11')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p12')">→ §12</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §12 -->
|
||
<div id="ptab-p12" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp12">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp12">0</span> / <span id="maxp12">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p12')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp12" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp12"></div>
|
||
<div id="taskAreap12"></div>
|
||
<div class="feedback" id="fbp12"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp12" onclick="nextTask('p12')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump12">
|
||
<h2>§12 — готово!</h2>
|
||
<div class="big-score" id="sumScorep12"></div>
|
||
<div class="sum-grade" id="sumGradep12"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p12')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p13')">→ §13</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §13 -->
|
||
<div id="ptab-p13" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp13">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp13">0</span> / <span id="maxp13">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p13')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp13" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp13"></div>
|
||
<div id="taskAreap13"></div>
|
||
<div class="feedback" id="fbp13"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp13" onclick="nextTask('p13')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump13">
|
||
<h2>§13 — готово!</h2>
|
||
<div class="big-score" id="sumScorep13"></div>
|
||
<div class="sum-grade" id="sumGradep13"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p13')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p14')">→ §14</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §14 -->
|
||
<div id="ptab-p14" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp14">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp14">0</span> / <span id="maxp14">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p14')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp14" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp14"></div>
|
||
<div id="taskAreap14"></div>
|
||
<div class="feedback" id="fbp14"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp14" onclick="nextTask('p14')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump14">
|
||
<h2>§14 — готово!</h2>
|
||
<div class="big-score" id="sumScorep14"></div>
|
||
<div class="sum-grade" id="sumGradep14"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p14')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p15')">→ §15</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §15 -->
|
||
<div id="ptab-p15">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp15">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp15">0</span> / <span id="maxp15">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p15')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp15" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp15"></div>
|
||
<div id="taskAreap15"></div>
|
||
<div class="feedback" id="fbp15"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp15" onclick="nextTask('p15')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump15">
|
||
<h2>§15 — готово!</h2>
|
||
<div class="big-score" id="sumScorep15"></div>
|
||
<div class="sum-grade" id="sumGradep15"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p15')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p16')">→ §16</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §16 -->
|
||
<div id="ptab-p16" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp16">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp16">0</span> / <span id="maxp16">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p16')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp16" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp16"></div>
|
||
<div id="taskAreap16"></div>
|
||
<div class="feedback" id="fbp16"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp16" onclick="nextTask('p16')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump16">
|
||
<h2>§16 — готово!</h2>
|
||
<div class="big-score" id="sumScorep16"></div>
|
||
<div class="sum-grade" id="sumGradep16"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p16')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p17')">→ §17</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §17 -->
|
||
<div id="ptab-p17" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp17">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp17">0</span> / <span id="maxp17">9</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p17')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp17" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp17"></div>
|
||
<div id="taskAreap17"></div>
|
||
<div class="feedback" id="fbp17"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp17" onclick="nextTask('p17')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump17">
|
||
<h2>§17 — готово!</h2>
|
||
<div class="big-score" id="sumScorep17"></div>
|
||
<div class="sum-grade" id="sumGradep17"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p17')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p18')">→ §18</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §18 -->
|
||
<div id="ptab-p18" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp18">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp18">0</span> / <span id="maxp18">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p18')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp18" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp18"></div>
|
||
<div id="taskAreap18"></div>
|
||
<div class="feedback" id="fbp18"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp18" onclick="nextTask('p18')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump18">
|
||
<h2>§18 — готово!</h2>
|
||
<div class="big-score" id="sumScorep18"></div>
|
||
<div class="sum-grade" id="sumGradep18"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p18')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p19')">→ §19</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §19 -->
|
||
<div id="ptab-p19" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp19">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp19">0</span> / <span id="maxp19">9</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p19')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp19" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp19"></div>
|
||
<div id="taskAreap19"></div>
|
||
<div class="feedback" id="fbp19"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp19" onclick="nextTask('p19')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump19">
|
||
<h2>§19 — готово!</h2>
|
||
<div class="big-score" id="sumScorep19"></div>
|
||
<div class="sum-grade" id="sumGradep19"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p19')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p20')">→ §20</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §20 -->
|
||
<div id="ptab-p20" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp20">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp20">0</span> / <span id="maxp20">9</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p20')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp20" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp20"></div>
|
||
<div id="taskAreap20"></div>
|
||
<div class="feedback" id="fbp20"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp20" onclick="nextTask('p20')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump20">
|
||
<h2>§20 — готово!</h2>
|
||
<div class="big-score" id="sumScorep20"></div>
|
||
<div class="sum-grade" id="sumGradep20"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p20')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p21')">→ §21</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §21 -->
|
||
<div id="ptab-p21" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp21">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp21">0</span> / <span id="maxp21">9</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p21')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp21" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp21"></div>
|
||
<div id="taskAreap21"></div>
|
||
<div class="feedback" id="fbp21"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp21" onclick="nextTask('p21')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump21">
|
||
<h2>§21 — готово!</h2>
|
||
<div class="big-score" id="sumScorep21"></div>
|
||
<div class="sum-grade" id="sumGradep21"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p21')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p22')">→ §22</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §22 -->
|
||
<div id="ptab-p22" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp22">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp22">0</span> / <span id="maxp22">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p22')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp22" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp22"></div>
|
||
<div id="taskAreap22"></div>
|
||
<div class="feedback" id="fbp22"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp22" onclick="nextTask('p22')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump22">
|
||
<h2>§22 — готово!</h2>
|
||
<div class="big-score" id="sumScorep22"></div>
|
||
<div class="sum-grade" id="sumGradep22"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p22')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p23')">→ §23</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §23 -->
|
||
<div id="ptab-p23" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp23">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp23">0</span> / <span id="maxp23">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p23')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp23" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp23"></div>
|
||
<div id="taskAreap23"></div>
|
||
<div class="feedback" id="fbp23"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp23" onclick="nextTask('p23')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump23">
|
||
<h2>§23 — готово!</h2>
|
||
<div class="big-score" id="sumScorep23"></div>
|
||
<div class="sum-grade" id="sumGradep23"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p23')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p24')">→ §24</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §24 -->
|
||
<div id="ptab-p24" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp24">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp24">0</span> / <span id="maxp24">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p24')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp24" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp24"></div>
|
||
<div id="taskAreap24"></div>
|
||
<div class="feedback" id="fbp24"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp24" onclick="nextTask('p24')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump24">
|
||
<h2>§24 — готово!</h2>
|
||
<div class="big-score" id="sumScorep24"></div>
|
||
<div class="sum-grade" id="sumGradep24"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p24')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p25')">→ §25</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §25 -->
|
||
<div id="ptab-p25" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp25">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp25">0</span> / <span id="maxp25">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p25')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp25" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp25"></div>
|
||
<div id="taskAreap25"></div>
|
||
<div class="feedback" id="fbp25"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp25" onclick="nextTask('p25')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump25">
|
||
<h2>§25 — готово!</h2>
|
||
<div class="big-score" id="sumScorep25"></div>
|
||
<div class="sum-grade" id="sumGradep25"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p25')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p26')">→ §26</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §26 -->
|
||
<div id="ptab-p26" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp26">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp26">0</span> / <span id="maxp26">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p26')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp26" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp26"></div>
|
||
<div id="taskAreap26"></div>
|
||
<div class="feedback" id="fbp26"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp26" onclick="nextTask('p26')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump26">
|
||
<h2>§26 — готово!</h2>
|
||
<div class="big-score" id="sumScorep26"></div>
|
||
<div class="sum-grade" id="sumGradep26"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p26')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p27')">→ §27</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §27 -->
|
||
<div id="ptab-p27" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp27">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp27">0</span> / <span id="maxp27">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p27')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp27" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp27"></div>
|
||
<div id="taskAreap27"></div>
|
||
<div class="feedback" id="fbp27"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp27" onclick="nextTask('p27')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump27">
|
||
<h2>§27 — готово!</h2>
|
||
<div class="big-score" id="sumScorep27"></div>
|
||
<div class="sum-grade" id="sumGradep27"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p27')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p28')">→ §28</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §28 -->
|
||
<div id="ptab-p28" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp28">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp28">0</span> / <span id="maxp28">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p28')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp28" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp28"></div>
|
||
<div id="taskAreap28"></div>
|
||
<div class="feedback" id="fbp28"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp28" onclick="nextTask('p28')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump28">
|
||
<h2>§28 — готово!</h2>
|
||
<div class="big-score" id="sumScorep28"></div>
|
||
<div class="sum-grade" id="sumGradep28"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p28')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p29')">→ §29</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §29 -->
|
||
<div id="ptab-p29" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp29">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp29">0</span> / <span id="maxp29">9</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p29')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp29" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp29"></div>
|
||
<div id="taskAreap29"></div>
|
||
<div class="feedback" id="fbp29"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp29" onclick="nextTask('p29')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump29">
|
||
<h2>§29 — готово!</h2>
|
||
<div class="big-score" id="sumScorep29"></div>
|
||
<div class="sum-grade" id="sumGradep29"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p29')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p30')">→ §30</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §30 -->
|
||
<div id="ptab-p30" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp30">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp30">0</span> / <span id="maxp30">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p30')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp30" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp30"></div>
|
||
<div id="taskAreap30"></div>
|
||
<div class="feedback" id="fbp30"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp30" onclick="nextTask('p30')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump30">
|
||
<h2>§30 — готово!</h2>
|
||
<div class="big-score" id="sumScorep30"></div>
|
||
<div class="sum-grade" id="sumGradep30"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p30')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p31')">→ §31</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §31 -->
|
||
<div id="ptab-p31">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp31">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp31">0</span> / <span id="maxp31">12</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p31')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp31" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp31"></div>
|
||
<div id="taskAreap31"></div>
|
||
<div class="feedback" id="fbp31"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp31" onclick="nextTask('p31')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump31">
|
||
<h2>§31 — готово!</h2>
|
||
<div class="big-score" id="sumScorep31"></div>
|
||
<div class="sum-grade" id="sumGradep31"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p31')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p32')">→ §32</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §32 -->
|
||
<div id="ptab-p32" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp32">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp32">0</span> / <span id="maxp32">12</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p32')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp32" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp32"></div>
|
||
<div id="taskAreap32"></div>
|
||
<div class="feedback" id="fbp32"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp32" onclick="nextTask('p32')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump32">
|
||
<h2>§32 — готово!</h2>
|
||
<div class="big-score" id="sumScorep32"></div>
|
||
<div class="sum-grade" id="sumGradep32"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p32')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p33')">→ §33</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §33 -->
|
||
<div id="ptab-p33" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp33">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp33">0</span> / <span id="maxp33">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p33')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp33" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp33"></div>
|
||
<div id="taskAreap33"></div>
|
||
<div class="feedback" id="fbp33"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp33" onclick="nextTask('p33')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump33">
|
||
<h2>§33 — готово!</h2>
|
||
<div class="big-score" id="sumScorep33"></div>
|
||
<div class="sum-grade" id="sumGradep33"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p33')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p34')">→ §34</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §34 -->
|
||
<div id="ptab-p34" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp34">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp34">0</span> / <span id="maxp34">9</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p34')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp34" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp34"></div>
|
||
<div id="taskAreap34"></div>
|
||
<div class="feedback" id="fbp34"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp34" onclick="nextTask('p34')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump34">
|
||
<h2>§34 — готово!</h2>
|
||
<div class="big-score" id="sumScorep34"></div>
|
||
<div class="sum-grade" id="sumGradep34"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p34')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p35')">→ §35</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §35 -->
|
||
<div id="ptab-p35" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp35">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp35">0</span> / <span id="maxp35">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p35')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp35" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp35"></div>
|
||
<div id="taskAreap35"></div>
|
||
<div class="feedback" id="fbp35"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp35" onclick="nextTask('p35')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump35">
|
||
<h2>§35 — готово!</h2>
|
||
<div class="big-score" id="sumScorep35"></div>
|
||
<div class="sum-grade" id="sumGradep35"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p35')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('p36')">→ §36</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- §36 -->
|
||
<div id="ptab-p36" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okp36">0</span></div>
|
||
<div class="chip chip-tot"><span id="curp36">0</span> / <span id="maxp36">8</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('p36')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="progp36" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotsp36"></div>
|
||
<div id="taskAreap36"></div>
|
||
<div class="feedback" id="fbp36"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnp36" onclick="nextTask('p36')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sump36">
|
||
<h2>§36 — готово!</h2>
|
||
<div class="big-score" id="sumScorep36"></div>
|
||
<div class="sum-grade" id="sumGradep36"></div>
|
||
<div class="sum-btns">
|
||
<button class="btn btn-pri" onclick="resetTasks('p36')"><i class="fas fa-rotate-right"></i> Ещё раз</button>
|
||
<button class="btn btn-ghost" onclick="setParaTab('hard')">→ Сложные</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Сложные -->
|
||
<div id="ptab-hard" style="display:none">
|
||
<div class="score-bar">
|
||
<div class="chip chip-ok"><i class="fas fa-check"></i> <span id="okhard">0</span></div>
|
||
<div class="chip chip-tot"><span id="curhard">0</span> / <span id="maxhard">12</span></div>
|
||
<button class="btn btn-ghost" onclick="resetTasks('hard')" style="padding:6px 13px;font-size:.74rem"><i class="fas fa-rotate-right"></i> Заново</button>
|
||
</div>
|
||
<div class="prog-wrap"><div class="prog-fill" id="proghard" style="width:0%"></div></div>
|
||
<div class="nav-dots" id="navDotshard"></div>
|
||
<div id="taskAreahard"></div>
|
||
<div class="feedback" id="fbhard"></div>
|
||
<div style="display:flex;gap:10px;margin-top:10px;justify-content:flex-end">
|
||
<button class="btn btn-next" id="nextBtnhard" onclick="nextTask('hard')" style="display:none"><i class="fas fa-arrow-right"></i> Следующая</button>
|
||
</div>
|
||
<div class="summary" id="sumhard">
|
||
<h2>Сложные задачи — готово!</h2>
|
||
<div class="big-score" id="sumScorehard"></div>
|
||
<div class="sum-grade" id="sumGradehard"></div>
|
||
<div class="sum-btns"><button class="btn btn-pri" onclick="resetTasks('hard')"><i class="fas fa-rotate-right"></i> Ещё раз</button></div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
// ══════════════════════════════════════════════
|
||
// ПУЛЫ ЗАДАЧ
|
||
// ══════════════════════════════════════════════
|
||
|
||
const TASKS_P31 = [
|
||
{
|
||
q: "Тело массой $m = 2\\,\\text{кг}$ движется со скоростью $v = 5\\,\\text{м/с}$. Найдите модуль импульса тела.",
|
||
hint: "Используйте формулу $p = mv$.",
|
||
unit: "кг·м/с", a: 10,
|
||
ex: "$p = mv = 2\\,\\text{кг} \\cdot 5\\,\\text{м/с} = 10\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Мяч массой $m = 0{,}5\\,\\text{кг}$ движется со скоростью $v = 8\\,\\text{м/с}$. Найдите его импульс.",
|
||
hint: "$p = mv$",
|
||
unit: "кг·м/с", a: 4,
|
||
ex: "$p = 0{,}5 \\cdot 8 = 4\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Человек массой $m = 70\\,\\text{кг}$ идёт со скоростью $v = 3\\,\\text{м/с}$. Найдите его импульс.",
|
||
hint: "$p = mv$",
|
||
unit: "кг·м/с", a: 210,
|
||
ex: "$p = 70 \\cdot 3 = 210\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 4\\,\\text{кг}$ имеет импульс $p = 12\\,\\text{кг}{\\cdot}\\text{м/с}$. Найдите скорость тела.",
|
||
hint: "Из $p = mv$ выразите $v = p/m$.",
|
||
unit: "м/с", a: 3,
|
||
ex: "$v = \\dfrac{p}{m} = \\dfrac{12}{4} = 3\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело движется со скоростью $v = 5\\,\\text{м/с}$ и имеет импульс $p = 20\\,\\text{кг}{\\cdot}\\text{м/с}$. Найдите массу тела.",
|
||
hint: "$m = p/v$",
|
||
unit: "кг", a: 4,
|
||
ex: "$m = \\dfrac{p}{v} = \\dfrac{20}{5} = 4\\,\\text{кг}$"
|
||
},
|
||
{
|
||
q: "На тело действует постоянная сила $F = 20\\,\\text{Н}$ в течение $\\Delta t = 3\\,\\text{с}$. Найдите изменение импульса тела.",
|
||
hint: "$\\Delta p = F\\,\\Delta t$",
|
||
unit: "кг·м/с", a: 60,
|
||
ex: "$\\Delta p = F\\,\\Delta t = 20 \\cdot 3 = 60\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Пуля при выстреле испытывает силу $F = 500\\,\\text{Н}$ в течение $\\Delta t = 0{,}1\\,\\text{с}$. Найдите импульс силы.",
|
||
hint: "Импульс силы = $F\\,\\Delta t$.",
|
||
unit: "Н·с", a: 50,
|
||
ex: "$F\\,\\Delta t = 500 \\cdot 0{,}1 = 50\\,\\text{Н}{\\cdot}\\text{с}$"
|
||
},
|
||
{
|
||
q: "Импульс тела изменился на $\\Delta p = 200\\,\\text{кг}{\\cdot}\\text{м/с}$ за время $\\Delta t = 4\\,\\text{с}$. Найдите действующую силу.",
|
||
hint: "$F = \\Delta p / \\Delta t$",
|
||
unit: "Н", a: 50,
|
||
ex: "$F = \\dfrac{\\Delta p}{\\Delta t} = \\dfrac{200}{4} = 50\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Мяч массой $m = 0{,}2\\,\\text{кг}$ падает с высоты $h = 5\\,\\text{м}$ и упруго отскакивает от пола ($g = 10\\,\\text{м/с}^2$). Найдите модуль изменения импульса при ударе.",
|
||
hint: "$v = \\sqrt{2gh}$; при упругом отскоке $|\\Delta p| = 2mv$.",
|
||
unit: "кг·м/с", a: 4,
|
||
ex: "$v = \\sqrt{2\\cdot10\\cdot5} = 10\\,\\text{м/с}$; $|\\Delta p| = 2 \\cdot 0{,}2 \\cdot 10 = 4\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Автомобиль массой $m = 800\\,\\text{кг}$ движется со скоростью $v = 10\\,\\text{м/с}$ и тормозит до остановки. Найдите модуль изменения импульса.",
|
||
hint: "$|\\Delta p| = m|\\Delta v| = m \\cdot v$",
|
||
unit: "кг·м/с", a: 8000,
|
||
ex: "$|\\Delta p| = 800 \\cdot 10 = 8000\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 4\\,\\text{кг}$ разгоняется с $v_0 = 2\\,\\text{м/с}$ до $v_1 = 8\\,\\text{м/с}$ за $\\Delta t = 3\\,\\text{с}$. Найдите действующую силу.",
|
||
hint: "$F = m\\,\\Delta v / \\Delta t$",
|
||
unit: "Н", a: 8,
|
||
ex: "$F = \\dfrac{m\\,\\Delta v}{\\Delta t} = \\dfrac{4 \\cdot 6}{3} = 8\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Камень массой $m = 0{,}01\\,\\text{кг}$ летит со скоростью $v = 20\\,\\text{м/с}$ и застревает в стене (останавливается). Найдите модуль его изменения импульса.",
|
||
hint: "$|\\Delta p| = mv - 0 = mv$",
|
||
unit: "кг·м/с", a: 0.2,
|
||
ex: "$|\\Delta p| = mv = 0{,}01 \\cdot 20 = 0{,}2\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
];
|
||
|
||
const TASKS_P32 = [
|
||
{
|
||
q: "Тело массой $m_1 = 3\\,\\text{кг}$ движется со скоростью $v_1 = 4\\,\\text{м/с}$ и наталкивается на покоящееся тело массой $m_2 = 9\\,\\text{кг}$. Абсолютно неупругий удар. Найдите скорость тел после удара.",
|
||
hint: "$m_1 v_1 = (m_1+m_2)v$",
|
||
unit: "м/с", a: 1,
|
||
ex: "$v = \\dfrac{m_1 v_1}{m_1+m_2} = \\dfrac{3 \\cdot 4}{12} = 1\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m_1 = 4\\,\\text{кг}$ ($v_1 = 6\\,\\text{м/с}$) ударяет по покоящемуся телу $m_2 = 2\\,\\text{кг}$. Абсолютно неупругий удар. Скорость после удара?",
|
||
hint: "$m_1 v_1 = (m_1+m_2)v$",
|
||
unit: "м/с", a: 4,
|
||
ex: "$v = \\dfrac{4 \\cdot 6}{6} = 4\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Два одинаковых тела по $m = 5\\,\\text{кг}$ движутся навстречу с одинаковыми скоростями $v = 4\\,\\text{м/с}$. Абсолютно неупругий удар. Скорость после удара?",
|
||
hint: "Векторы импульсов равны и противоположны.",
|
||
unit: "м/с", a: 0,
|
||
ex: "$m \\cdot v - m \\cdot v = 2m \\cdot v_{\\text{после}} \\Rightarrow v_{\\text{после}} = 0\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тела массами $m_1 = 6\\,\\text{кг}$ ($v_1 = 3\\,\\text{м/с}$) и $m_2 = 4\\,\\text{кг}$ ($v_2 = 3\\,\\text{м/с}$ навстречу) сталкиваются абсолютно неупруго. Скорость после удара?",
|
||
hint: "Оси: $v_1 > 0$, $v_2 < 0$. Применить ЗСИ.",
|
||
unit: "м/с", a: 0.6,
|
||
ex: "$v = \\dfrac{6\\cdot3 - 4\\cdot3}{6+4} = \\dfrac{18-12}{10} = 0{,}6\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Пушка массой $M = 200\\,\\text{кг}$ неподвижно стоит на платформе. Снаряд массой $m = 4\\,\\text{кг}$ вылетает со скоростью $v = 500\\,\\text{м/с}$. Найдите скорость отката пушки с платформой.",
|
||
hint: "До выстрела система покоилась: $p = 0$. $0 = mv + Mv_1$.",
|
||
unit: "м/с", a: 10,
|
||
ex: "$v_1 = \\dfrac{mv}{M} = \\dfrac{4 \\cdot 500}{200} = 10\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Два конькобёжца стоят на льду неподвижно. Масса первого $m_1 = 50\\,\\text{кг}$, второго $m_2 = 30\\,\\text{кг}$. Они отталкиваются, и первый приобретает скорость $v_1 = 0{,}6\\,\\text{м/с}$. Найдите скорость второго.",
|
||
hint: "$p_0 = 0$: $m_1 v_1 + m_2 v_2 = 0$.",
|
||
unit: "м/с", a: 1,
|
||
ex: "$v_2 = \\dfrac{m_1 v_1}{m_2} = \\dfrac{50 \\cdot 0{,}6}{30} = 1\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Лодка с мальчиком ($m_1{+}m_2 = 140\\,\\text{кг}$) движется со скоростью $v_0 = 1{,}5\\,\\text{м/с}$. Мальчик ($m_2 = 40\\,\\text{кг}$) прыгает вперёд (в направлении движения) со скоростью $v_2 = 2{,}0\\,\\text{м/с}$ (от берега). Найдите скорость лодки после прыжка.",
|
||
hint: "$(m_1+m_2)v_0 = m_1 v_1 + m_2 v_2$, масса лодки $m_1=100\\,\\text{кг}$.",
|
||
unit: "м/с", a: 1.3,
|
||
ex: "$v_1 = \\dfrac{140\\cdot1{,}5 - 40\\cdot2{,}0}{100} = \\dfrac{210-80}{100} = 1{,}3\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Орудие с платформой ($M = 200\\,\\text{кг}$) неподвижно. Снаряд $m = 10\\,\\text{кг}$ вылетает со скоростью $v = 300\\,\\text{м/с}$. Найдите скорость отката орудия с платформой.",
|
||
hint: "$0 = mv + Mv_1$",
|
||
unit: "м/с", a: 15,
|
||
ex: "$v_1 = \\dfrac{mv}{M} = \\dfrac{10\\cdot300}{200} = 15\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Ракета стартует с нуля. После сгорания топлива масса ракеты $m_1 = 75\\,\\text{кг}$, масса выброшенных газов $m_2 = 25\\,\\text{кг}$, скорость газов $v_2 = 300\\,\\text{м/с}$ (назад). Найдите скорость ракеты.",
|
||
hint: "$p_0 = 0$: $m_1 v_1 = m_2 v_2$.",
|
||
unit: "м/с", a: 100,
|
||
ex: "$v_1 = \\dfrac{m_2 v_2}{m_1} = \\dfrac{25 \\cdot 300}{75} = 100\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Две тележки сталкиваются: $m_1 = 6\\,\\text{кг}$, $v_1 = 4\\,\\text{м/с}$; $m_2 = 2\\,\\text{кг}$, $v_2 = 2\\,\\text{м/с}$ (навстречу). Абсолютно неупругий удар. Скорость после удара?",
|
||
hint: "Ось $Ox$ — вдоль $v_1$. ЗСИ в проекции.",
|
||
unit: "м/с", a: 2.5,
|
||
ex: "$v = \\dfrac{6\\cdot4 - 2\\cdot2}{6+2} = \\dfrac{24-4}{8} = 2{,}5\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Человек стоит на тележке. Суммарная масса системы $70\\,\\text{кг}$ (масса камня $10\\,\\text{кг}$ входит). Из покоя человек бросает камень со скоростью $v = 6\\,\\text{м/с}$. Найдите скорость тележки с человеком после броска.",
|
||
hint: "$p_0=0$: $m_{\\text{кам}}v + m_{\\text{чел+тел}}v_1 = 0$.",
|
||
unit: "м/с", a: 1,
|
||
ex: "$v_1 = \\dfrac{10\\cdot6}{60} = 1\\,\\text{м/с}$ (в сторону, обратную броску)"
|
||
},
|
||
{
|
||
q: "Вагон массой $m_1 = 20\\,\\text{т}$ движется со скоростью $v_1 = 0{,}3\\,\\text{м/с}$ и сцепляется с неподвижным вагоном $m_2 = 10\\,\\text{т}$. Найдите скорость вагонов после сцепки.",
|
||
hint: "Абсолютно неупругий удар. $m_1 v_1 = (m_1+m_2)v$.",
|
||
unit: "м/с", a: 0.2,
|
||
ex: "$v = \\dfrac{20 \\cdot 0{,}3}{30} = 0{,}2\\,\\text{м/с}$"
|
||
},
|
||
];
|
||
|
||
const TASKS_HARD = [
|
||
// ── §31 ──────────────────────────────────────────
|
||
{
|
||
para: "§31",
|
||
q: "Шайба массой $m = 0{,}2\\,\\text{кг}$ летит со скоростью $v_1 = 6\\,\\text{м/с}$ и ударяется о борт, отскакивая в обратном направлении со скоростью $v_2 = 4\\,\\text{м/с}$. Время удара $\\Delta t = 0{,}01\\,\\text{с}$. Найдите среднюю силу борта на шайбу.",
|
||
hint: "$|\\Delta p| = m(v_1+v_2)$, затем $F = |\\Delta p|/\\Delta t$.",
|
||
unit: "Н", a: 200,
|
||
ex: "$F = \\dfrac{m(v_1+v_2)}{\\Delta t} = \\dfrac{0{,}2\\cdot10}{0{,}01} = 200\\,\\text{Н}$"
|
||
},
|
||
{
|
||
para: "§31",
|
||
q: "Автомобиль массой $m = 1200\\,\\text{кг}$ тормозит: скорость уменьшается с $v_0 = 20\\,\\text{м/с}$ до $v = 8\\,\\text{м/с}$ за $t = 6\\,\\text{с}$. Найдите силу торможения.",
|
||
hint: "$F = m|\\Delta v|/\\Delta t$.",
|
||
unit: "Н", a: 2400,
|
||
ex: "$F = \\dfrac{m(v_0-v)}{t} = \\dfrac{1200\\cdot12}{6} = 2400\\,\\text{Н}$"
|
||
},
|
||
{
|
||
para: "§31",
|
||
q: "Молоток массой $m = 2\\,\\text{кг}$ ударяет по гвоздю со скоростью $v = 8\\,\\text{м/с}$ и останавливается за $\\Delta t = 0{,}004\\,\\text{с}$. Найдите среднюю силу удара.",
|
||
hint: "$F = mv/\\Delta t$.",
|
||
unit: "Н", a: 4000,
|
||
ex: "$F = \\dfrac{mv}{\\Delta t} = \\dfrac{2\\cdot8}{0{,}004} = 4000\\,\\text{Н}$"
|
||
},
|
||
{
|
||
para: "§31",
|
||
q: "Мяч массой $m = 0{,}4\\,\\text{кг}$ падает с высоты $h_1 = 3{,}2\\,\\text{м}$ и отскакивает до высоты $h_2 = 0{,}8\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите модуль изменения импульса при ударе.",
|
||
hint: "$v_1 = \\sqrt{2gh_1}$, $v_2 = \\sqrt{2gh_2}$; $|\\Delta p| = m(v_1+v_2)$.",
|
||
unit: "кг·м/с", a: 4.8,
|
||
ex: "$v_1=8\\,\\text{м/с}$; $v_2=4\\,\\text{м/с}$; $|\\Delta p|=0{,}4\\cdot12=4{,}8\\,\\text{кг}{\\cdot}\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§31",
|
||
q: "Тело массой $m = 5\\,\\text{кг}$ движется со скоростью $v_0 = 2\\,\\text{м/с}$. На него действует сила $F = 15\\,\\text{Н}$ в направлении движения в течение $t = 4\\,\\text{с}$. Найдите конечную скорость тела.",
|
||
hint: "$\\Delta p = Ft$; $v = v_0 + Ft/m$.",
|
||
unit: "м/с", a: 14,
|
||
ex: "$v = 2 + \\dfrac{15\\cdot4}{5} = 2+12 = 14\\,\\text{м/с}$"
|
||
},
|
||
// ── §32 ──────────────────────────────────────────
|
||
{
|
||
para: "§32",
|
||
q: "Пуля массой $m = 0{,}01\\,\\text{кг}$ летит со скоростью $v = 400\\,\\text{м/с}$ и застревает в деревянном брусе массой $M = 3{,}99\\,\\text{кг}$. Найдите скорость бруса с пулей после удара.",
|
||
hint: "Абсолютно неупругий удар: $mv = (m+M)V$.",
|
||
unit: "м/с", a: 1,
|
||
ex: "$V = \\dfrac{mv}{m+M} = \\dfrac{0{,}01\\cdot400}{4{,}00} = 1\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§32",
|
||
q: "Ружьё массой $M = 3\\,\\text{кг}$ выстреливает пулю массой $m = 0{,}02\\,\\text{кг}$ со скоростью $v = 600\\,\\text{м/с}$. Найдите скорость отдачи ружья.",
|
||
hint: "До выстрела система покоилась: $0 = MV + mv$.",
|
||
unit: "м/с", a: 4,
|
||
ex: "$V = \\dfrac{mv}{M} = \\dfrac{0{,}02\\cdot600}{3} = 4\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§32",
|
||
q: "Снаряд массой $m = 0{,}5\\,\\text{кг}$ покоится и разрывается на два осколка. Осколок $m_1 = 0{,}3\\,\\text{кг}$ летит вправо со скоростью $v_1 = 200\\,\\text{м/с}$. Найдите скорость второго осколка ($m_2 = 0{,}2\\,\\text{кг}$).",
|
||
hint: "$p_0 = 0$: $m_1 v_1 + m_2 v_2 = 0$.",
|
||
unit: "м/с", a: 300,
|
||
ex: "$v_2 = \\dfrac{m_1 v_1}{m_2} = \\dfrac{0{,}3\\cdot200}{0{,}2} = 300\\,\\text{м/с}$ (влево)"
|
||
},
|
||
{
|
||
para: "§32",
|
||
q: "Вагон $m_1 = 20\\,\\text{т}$, $v_1 = 2\\,\\text{м/с}$ догоняет вагон $m_2 = 30\\,\\text{т}$, $v_2 = 1\\,\\text{м/с}$ (в том же направлении). После сцепки найдите скорость вагонов.",
|
||
hint: "$m_1 v_1 + m_2 v_2 = (m_1+m_2)v$.",
|
||
unit: "м/с", a: 1.4,
|
||
ex: "$v = \\dfrac{20\\cdot2+30\\cdot1}{50} = \\dfrac{70}{50} = 1{,}4\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§32",
|
||
q: "Лодка ($m_1 = 120\\,\\text{кг}$) с человеком ($m_2 = 60\\,\\text{кг}$) движется со скоростью $v_0 = 2\\,\\text{м/с}$. Человек прыгает вперёд со скоростью $v_2 = 4\\,\\text{м/с}$ относительно берега. Найдите скорость лодки после прыжка.",
|
||
hint: "$(m_1+m_2)v_0 = m_1 v_1 + m_2 v_2$.",
|
||
unit: "м/с", a: 1,
|
||
ex: "$v_1 = \\dfrac{180\\cdot2 - 60\\cdot4}{120} = \\dfrac{120}{120} = 1\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§32",
|
||
q: "Тележки сталкиваются: $m_1 = 5\\,\\text{кг}$, $v_1 = 4\\,\\text{м/с}$; $m_2 = 3\\,\\text{кг}$, $v_2 = 6\\,\\text{м/с}$ навстречу. Абсолютно неупругий удар. Найдите скорость после удара.",
|
||
hint: "Ось — вдоль $v_1$. $m_1 v_1 - m_2 v_2 = (m_1+m_2)v$.",
|
||
unit: "м/с", a: 0.25,
|
||
ex: "$v = \\dfrac{5\\cdot4 - 3\\cdot6}{8} = \\dfrac{2}{8} = 0{,}25\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§32",
|
||
q: "Два конькобёжца стоят неподвижно и отталкиваются. $m_1 = 60\\,\\text{кг}$, $m_2 = 40\\,\\text{кг}$. Второй приобрёл скорость $v_2 = 3\\,\\text{м/с}$. Найдите скорость первого.",
|
||
hint: "$p_0 = 0$: $m_1 v_1 + m_2 v_2 = 0$.",
|
||
unit: "м/с", a: 2,
|
||
ex: "$v_1 = \\dfrac{m_2 v_2}{m_1} = \\dfrac{40\\cdot3}{60} = 2\\,\\text{м/с}$"
|
||
},
|
||
// ── §33 ──────────────────────────────────────────
|
||
{
|
||
para: "§33",
|
||
q: "Шкаф массой $m = 100\\,\\text{кг}$ перемещают по полу на расстояние $l = 3{,}0\\,\\text{м}$. Коэффициент трения скольжения $\\mu = 0{,}20$, $g = 10\\,\\text{м/с}^2$. Найдите минимальную работу, необходимую для этого перемещения.",
|
||
hint: "При минимальной работе тело движется равномерно: $F = F_{\\text{тр}} = \\mu mg$; $A = Fl$.",
|
||
unit: "Дж", a: 600,
|
||
ex: "$F = 0{,}20 \\cdot 100 \\cdot 10 = 200\\,\\text{Н}$; $A = 200 \\cdot 3 = 600\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
para: "§33",
|
||
q: "Автомобиль массой $m = 2000\\,\\text{кг}$ равномерно поднимается в гору под углом $\\alpha = 30°$ ($\\sin 30° = 0{,}5$) со скоростью $v = 10\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите мощность двигателя (сопротивление не учитывать).",
|
||
hint: "При равномерном движении $F = mg\\sin\\alpha$; $P = Fv$.",
|
||
unit: "Вт", a: 100000,
|
||
ex: "$F = 2000\\cdot10\\cdot0{,}5 = 10000\\,\\text{Н}$; $P = 10000\\cdot10 = 100000\\,\\text{Вт} = 100\\,\\text{кВт}$"
|
||
},
|
||
{
|
||
para: "§33",
|
||
q: "Кабину лифта массой $m = 400\\,\\text{кг}$ поднимают на высоту $h = 15\\,\\text{м}$ с ускорением $a = 0{,}60\\,\\text{м/с}^2$ вверх, $g = 10\\,\\text{м/с}^2$. Найдите работу силы натяжения троса.",
|
||
hint: "Сила натяжения: $T = m(g+a)$; $A = Th$.",
|
||
unit: "Дж", a: 63600,
|
||
ex: "$T = 400\\cdot10{,}6 = 4240\\,\\text{Н}$; $A = 4240\\cdot15 = 63600\\,\\text{Дж}$"
|
||
},
|
||
// ── §34 ──────────────────────────────────────────
|
||
{
|
||
para: "§34",
|
||
q: "Пружина жёсткостью $k = 200\\,\\text{Н/м}$ накоплена потенциальная энергия $E_\\text{п} = 0{,}25\\,\\text{Дж}$. Найдите деформацию пружины.",
|
||
hint: "$E_\\text{п} = kx^2/2 \\Rightarrow x = \\sqrt{2E_\\text{п}/k}$",
|
||
unit: "м", a: 0.05,
|
||
ex: "$x = \\sqrt{2\\cdot0{,}25/200} = \\sqrt{0{,}0025} = 0{,}05\\,\\text{м}$"
|
||
},
|
||
{
|
||
para: "§34",
|
||
q: "Тело массой $m = 3\\,\\text{кг}$ опустилось с высоты $h_1 = 8\\,\\text{м}$ до $h_2 = 2\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите работу силы тяжести.",
|
||
hint: "$A = mg(h_1 - h_2)$",
|
||
unit: "Дж", a: 180,
|
||
ex: "$A = 3\\cdot10\\cdot(8-2) = 3\\cdot10\\cdot6 = 180\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
para: "§34",
|
||
q: "Два тела: $m_1 = 2\\,\\text{кг}$ на высоте $h_1 = 10\\,\\text{м}$ и $m_2 = 3\\,\\text{кг}$ на высоте $h_2 = 4\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите суммарную потенциальную энергию системы тел.",
|
||
hint: "$E_\\text{п} = m_1 g h_1 + m_2 g h_2$",
|
||
unit: "Дж", a: 320,
|
||
ex: "$E_\\text{п} = 2\\cdot10\\cdot10 + 3\\cdot10\\cdot4 = 200+120 = 320\\,\\text{Дж}$"
|
||
},
|
||
// ── §35 ──────────────────────────────────────────
|
||
{
|
||
para: "§35",
|
||
q: "Автомобиль массой $m = 1200\\,\\text{кг}$ разгоняется с нуля до $v = 20\\,\\text{м/с}$. Сила тяги $F = 6000\\,\\text{Н}$. Найдите расстояние разгона (пренебречь трением).",
|
||
hint: "По теореме о $E_\\text{к}$: $A = \\Delta E_\\text{к} = mv^2/2$; $s = A/F$.",
|
||
unit: "м", a: 40,
|
||
ex: "$A = \\dfrac{1200 \\cdot 400}{2} = 240\\,000\\,\\text{Дж}$; $s = \\dfrac{240\\,000}{6000} = 40\\,\\text{м}$"
|
||
},
|
||
{
|
||
para: "§35",
|
||
q: "Тело массой $m = 2\\,\\text{кг}$ движется со скоростью $v_0 = 6\\,\\text{м/с}$. Сила трения $F_\\text{тр} = 4\\,\\text{Н}$ действует на пути $s = 5\\,\\text{м}$. Найдите скорость тела в конце пути.",
|
||
hint: "$E_{\\text{к}2} = E_{\\text{к}1} + A_\\text{тр}$; $A_\\text{тр} = -F_\\text{тр} \\cdot s$.",
|
||
unit: "м/с", a: 4,
|
||
ex: "$E_{\\text{к}1} = 2\\cdot36/2 = 36\\,\\text{Дж}$; $A_\\text{тр} = -20\\,\\text{Дж}$; $E_{\\text{к}2} = 16\\,\\text{Дж}$; $v = \\sqrt{2\\cdot16/2} = 4\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§35",
|
||
q: "Тело движется равномерно. Чему равна работа результирующей всех сил, действующих на него?",
|
||
opts: [
|
||
"$A = mv^2$",
|
||
"$A = mv^2/2$",
|
||
"$A = 0$, так как $\\Delta E_\\text{к} = 0$",
|
||
"$A = mgh$"
|
||
],
|
||
a: 2,
|
||
ex: "Равномерное движение → $v = \\text{const}$ → $E_\\text{к} = \\text{const}$ → $\\Delta E_\\text{к} = 0$ → $A_\\text{рез} = 0$."
|
||
},
|
||
{
|
||
para: "§35",
|
||
q: "На тело массой $m = 8\\,\\text{кг}$ действуют: сила тяги $F_1 = 50\\,\\text{Н}$ и сила трения $F_2 = 10\\,\\text{Н}$ (противоположна движению). Тело прошло путь $s = 10\\,\\text{м}$ из состояния покоя. Найдите скорость тела.",
|
||
hint: "$A_\\text{рез} = (F_1 - F_2)\\,s = \\Delta E_\\text{к}$; затем $v = \\sqrt{2E_\\text{к}/m}$.",
|
||
unit: "м/с", a: 10,
|
||
ex: "$A_\\text{рез} = (50-10)\\cdot10 = 400\\,\\text{Дж}$; $v = \\sqrt{\\dfrac{2\\cdot400}{8}} = \\sqrt{100} = 10\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§35",
|
||
q: "Тело массой $m = 2\\,\\text{кг}$ тормозит с $v_0 = 15\\,\\text{м/с}$ до $v = 5\\,\\text{м/с}$ на пути $s = 20\\,\\text{м}$. Найдите силу торможения.",
|
||
hint: "$A_\\text{тр} = \\Delta E_\\text{к} = mv^2/2 - mv_0^2/2$; $F = |A_\\text{тр}|/s$.",
|
||
unit: "Н", a: 10,
|
||
ex: "$\\Delta E_\\text{к} = \\dfrac{2\\cdot25}{2} - \\dfrac{2\\cdot225}{2} = 25 - 225 = -200\\,\\text{Дж}$; $F = 200/20 = 10\\,\\text{Н}$"
|
||
},
|
||
{
|
||
para: "§35",
|
||
q: "Шарик массой $m = 0{,}2\\,\\text{кг}$ бросают вертикально вверх с $v_0 = 10\\,\\text{м/с}$ с высоты $h_0 = 5\\,\\text{м}$ над землёй. $g = 10\\,\\text{м/с}^2$. Найдите механическую энергию шарика относительно земли в начальный момент.",
|
||
hint: "$E_\\text{мех} = mv_0^2/2 + mgh_0$",
|
||
unit: "Дж", a: 20,
|
||
ex: "$E_\\text{мех} = \\dfrac{0{,}2\\cdot100}{2} + 0{,}2\\cdot10\\cdot5 = 10 + 10 = 20\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
para: "§35",
|
||
q: "В какой точке траектории тела, брошенного без сопротивления воздуха, механическая энергия максимальна?",
|
||
opts: [
|
||
"В начальной точке броска",
|
||
"В высшей точке траектории",
|
||
"В конечной точке",
|
||
"Механическая энергия одинакова во всех точках (без трения)"
|
||
],
|
||
a: 3,
|
||
ex: "Без трения воздуха работают только консервативные силы, поэтому $E_\\text{мех} = \\text{const}$ — одинакова в любой точке траектории."
|
||
},
|
||
// ── §36 ──────────────────────────────────────────
|
||
{
|
||
para: "§36",
|
||
q: "Маятник отклонили так, что шарик поднялся на высоту $h = 0{,}45\\,\\text{м}$ над нижней точкой. $g = 10\\,\\text{м/с}^2$. Без трения. Найдите скорость шарика в нижней точке.",
|
||
hint: "$mgh = mv^2/2 \\Rightarrow v = \\sqrt{2gh}$",
|
||
unit: "м/с", a: 3,
|
||
ex: "$v = \\sqrt{2 \\cdot 10 \\cdot 0{,}45} = \\sqrt{9} = 3\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§36",
|
||
q: "Тело массой $m = 2\\,\\text{кг}$ брошено горизонтально с высоты $h = 8\\,\\text{м}$ со скоростью $v_0 = 6\\,\\text{м/с}$. $g = 10\\,\\text{м/с}^2$. Без трения. Найдите скорость тела у земли.",
|
||
hint: "ЗСЭ: $mv_0^2/2 + mgh = mv^2/2 \\Rightarrow v^2 = v_0^2 + 2gh$",
|
||
unit: "м/с", a: 14,
|
||
ex: "$v^2 = 36 + 2\\cdot10\\cdot8 = 36 + 160 = 196 \\Rightarrow v = 14\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§36",
|
||
q: "Пружину жёсткостью $k = 2000\\,\\text{Н/м}$ сжали на $x = 0{,}1\\,\\text{м}$. Отпустили шарик массой $m = 0{,}2\\,\\text{кг}$, который полетел вертикально вверх. $g = 10\\,\\text{м/с}^2$. Найдите максимальную высоту.",
|
||
hint: "$E_\\text{п(пружина)} = kx^2/2 = mgh$",
|
||
unit: "м", a: 5,
|
||
ex: "$kx^2/2 = 2000 \\cdot 0{,}01/2 = 10\\,\\text{Дж}$; $h = \\dfrac{10}{0{,}2 \\cdot 10} = 5\\,\\text{м}$"
|
||
},
|
||
{
|
||
para: "§36",
|
||
q: "Пружину жёсткостью $k = 1000\\,\\text{Н/м}$ сжали на $x = 0{,}1\\,\\text{м}$ и отпустили тело массой $m = 1\\,\\text{кг}$ на горизонтальной поверхности. На участке трения совершена работа $A_\\text{тр} = -3\\,\\text{Дж}$. Найдите скорость тела после участка трения.",
|
||
hint: "$E_\\text{п(пружина)} + A_\\text{тр} = mv^2/2$",
|
||
unit: "м/с", a: 2,
|
||
ex: "$E_\\text{п} = 1000\\cdot0{,}01/2 = 5\\,\\text{Дж}$; $E_\\text{к} = 5 - 3 = 2\\,\\text{Дж}$; $v = \\sqrt{2\\cdot2/1} = 2\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
para: "§36",
|
||
q: "Велосипедист с велосипедом (масса $m = 80\\,\\text{кг}$) съезжает с горки высотой $h = 5\\,\\text{м}$. У основания скорость $v = 8\\,\\text{м/с}$. $g = 10\\,\\text{м/с}^2$. Найдите потери механической энергии на трение.",
|
||
hint: "Потери $= E_{\\text{мех}1} - E_{\\text{мех}2} = mgh - mv^2/2$",
|
||
unit: "Дж", a: 1440,
|
||
ex: "$E_{\\text{мех}1} = 80\\cdot10\\cdot5 = 4000\\,\\text{Дж}$; $E_{\\text{мех}2} = 80\\cdot64/2 = 2560\\,\\text{Дж}$; потери $= 1440\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
para: "§36",
|
||
q: "Тело бросают вертикально вверх с $v_0 = 10\\,\\text{м/с}$. Без трения, $g = 10\\,\\text{м/с}^2$. На какой высоте скорость тела равна $6\\,\\text{м/с}$?",
|
||
hint: "ЗСЭ: $mv_0^2/2 = mv^2/2 + mgh \\Rightarrow h = (v_0^2 - v^2)/(2g)$",
|
||
unit: "м", a: 3.2,
|
||
ex: "$h = \\dfrac{100 - 36}{20} = \\dfrac{64}{20} = 3{,}2\\,\\text{м}$"
|
||
},
|
||
{
|
||
para: "§36",
|
||
q: "Мяч бросают вертикально вверх и ловят на той же высоте. Что можно утверждать о скоростях броска и поимки? (сопротивление воздуха не учитывать)",
|
||
opts: [
|
||
"Скорость при поимке больше — тело ускорялось при падении",
|
||
"Скорость при поимке меньше — тело потеряло энергию",
|
||
"Скорости равны по модулю, так как $E_\\text{мех} = \\text{const}$",
|
||
"Зависит от высоты броска"
|
||
],
|
||
a: 2,
|
||
ex: "Без трения $E_\\text{мех} = \\text{const}$. На одной высоте $E_\\text{п}$ одинакова, значит $E_\\text{к}$ — тоже одинакова, поэтому $v = v_0$ по модулю."
|
||
},
|
||
];
|
||
|
||
// ══ §33 Механическая работа. Мощность ══
|
||
const TASKS_P33 = [
|
||
{
|
||
q: "Сила $F = 100\\,\\text{Н}$ действует вдоль перемещения $\\Delta r = 5\\,\\text{м}$ ($\\alpha = 0°$). Найдите работу силы.",
|
||
hint: "$A = F\\Delta r\\cos\\alpha$, $\\cos 0° = 1$",
|
||
unit: "Дж", a: 500,
|
||
ex: "$A = 100 \\cdot 5 \\cdot 1 = 500\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Тело тянут под углом $\\alpha = 60°$ к горизонту силой $F = 80\\,\\text{Н}$. Перемещение $\\Delta r = 10\\,\\text{м}$. Найдите работу силы.",
|
||
hint: "$A = F\\Delta r\\cos\\alpha$, $\\cos 60° = 0{,}5$",
|
||
unit: "Дж", a: 400,
|
||
ex: "$A = 80 \\cdot 10 \\cdot 0{,}5 = 400\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 50\\,\\text{кг}$ подняли на высоту $h = 3\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите работу по подъёму.",
|
||
hint: "$A = mgh$",
|
||
unit: "Дж", a: 1500,
|
||
ex: "$A = 50 \\cdot 10 \\cdot 3 = 1500\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Пружину жёсткостью $k = 400\\,\\text{Н/м}$ сжали на $x = 0{,}1\\,\\text{м}$. Найдите работу внешней силы.",
|
||
hint: "$A = kx^2/2$",
|
||
unit: "Дж", a: 2,
|
||
ex: "$A = 400 \\cdot 0{,}01 / 2 = 2\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "За время $\\Delta t = 2\\,\\text{с}$ совершена работа $A = 600\\,\\text{Дж}$. Найдите мощность.",
|
||
hint: "$P = A/\\Delta t$",
|
||
unit: "Вт", a: 300,
|
||
ex: "$P = 600/2 = 300\\,\\text{Вт}$"
|
||
},
|
||
{
|
||
q: "Двигатель тянет тело с силой $F = 500\\,\\text{Н}$ со скоростью $v = 20\\,\\text{м/с}$ (сила вдоль движения). Найдите мощность.",
|
||
hint: "$P = Fv$",
|
||
unit: "Вт", a: 10000,
|
||
ex: "$P = 500 \\cdot 20 = 10000\\,\\text{Вт} = 10\\,\\text{кВт}$"
|
||
},
|
||
{
|
||
q: "Кран поднимает поддон с кирпичами массой $m = 800\\,\\text{кг}$ на высоту $h = 9 \\cdot 3{,}5 = 31{,}5\\,\\text{м}$ (9 этажей), $g = 10\\,\\text{м/с}^2$. Найдите работу силы натяжения троса.",
|
||
hint: "$A = mgh$",
|
||
unit: "Дж", a: 252000,
|
||
ex: "$A = 800 \\cdot 10 \\cdot 31{,}5 = 252\\,000\\,\\text{Дж} = 252\\,\\text{кДж}$"
|
||
},
|
||
{
|
||
q: "Найдите силу тяги двигателя, если при скорости $v = 15\\,\\text{м/с}$ мощность $P = 45\\,\\text{кВт} = 45000\\,\\text{Вт}$.",
|
||
hint: "$F = P/v$",
|
||
unit: "Н", a: 3000,
|
||
ex: "$F = P/v = 45000/15 = 3000\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "При каком угле между силой и перемещением работа силы отрицательна?",
|
||
opts: [
|
||
"При $\\alpha = 0°$",
|
||
"При $\\alpha = 45°$",
|
||
"При $\\alpha = 90°$",
|
||
"При $\\alpha = 120°$"
|
||
],
|
||
a: 3,
|
||
ex: "При $\\alpha > 90°$ имеем $\\cos\\alpha < 0$, поэтому $A = F\\Delta r\\cos\\alpha < 0$."
|
||
},
|
||
{
|
||
q: "Какую работу совершает сила реакции опоры при движении тела по горизонтальной поверхности?",
|
||
opts: [
|
||
"Положительную",
|
||
"Отрицательную",
|
||
"Равную нулю, так как сила перпендикулярна перемещению",
|
||
"Зависит от скорости движения"
|
||
],
|
||
a: 2,
|
||
ex: "Сила реакции опоры перпендикулярна перемещению ($\\alpha = 90°$), поэтому $A = F\\Delta r\\cos 90° = 0$."
|
||
},
|
||
];
|
||
|
||
// ══ §34 Потенциальная энергия ══
|
||
const TASKS_P34 = [
|
||
{
|
||
q: "Тело массой $m = 2\\,\\text{кг}$ находится на высоте $h = 5\\,\\text{м}$ над нулевым уровнем, $g = 10\\,\\text{м/с}^2$. Найдите потенциальную энергию.",
|
||
hint: "$E_\\text{п} = mgh$",
|
||
unit: "Дж", a: 100,
|
||
ex: "$E_\\text{п} = 2 \\cdot 10 \\cdot 5 = 100\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Потенциальная энергия тела $E_\\text{п} = 500\\,\\text{Дж}$, масса $m = 5\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$. Найдите высоту над нулевым уровнем.",
|
||
hint: "$h = E_\\text{п}/(mg)$",
|
||
unit: "м", a: 10,
|
||
ex: "$h = 500/(5 \\cdot 10) = 10\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Пружину жёсткостью $k = 400\\,\\text{Н/м}$ деформировали на $x = 0{,}1\\,\\text{м}$. Найдите потенциальную энергию пружины.",
|
||
hint: "$E_\\text{п} = kx^2/2$",
|
||
unit: "Дж", a: 2,
|
||
ex: "$E_\\text{п} = 400 \\cdot 0{,}01/2 = 2\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Камень медленно поднимают из ямы глубиной $h = 2{,}0\\,\\text{м}$ на поверхность, $g = 10\\,\\text{м/с}^2$. При этом совершена работа $A = 100\\,\\text{Дж}$. Найдите массу камня.",
|
||
hint: "$A = mgh \\Rightarrow m = A/(gh)$",
|
||
unit: "кг", a: 5,
|
||
ex: "$m = 100/(10 \\cdot 2{,}0) = 5\\,\\text{кг}$"
|
||
},
|
||
{
|
||
q: "В результате растяжения пружина приобрела потенциальную энергию $E_\\text{п} = 0{,}32\\,\\text{Дж}$. Деформация $\\Delta l = 8{,}0\\,\\text{см} = 0{,}08\\,\\text{м}$. Найдите жёсткость пружины.",
|
||
hint: "$E_\\text{п} = kx^2/2 \\Rightarrow k = 2E_\\text{п}/x^2$",
|
||
unit: "Н/м", a: 100,
|
||
ex: "$k = 2 \\cdot 0{,}32 / 0{,}08^2 = 0{,}64/0{,}0064 = 100\\,\\text{Н/м}$"
|
||
},
|
||
{
|
||
q: "Тело опускается с высоты $h_1 = 10\\,\\text{м}$ до $h_2 = 4\\,\\text{м}$, масса $m = 3\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$. Найдите работу силы тяжести.",
|
||
hint: "$A = mg(h_1 - h_2)$",
|
||
unit: "Дж", a: 180,
|
||
ex: "$A = 3 \\cdot 10 \\cdot (10-4) = 180\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "В каких случаях тело обладает потенциальной энергией?",
|
||
opts: [
|
||
"Только при движении с большой скоростью",
|
||
"Только в состоянии покоя",
|
||
"Когда тело взаимодействует с другими телами (поднято над Землёй или деформировано)",
|
||
"Только при наличии заряда"
|
||
],
|
||
a: 2,
|
||
ex: "Потенциальная энергия — мера способности сил взаимодействия совершать работу. Тело обладает ею при взаимодействии: гравитационном ($mgh$) или упругом ($kx^2/2$)."
|
||
},
|
||
{
|
||
q: "Как изменится потенциальная энергия тела в поле тяжести, если высоту увеличить в 3 раза?",
|
||
opts: [
|
||
"Увеличится в 9 раз",
|
||
"Увеличится в 3 раза",
|
||
"Увеличится в $\\sqrt{3}$ раз",
|
||
"Не изменится"
|
||
],
|
||
a: 1,
|
||
ex: "$E_\\text{п} = mgh$ — прямо пропорциональна высоте: увеличится в 3 раза."
|
||
},
|
||
{
|
||
q: "Как изменится потенциальная энергия пружины, если деформацию увеличить в 2 раза?",
|
||
opts: [
|
||
"Увеличится в 2 раза",
|
||
"Увеличится в 4 раза",
|
||
"Уменьшится в 2 раза",
|
||
"Не изменится"
|
||
],
|
||
a: 1,
|
||
ex: "$E_\\text{п} = kx^2/2$ — пропорциональна квадрату деформации: при $x' = 2x$ → $E_\\text{п}' = 4E_\\text{п}$."
|
||
},
|
||
];
|
||
|
||
// ══ §35 Кинетическая энергия. Полная энергия ══
|
||
const TASKS_P35 = [
|
||
{
|
||
q: "Мяч массой $m = 0{,}5\\,\\text{кг}$ летит со скоростью $v = 8\\,\\text{м/с}$. Найдите его кинетическую энергию.",
|
||
hint: "$E_\\text{к} = mv^2/2$",
|
||
unit: "Дж", a: 16,
|
||
ex: "$E_\\text{к} = \\dfrac{0{,}5 \\cdot 64}{2} = 16\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 4\\,\\text{кг}$ имеет кинетическую энергию $E_\\text{к} = 50\\,\\text{Дж}$. Найдите скорость тела.",
|
||
hint: "$v = \\sqrt{2E_\\text{к}/m}$",
|
||
unit: "м/с", a: 5,
|
||
ex: "$v = \\sqrt{\\dfrac{2 \\cdot 50}{4}} = \\sqrt{25} = 5\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 2\\,\\text{кг}$ разгоняется с нуля до $v = 6\\,\\text{м/с}$. Найдите работу, совершённую над телом.",
|
||
hint: "$A = \\Delta E_\\text{к} = mv^2/2 - 0$",
|
||
unit: "Дж", a: 36,
|
||
ex: "$A = \\Delta E_\\text{к} = \\dfrac{2 \\cdot 36}{2} = 36\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 2\\,\\text{кг}$ тормозит с $v_0 = 7\\,\\text{м/с}$ до $v = 3\\,\\text{м/с}$. На сколько уменьшилась кинетическая энергия тела?",
|
||
hint: "$|\\Delta E_\\text{к}| = mv_0^2/2 - mv^2/2$",
|
||
unit: "Дж", a: 40,
|
||
ex: "$|\\Delta E_\\text{к}| = \\dfrac{2 \\cdot 49}{2} - \\dfrac{2 \\cdot 9}{2} = 49 - 9 = 40\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Шар массой $m = 0{,}4\\,\\text{кг}$ бросают вертикально вверх с $v_0 = 10\\,\\text{м/с}$ с уровня $h = 0$, $g = 10\\,\\text{м/с}^2$. Найдите механическую энергию шара в начальный момент.",
|
||
hint: "$E_\\text{мех} = E_\\text{к} + E_\\text{п} = mv_0^2/2 + mgh$",
|
||
unit: "Дж", a: 20,
|
||
ex: "$E_\\text{мех} = \\dfrac{0{,}4 \\cdot 100}{2} + 0 = 20\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 3\\,\\text{кг}$ находится на высоте $h = 5\\,\\text{м}$ и движется со скоростью $v = 4\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите его механическую энергию.",
|
||
hint: "$E_\\text{мех} = mv^2/2 + mgh$",
|
||
unit: "Дж", a: 174,
|
||
ex: "$E_\\text{мех} = \\dfrac{3 \\cdot 16}{2} + 3 \\cdot 10 \\cdot 5 = 24 + 150 = 174\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Как изменится кинетическая энергия тела при увеличении его скорости в 3 раза?",
|
||
opts: [
|
||
"Увеличится в 3 раза",
|
||
"Увеличится в 6 раз",
|
||
"Увеличится в 9 раз",
|
||
"Уменьшится в 3 раза"
|
||
],
|
||
a: 2,
|
||
ex: "$E_\\text{к} = mv^2/2$ — пропорциональна $v^2$. При $v' = 3v$: $E_\\text{к}' = m(3v)^2/2 = 9\\,E_\\text{к}$."
|
||
},
|
||
{
|
||
q: "Что гласит теорема о кинетической энергии?",
|
||
opts: [
|
||
"Кинетическая энергия тела сохраняется при любом движении",
|
||
"Изменение кинетической энергии тела равно работе всех сил, действующих на него",
|
||
"Кинетическая энергия равна произведению массы на скорость",
|
||
"Кинетическая энергия тела не зависит от направления скорости"
|
||
],
|
||
a: 1,
|
||
ex: "Теорема: $\\Delta E_\\text{к} = A_\\text{рез}$. Именно все силы сразу определяют изменение $E_\\text{к}$."
|
||
},
|
||
];
|
||
|
||
// ══ §36 Закон сохранения энергии ══
|
||
const TASKS_P36 = [
|
||
{
|
||
q: "Шарик массой $m = 0{,}2\\,\\text{кг}$ падает без трения с высоты $h = 5\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите его скорость у земли.",
|
||
hint: "$mgh = mv^2/2 \\Rightarrow v = \\sqrt{2gh}$",
|
||
unit: "м/с", a: 10,
|
||
ex: "$v = \\sqrt{2 \\cdot 10 \\cdot 5} = \\sqrt{100} = 10\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Шарик массой $m = 0{,}5\\,\\text{кг}$ бросают вертикально вверх с $v_0 = 20\\,\\text{м/с}$. Без трения, $g = 10\\,\\text{м/с}^2$. Найдите максимальную высоту подъёма.",
|
||
hint: "$mv_0^2/2 = mgh \\Rightarrow h = v_0^2/(2g)$",
|
||
unit: "м", a: 20,
|
||
ex: "$h = \\dfrac{v_0^2}{2g} = \\dfrac{400}{20} = 20\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Шар катится с горки высотой $h = 3{,}2\\,\\text{м}$ без трения. $g = 10\\,\\text{м/с}^2$. Найдите скорость шара у подножия горки.",
|
||
hint: "$mgh = mv^2/2 \\Rightarrow v = \\sqrt{2gh}$",
|
||
unit: "м/с", a: 8,
|
||
ex: "$v = \\sqrt{2 \\cdot 10 \\cdot 3{,}2} = \\sqrt{64} = 8\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Маятник отклонили так, что шарик поднялся на высоту $h = 0{,}2\\,\\text{м}$ над положением равновесия. Без трения, $g = 10\\,\\text{м/с}^2$. Найдите скорость шарика в нижней точке.",
|
||
hint: "$mgh = mv^2/2 \\Rightarrow v = \\sqrt{2gh}$",
|
||
unit: "м/с", a: 2,
|
||
ex: "$v = \\sqrt{2 \\cdot 10 \\cdot 0{,}2} = \\sqrt{4} = 2\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 1\\,\\text{кг}$ скользит с горки высотой $h = 4\\,\\text{м}$. Внизу скорость $v = 6\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите потери механической энергии на трение (величину, без знака).",
|
||
hint: "Потери $= E_{\\text{мех}1} - E_{\\text{мех}2} = mgh - mv^2/2$",
|
||
unit: "Дж", a: 22,
|
||
ex: "Потери $= 1 \\cdot 10 \\cdot 4 - \\dfrac{1 \\cdot 36}{2} = 40 - 18 = 22\\,\\text{Дж}$ (столько ушло в тепло)"
|
||
},
|
||
{
|
||
q: "Тело свободно падает с высоты $h = 45\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите скорость тела у земли.",
|
||
hint: "$v = \\sqrt{2gh}$ (из ЗСЭ)",
|
||
unit: "м/с", a: 30,
|
||
ex: "$v = \\sqrt{2 \\cdot 10 \\cdot 45} = \\sqrt{900} = 30\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "При каком условии механическая энергия тела сохраняется?",
|
||
opts: [
|
||
"При любом равномерном движении",
|
||
"Когда на тело не действуют никакие силы",
|
||
"Когда на тело действуют только консервативные силы: тяжесть и упругость (нет трения)",
|
||
"Только при свободном падении"
|
||
],
|
||
a: 2,
|
||
ex: "$E_\\text{мех} = \\text{const}$ только при отсутствии сил трения и других диссипативных сил. Тяжесть и упругость — консервативные: их работа не приводит к потере механической энергии."
|
||
},
|
||
{
|
||
q: "Как связаны изменение механической энергии тела и работа внешних (диссипативных) сил?",
|
||
opts: [
|
||
"$\\Delta E_\\text{мех} = 2A_\\text{внеш}$",
|
||
"$\\Delta E_\\text{мех} = A_\\text{внеш}$",
|
||
"$E_\\text{мех} + A_\\text{внеш} = mv^2$",
|
||
"$\\Delta E_\\text{мех} = -A_\\text{внеш}$"
|
||
],
|
||
a: 1,
|
||
ex: "По теореме: $\\Delta E_\\text{мех} = A_\\text{внеш}$. При трении $A_\\text{тр} < 0$, поэтому $E_\\text{мех}$ уменьшается."
|
||
},
|
||
];
|
||
|
||
// ══ §1 Механическое движение ══
|
||
var TASKS_P1 = [
|
||
{
|
||
q: "Что называют механическим движением?",
|
||
opts: ["Изменение формы тела", "Изменение положения тела в пространстве относительно других тел", "Изменение массы тела", "Нагревание тела"],
|
||
a: 1,
|
||
ex: "Механическое движение — это изменение положения тела в пространстве относительно других тел с течением времени."
|
||
},
|
||
{
|
||
q: "Тело движется по прямой. За 5 с оно прошло 40 м. Какова его средняя скорость?",
|
||
hint: "$v = s/t$",
|
||
unit: "м/с", a: 8,
|
||
ex: "$v = 40/5 = 8\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Какое из движений является равномерным?",
|
||
opts: ["Автобус разгоняется на светофоре", "Поезд идёт со скоростью 60 км/ч без изменений", "Мяч летит после броска", "Самолёт делает разворот"],
|
||
a: 1,
|
||
ex: "Равномерное движение — скорость не изменяется ни по модулю, ни по направлению."
|
||
},
|
||
{
|
||
q: "Велосипедист едет 10 минут со скоростью 6 м/с. Какой путь он проехал?",
|
||
hint: "$s = v \\cdot t$, перевести минуты в секунды",
|
||
unit: "м", a: 3600,
|
||
ex: "$t = 10 \\cdot 60 = 600\\,\\text{с}$; $s = 6 \\cdot 600 = 3600\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Какое движение называют прямолинейным?",
|
||
opts: ["Движение по кривой", "Движение, при котором траектория — прямая линия", "Движение с постоянной скоростью", "Движение без трения"],
|
||
a: 1,
|
||
ex: "Прямолинейное движение — траектория является прямой линией."
|
||
},
|
||
{
|
||
q: "Автомобиль проехал 180 км за 2 часа. Его средняя скорость в км/ч:",
|
||
hint: "$v = s/t$",
|
||
unit: "км/ч", a: 90,
|
||
ex: "$v = 180/2 = 90\\,\\text{км/ч}$"
|
||
},
|
||
{
|
||
q: "Что такое траектория движения?",
|
||
opts: ["Расстояние между начальной и конечной точками", "Линия, которую описывает тело при движении", "Скорость тела", "Время движения"],
|
||
a: 1,
|
||
ex: "Траектория — воображаемая линия, которую описывает материальная точка при своём движении."
|
||
},
|
||
{
|
||
q: "Пешеход шёл 30 минут. За это время он прошёл 2100 м. Найдите его скорость.",
|
||
hint: "$v = s/t$",
|
||
unit: "м/с", a: 1.167, tol: 0.05,
|
||
ex: "$t = 30 \\cdot 60 = 1800\\,\\text{с}$; $v = 2100/1800 \\approx 1{,}17\\,\\text{м/с}$"
|
||
}
|
||
];
|
||
|
||
// ══ §2 Относительность движения. Система отсчёта ══
|
||
var TASKS_P2 = [
|
||
{
|
||
q: "Что такое система отсчёта?",
|
||
opts: ["Прибор для измерения времени", "Тело отсчёта + система координат + часы", "Единица измерения пути", "Направление движения"],
|
||
a: 1,
|
||
ex: "Система отсчёта: тело отсчёта, связанная с ним система координат и часы для отсчёта времени."
|
||
},
|
||
{
|
||
q: "Пассажир в вагоне идёт вперёд со скоростью 2 м/с. Поезд движется со скоростью 20 м/с. Скорость пассажира относительно земли:",
|
||
hint: "$v = v_1 + v_2$",
|
||
unit: "м/с", a: 22,
|
||
ex: "$v = 20 + 2 = 22\\,\\text{м/с}$ (движутся в одну сторону)"
|
||
},
|
||
{
|
||
q: "Относительно чего определяется движение тела?",
|
||
opts: ["Только относительно Земли", "Только относительно Солнца", "Относительно выбранного тела отсчёта", "Относительно воздуха"],
|
||
a: 2,
|
||
ex: "Движение всегда относительно — оно характеризуется относительно выбранного тела отсчёта."
|
||
},
|
||
{
|
||
q: "Два поезда движутся навстречу друг другу. Скорость первого 60 км/ч, второго — 80 км/ч. Скорость сближения:",
|
||
hint: "Сложить скорости при встречном движении",
|
||
unit: "км/ч", a: 140,
|
||
ex: "$v_{\\text{сбл}} = 60 + 80 = 140\\,\\text{км/ч}$"
|
||
},
|
||
{
|
||
q: "Человек стоит в вагоне поезда. Относительно другого пассажира в том же вагоне он:",
|
||
opts: ["Движется", "Покоится", "Движется вертикально", "Движется по кругу"],
|
||
a: 1,
|
||
ex: "Оба пассажира движутся вместе с поездом, поэтому относительно друг друга — в покое."
|
||
},
|
||
{
|
||
q: "Два велосипедиста едут в одном направлении: первый 4 м/с, второй 6 м/с. Скорость второго относительно первого:",
|
||
hint: "$v_{\\text{отн}} = v_2 - v_1$",
|
||
unit: "м/с", a: 2,
|
||
ex: "$v_{\\text{отн}} = 6 - 4 = 2\\,\\text{м/с}$ (в направлении движения)"
|
||
},
|
||
{
|
||
q: "Что описывает система координат?",
|
||
opts: ["Время", "Положение тела в пространстве", "Скорость тела", "Силу, действующую на тело"],
|
||
a: 1,
|
||
ex: "Система координат задаёт способ описания положения тела в пространстве."
|
||
},
|
||
{
|
||
q: "Лодка плывёт поперёк реки шириной 60 м. Скорость лодки относительно воды 3 м/с. Время переправы:",
|
||
hint: "$t = d/v_\\text{лодки}$",
|
||
unit: "с", a: 20,
|
||
ex: "$t = 60/3 = 20\\,\\text{с}$"
|
||
}
|
||
];
|
||
|
||
// ══ §3 Скаляры и векторы. Сложение векторов ══
|
||
var TASKS_P3 = [
|
||
{
|
||
q: "Какая из величин является векторной?",
|
||
opts: ["Масса", "Температура", "Скорость", "Объём"],
|
||
a: 2,
|
||
ex: "Скорость — векторная величина, так как имеет и модуль, и направление."
|
||
},
|
||
{
|
||
q: "Два вектора направлены в одну сторону: $a = 30\\,\\text{м}$, $b = 50\\,\\text{м}$. Модуль суммы:",
|
||
hint: "Сонаправленные векторы: $|\\vec{a}+\\vec{b}| = a+b$",
|
||
unit: "м", a: 80,
|
||
ex: "$|\\vec{a}+\\vec{b}| = 30 + 50 = 80\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Два противоположно направленных вектора: $a = 50\\,\\text{м}$, $b = 30\\,\\text{м}$. Модуль суммы:",
|
||
hint: "Противоположные векторы: $|\\vec{a}+\\vec{b}| = |a-b|$",
|
||
unit: "м", a: 20,
|
||
ex: "$|\\vec{a}+\\vec{b}| = |50 - 30| = 20\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Что называют модулем вектора?",
|
||
opts: ["Направление вектора", "Длина (числовое значение) вектора без учёта направления", "Угол вектора", "Проекция вектора"],
|
||
a: 1,
|
||
ex: "Модуль вектора — его длина, числовое значение без учёта направления."
|
||
},
|
||
{
|
||
q: "Два взаимно перпендикулярных вектора: $a = 3\\,\\text{м}$, $b = 4\\,\\text{м}$. Модуль суммы:",
|
||
hint: "Теорема Пифагора: $c = \\sqrt{a^2+b^2}$",
|
||
unit: "м", a: 5,
|
||
ex: "$|\\vec{a}+\\vec{b}| = \\sqrt{3^2 + 4^2} = \\sqrt{9+16} = 5\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Какая из величин является скалярной?",
|
||
opts: ["Перемещение", "Ускорение", "Сила", "Температура"],
|
||
a: 3,
|
||
ex: "Температура — скалярная величина, не имеет направления."
|
||
},
|
||
{
|
||
q: "Правило параллелограмма используется для:",
|
||
opts: ["Деления векторов", "Нахождения суммы (и разности) двух векторов", "Нахождения проекции", "Умножения на число"],
|
||
a: 1,
|
||
ex: "Правило параллелограмма: диагональ параллелограмма, построенного на двух векторах, равна их сумме."
|
||
},
|
||
{
|
||
q: "Векторы $\\vec{a}$ и $\\vec{b}$ перпендикулярны. $a = 5\\,\\text{м}$, $b = 12\\,\\text{м}$. Найдите модуль суммы.",
|
||
hint: "$c = \\sqrt{a^2+b^2}$",
|
||
unit: "м", a: 13,
|
||
ex: "$c = \\sqrt{25 + 144} = \\sqrt{169} = 13\\,\\text{м}$"
|
||
}
|
||
];
|
||
|
||
// ══ §4 Проекции вектора ══
|
||
var TASKS_P4 = [
|
||
{
|
||
q: "Как вычислить проекцию вектора $\\vec{a}$ на ось $x$?",
|
||
opts: ["$a_x = a / \\cos\\varphi$", "$a_x = a \\cdot \\sin\\varphi$", "$a_x = a \\cdot \\cos\\varphi$", "$a_x = a^2$"],
|
||
a: 2,
|
||
ex: "Проекция на ось x: $a_x = a \\cdot \\cos\\varphi$, где $\\varphi$ — угол между вектором и осью x."
|
||
},
|
||
{
|
||
q: "Вектор длиной $10\\,\\text{м}$ направлен под углом $0°$ к оси $x$. Проекция на ось $x$:",
|
||
hint: "$a_x = a \\cdot \\cos 0°$",
|
||
unit: "м", a: 10,
|
||
ex: "$a_x = 10 \\cdot \\cos 0° = 10 \\cdot 1 = 10\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Вектор длиной $20\\,\\text{м}$ направлен под углом $90°$ к оси $x$. Проекция на ось $x$:",
|
||
hint: "$\\cos 90° = 0$",
|
||
unit: "м", a: 0,
|
||
ex: "$a_x = 20 \\cdot \\cos 90° = 20 \\cdot 0 = 0\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Вектор $a = 8\\,\\text{м}$ направлен под углом $60°$ к оси $x$. Найдите $a_x$.",
|
||
hint: "$\\cos 60° = 0{,}5$",
|
||
unit: "м", a: 4,
|
||
ex: "$a_x = 8 \\cdot \\cos 60° = 8 \\cdot 0{,}5 = 4\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Вектор $a = 10\\,\\text{м}$ направлен под углом $30°$ к оси $x$. Найдите $a_y$.",
|
||
hint: "$a_y = a \\cdot \\sin 30°$, $\\sin 30° = 0{,}5$",
|
||
unit: "м", a: 5,
|
||
ex: "$a_y = 10 \\cdot \\sin 30° = 10 \\cdot 0{,}5 = 5\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Если $a_x > 0$ и $a_y > 0$, то вектор направлен:",
|
||
opts: ["В первый квадрант (вправо-вверх)", "Во второй квадрант (влево-вверх)", "В третий квадрант", "В четвёртый квадрант"],
|
||
a: 0,
|
||
ex: "Положительные обе проекции — вектор в первом квадранте."
|
||
},
|
||
{
|
||
q: "Известны проекции: $a_x = 6\\,\\text{м}$, $a_y = 8\\,\\text{м}$. Модуль вектора:",
|
||
hint: "$a = \\sqrt{a_x^2 + a_y^2}$",
|
||
unit: "м", a: 10,
|
||
ex: "$a = \\sqrt{36 + 64} = \\sqrt{100} = 10\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Вектор $a = 20\\,\\text{м}$ направлен под углом $45°$ к оси $x$. Найдите $a_x$. ($\\sin 45° = \\cos 45° \\approx 0{,}707$)",
|
||
hint: "$a_x = a \\cdot \\cos 45°$",
|
||
unit: "м", a: 14.14, tol: 0.05,
|
||
ex: "$a_x = 20 \\cdot 0{,}707 \\approx 14{,}14\\,\\text{м}$"
|
||
}
|
||
];
|
||
|
||
// ══ §5 Путь и перемещение ══
|
||
var TASKS_P5 = [
|
||
{
|
||
q: "В чём разница между путём и перемещением?",
|
||
opts: ["Это одно и то же", "Путь — скалярная длина траектории; перемещение — вектор от начальной до конечной точки", "Перемещение всегда больше пути", "Путь — вектор, перемещение — скаляр"],
|
||
a: 1,
|
||
ex: "Путь $s$ — длина траектории (скаляр). Перемещение $\\vec{\\Delta r}$ — вектор из начальной точки в конечную."
|
||
},
|
||
{
|
||
q: "Человек прошёл 4 м на восток и 3 м на север. Модуль его перемещения:",
|
||
hint: "$|\\Delta r| = \\sqrt{4^2+3^2}$",
|
||
unit: "м", a: 5,
|
||
ex: "$|\\Delta r| = \\sqrt{16+9} = 5\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "В каком случае путь равен модулю перемещения?",
|
||
opts: ["Всегда", "При движении по кривой", "При прямолинейном движении в одном направлении", "Только при движении по кругу"],
|
||
a: 2,
|
||
ex: "При прямолинейном движении в одну сторону $s = |\\Delta r|$."
|
||
},
|
||
{
|
||
q: "Спортсмен пробежал по стадиону один круг длиной 400 м и вернулся в начальную точку. Модуль перемещения:",
|
||
hint: "Начальная и конечная точки совпадают",
|
||
unit: "м", a: 0,
|
||
ex: "После полного круга начальная и конечная точки совпадают, поэтому $|\\Delta r| = 0\\,\\text{м}$."
|
||
},
|
||
{
|
||
q: "Тело прошло путь $s = 10\\,\\text{м}$. Наименьший возможный модуль перемещения равен:",
|
||
hint: "Модуль перемещения не превышает путь",
|
||
unit: "м", a: 0,
|
||
ex: "Если тело вернулось в исходную точку, $|\\Delta r| = 0$. Минимальное значение — 0."
|
||
},
|
||
{
|
||
q: "Тело переместилось из точки $x_1 = 3\\,\\text{м}$ в точку $x_2 = 8\\,\\text{м}$. Перемещение:",
|
||
hint: "$\\Delta x = x_2 - x_1$",
|
||
unit: "м", a: 5,
|
||
ex: "$\\Delta x = 8 - 3 = 5\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Тело переместилось из точки $x_1 = 7\\,\\text{м}$ в точку $x_2 = 2\\,\\text{м}$. Перемещение:",
|
||
hint: "$\\Delta x = x_2 - x_1$ (может быть отрицательным)",
|
||
unit: "м", a: -5,
|
||
ex: "$\\Delta x = 2 - 7 = -5\\,\\text{м}$ (движение в отрицательном направлении)"
|
||
},
|
||
{
|
||
q: "Велосипедист проехал 3 км на запад и 4 км на север. Путь равен:",
|
||
hint: "$s = s_1 + s_2$",
|
||
unit: "км", a: 7,
|
||
ex: "$s = 3 + 4 = 7\\,\\text{км}$ (путь — сумма всех расстояний)"
|
||
}
|
||
];
|
||
|
||
// ══ §6 Равномерное прямолинейное движение ══
|
||
var TASKS_P6 = [
|
||
{
|
||
q: "Что такое равномерное прямолинейное движение?",
|
||
opts: ["Движение с постоянным ускорением", "Движение, при котором скорость постоянна по модулю и направлению", "Движение по кривой", "Движение с нулевой скоростью"],
|
||
a: 1,
|
||
ex: "Равномерное прямолинейное движение — скорость тела постоянна по модулю и направлению."
|
||
},
|
||
{
|
||
q: "Автомобиль движется равномерно. За 4 с он проехал 80 м. Скорость автомобиля:",
|
||
hint: "$v = s/t$",
|
||
unit: "м/с", a: 20,
|
||
ex: "$v = 80/4 = 20\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Поезд движется со скоростью 25 м/с. Какой путь он пройдёт за 3 минуты?",
|
||
hint: "$s = v \\cdot t$",
|
||
unit: "м", a: 4500,
|
||
ex: "$t = 180\\,\\text{с}$; $s = 25 \\cdot 180 = 4500\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "За какое время автомобиль со скоростью 30 м/с проедет 1,5 км?",
|
||
hint: "$t = s/v$",
|
||
unit: "с", a: 50,
|
||
ex: "$t = 1500/30 = 50\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "График $x(t)$ для равномерного движения — это:",
|
||
opts: ["Парабола", "Прямая линия", "Синусоида", "Гипербола"],
|
||
a: 1,
|
||
ex: "При равномерном движении $x = x_0 + vt$ — линейная зависимость, прямая линия."
|
||
},
|
||
{
|
||
q: "Тело начинает движение из точки $x_0 = 5\\,\\text{м}$ со скоростью $v = 3\\,\\text{м/с}$. Координата через $t = 4\\,\\text{с}$:",
|
||
hint: "$x = x_0 + vt$",
|
||
unit: "м", a: 17,
|
||
ex: "$x = 5 + 3 \\cdot 4 = 5 + 12 = 17\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Что даёт угол наклона прямой на графике $x(t)$?",
|
||
opts: ["Ускорение", "Путь", "Скорость движения", "Время"],
|
||
a: 2,
|
||
ex: "Тангенс угла наклона прямой $x(t)$ численно равен скорости тела."
|
||
},
|
||
{
|
||
q: "Тело движется равномерно со скоростью $v = 2\\,\\text{м/с}$. Начальная координата $x_0 = 0$. Когда координата достигнет $x = 14\\,\\text{м}$?",
|
||
hint: "$t = (x - x_0)/v$",
|
||
unit: "с", a: 7,
|
||
ex: "$t = 14/2 = 7\\,\\text{с}$"
|
||
}
|
||
];
|
||
|
||
// ══ §7 Движение двух тел на одной прямой ══
|
||
var TASKS_P7 = [
|
||
{
|
||
q: "Два тела движутся навстречу из точек $x_1=0$ и $x_2=100\\,\\text{м}$ со скоростями $v_1=5\\,\\text{м/с}$ и $v_2=5\\,\\text{м/с}$. Когда встретятся?",
|
||
hint: "$t = (x_2-x_1)/(v_1+v_2)$",
|
||
unit: "с", a: 10,
|
||
ex: "$t = 100/(5+5) = 10\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Два тела движутся в одном направлении. Первое: $x_0=0$, $v_1=10\\,\\text{м/с}$. Второе: $x_0=30\\,\\text{м}$, $v_2=4\\,\\text{м/с}$. Когда первое догонит второе?",
|
||
hint: "$t = \\Delta x_0/(v_1-v_2)$",
|
||
unit: "с", a: 5,
|
||
ex: "$t = 30/(10-4) = 5\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Где на числовой оси встретятся два тела, если $x_1=0$ ($v_1=6\\,\\text{м/с}$) и $x_2=90\\,\\text{м}$ ($v_2=3\\,\\text{м/с}$) движутся навстречу?",
|
||
hint: "Сначала найди время встречи, потом координату",
|
||
unit: "м", a: 60,
|
||
ex: "$t = 90/9 = 10\\,\\text{с}$; $x = 6 \\cdot 10 = 60\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Что означает, что два тела «встретились»?",
|
||
opts: ["Они имеют одинаковую скорость", "Они находятся в одной точке в один момент времени", "Они движутся с одинаковым ускорением", "Они одновременно остановились"],
|
||
a: 1,
|
||
ex: "Встреча — тела находятся в одной точке пространства в один момент времени: $x_1(t) = x_2(t)$."
|
||
},
|
||
{
|
||
q: "На графике $x(t)$ встреча двух тел определяется как:",
|
||
opts: ["Параллельные прямые", "Точка пересечения прямых двух тел", "Максимум функции", "Точка, где прямая горизонтальна"],
|
||
a: 1,
|
||
ex: "Точка пересечения прямых на $x(t)$-графике — момент и место встречи."
|
||
},
|
||
{
|
||
q: "Два тела движутся навстречу. Расстояние между ними 120 м. Скорости: $v_1 = 8\\,\\text{м/с}$, $v_2 = 4\\,\\text{м/с}$. Встреча через:",
|
||
hint: "$t = d/(v_1+v_2)$",
|
||
unit: "с", a: 10,
|
||
ex: "$t = 120/(8+4) = 10\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Тело А впереди тела Б на 40 м и движется в том же направлении со скоростью 3 м/с. Тело Б догоняет со скоростью 7 м/с. Через сколько секунд Б догонит А?",
|
||
hint: "$t = \\Delta x_0/(v_\\text{Б}-v_\\text{А})$",
|
||
unit: "с", a: 10,
|
||
ex: "$t = 40/(7-3) = 10\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Два тела одновременно выехали навстречу. Расстояние 200 м. $v_1=10\\,\\text{м/с}$, $v_2=15\\,\\text{м/с}$. Где встретятся от точки старта первого тела?",
|
||
hint: "$t = 200/25$, $x = v_1 \\cdot t$",
|
||
unit: "м", a: 80,
|
||
ex: "$t = 200/25 = 8\\,\\text{с}$; $x = 10 \\cdot 8 = 80\\,\\text{м}$"
|
||
}
|
||
];
|
||
|
||
// ══ §8 Средняя скорость ══
|
||
var TASKS_P8 = [
|
||
{
|
||
q: "Средняя скорость движения определяется как:",
|
||
opts: ["Полный путь делённый на время", "Полуразность максимальной и минимальной скоростей", "Скорость в середине пути", "Сумма скоростей делённая на 2"],
|
||
a: 0,
|
||
ex: "Средняя скорость: $\\langle v \\rangle = s_{\\text{полн}} / t_{\\text{полн}}$"
|
||
},
|
||
{
|
||
q: "Первую половину пути тело шло 20 мин, вторую — 40 мин. Средняя скорость в два раза меньше скорости на первом участке. Верно ли?",
|
||
opts: ["Да, средняя скорость = (v₁+v₂)/2", "Нет. Средняя скорость ≠ среднеарифметическому, если времена разные", "Да, всегда", "Нет, средняя скорость = 0"],
|
||
a: 1,
|
||
ex: "$\\langle v \\rangle = s/t$ — отношение пути ко времени. Среднеарифметическое скоростей не даёт истинную среднюю скорость."
|
||
},
|
||
{
|
||
q: "Тело прошло 60 м за 4 с, затем 80 м за 6 с. Средняя скорость всего пути:",
|
||
hint: "$\\langle v \\rangle = (s_1+s_2)/(t_1+t_2)$",
|
||
unit: "м/с", a: 14,
|
||
ex: "$\\langle v \\rangle = (60+80)/(4+6) = 140/10 = 14\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Автомобиль ехал 2 ч со скоростью 60 км/ч, затем 1 ч со скоростью 90 км/ч. Средняя скорость всей поездки:",
|
||
hint: "$\\langle v \\rangle = (s_1+s_2)/(t_1+t_2)$",
|
||
unit: "км/ч", a: 70,
|
||
ex: "$s_1 = 120$, $s_2 = 90$; $\\langle v \\rangle = (120+90)/3 = 70\\,\\text{км/ч}$"
|
||
},
|
||
{
|
||
q: "Велосипедист первые 5 км ехал 20 мин, следующие 5 км — 40 мин. Средняя скорость всего пути:",
|
||
hint: "$\\langle v \\rangle = 10\\,\\text{км}/60\\,\\text{мин}$",
|
||
unit: "км/ч", a: 10,
|
||
ex: "$\\langle v \\rangle = 10/1 = 10\\,\\text{км/ч}$"
|
||
},
|
||
{
|
||
q: "Почему средняя скорость может быть меньше, чем каждая из частичных скоростей?",
|
||
opts: ["Это невозможно", "Средняя скорость усредняет по пути, поэтому большее время на малой скорости снижает среднюю", "Скорости прибавляются неправильно", "Из-за ошибок измерений"],
|
||
a: 1,
|
||
ex: "Если на меньшей скорости тратится больше времени, средняя скорость тянется к меньшему значению."
|
||
},
|
||
{
|
||
q: "Тело 3 с двигалось со скоростью 4 м/с, потом 7 с со скоростью 6 м/с. Средняя скорость:",
|
||
hint: "$\\langle v \\rangle = (3 \\cdot 4 + 7 \\cdot 6)/(3+7)$",
|
||
unit: "м/с", a: 5.4,
|
||
ex: "$\\langle v \\rangle = (12+42)/10 = 54/10 = 5{,}4\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Автомобиль проехал 150 км. Первые 90 км за 1 ч, остальные 60 км за 2 ч. Средняя скорость:",
|
||
hint: "$\\langle v \\rangle = 150/3$",
|
||
unit: "км/ч", a: 50,
|
||
ex: "$\\langle v \\rangle = 150/3 = 50\\,\\text{км/ч}$"
|
||
}
|
||
];
|
||
|
||
// ══ §9 Сложение скоростей (кинематика) ══
|
||
var TASKS_P9 = [
|
||
{
|
||
q: "Лодка движется относительно воды со скоростью 5 м/с. Течение реки 3 м/с. Скорость лодки относительно берега (по течению):",
|
||
hint: "Скорости направлены в одну сторону",
|
||
unit: "м/с", a: 8,
|
||
ex: "$v = 5 + 3 = 8\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Лодка движется против течения со скоростью 5 м/с. Скорость течения 2 м/с. Скорость лодки относительно берега:",
|
||
hint: "Вычитаем скорость течения",
|
||
unit: "м/с", a: 3,
|
||
ex: "$v = 5 - 2 = 3\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Лодка движется поперёк реки (перпендикулярно берегу). Скорость лодки 4 м/с, течение 3 м/с. Скорость лодки относительно берега:",
|
||
hint: "$v = \\sqrt{v_\\text{лод}^2 + v_\\text{теч}^2}$",
|
||
unit: "м/с", a: 5,
|
||
ex: "$v = \\sqrt{16+9} = \\sqrt{25} = 5\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Самолёт летит на восток со скоростью 200 м/с. Боковой ветер с севера 50 м/с. Модуль результирующей скорости:",
|
||
hint: "Перпендикулярные скорости: теорема Пифагора",
|
||
unit: "м/с", a: 206, tol: 0.02,
|
||
ex: "$v = \\sqrt{200^2+50^2} = \\sqrt{40000+2500} \\approx 206\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Закон сложения скоростей гласит:",
|
||
opts: ["$\\vec{v}_{13} = \\vec{v}_{12} \\cdot \\vec{v}_{23}$", "$\\vec{v}_{13} = \\vec{v}_{12} + \\vec{v}_{23}$", "$\\vec{v}_{13} = \\vec{v}_{12} - 2\\vec{v}_{23}$", "$v_{13} = v_{12}^2 + v_{23}^2$"],
|
||
a: 1,
|
||
ex: "Скорость тела 1 относительно тела 3 равна векторной сумме скоростей: $\\vec{v}_{13} = \\vec{v}_{12} + \\vec{v}_{23}$."
|
||
},
|
||
{
|
||
q: "Пешеход идёт в вагоне поезда назад со скоростью 1 м/с. Поезд идёт вперёд 20 м/с. Скорость пешехода относительно земли:",
|
||
hint: "Вычитаем скорость пешехода относительно вагона",
|
||
unit: "м/с", a: 19,
|
||
ex: "$v = 20 - 1 = 19\\,\\text{м/с}$ (относительно земли)"
|
||
},
|
||
{
|
||
q: "Река шириной 120 м. Лодка движется поперёк со скоростью 4 м/с. Течение 3 м/с. За сколько секунд переплывёт реку?",
|
||
hint: "Время зависит только от поперечной составляющей",
|
||
unit: "с", a: 30,
|
||
ex: "$t = 120/4 = 30\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "На сколько метров снесёт лодку течением при переправе из предыдущей задачи ($t=30\\,\\text{с}$, течение 3 м/с)?",
|
||
hint: "$x_\\text{снос} = v_\\text{теч} \\cdot t$",
|
||
unit: "м", a: 90,
|
||
ex: "$x_\\text{снос} = 3 \\cdot 30 = 90\\,\\text{м}$"
|
||
}
|
||
];
|
||
|
||
// ══ §10 Ускорение ══
|
||
var TASKS_P10 = [
|
||
{
|
||
q: "Что называют ускорением тела?",
|
||
opts: ["Пройденный путь за единицу времени", "Изменение скорости за единицу времени", "Произведение скорости на время", "Скорость в начальный момент"],
|
||
a: 1,
|
||
ex: "Ускорение $\\vec{a} = \\Delta\\vec{v}/\\Delta t$ — векторная физическая величина."
|
||
},
|
||
{
|
||
q: "Автомобиль разогнался с 0 до 20 м/с за 5 с. Ускорение:",
|
||
hint: "$a = \\Delta v / t$",
|
||
unit: "м/с²", a: 4,
|
||
ex: "$a = 20/5 = 4\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Тело двигалось со скоростью 30 м/с и затормозило до 10 м/с за 4 с. Ускорение торможения (модуль):",
|
||
hint: "$a = |\\Delta v|/t = (v_0-v)/t$",
|
||
unit: "м/с²", a: 5,
|
||
ex: "$a = (30-10)/4 = 5\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Единица измерения ускорения в СИ:",
|
||
opts: ["м/с", "м/с²", "Н·с", "кг·м/с"],
|
||
a: 1,
|
||
ex: "Ускорение измеряется в метрах в секунду в квадрате: м/с²."
|
||
},
|
||
{
|
||
q: "Тело движется с ускорением $a = 3\\,\\text{м/с}^2$. Начальная скорость $v_0 = 2\\,\\text{м/с}$. Скорость через $t = 4\\,\\text{с}$:",
|
||
hint: "$v = v_0 + at$",
|
||
unit: "м/с", a: 14,
|
||
ex: "$v = 2 + 3 \\cdot 4 = 14\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Мяч брошен вертикально вверх с $v_0 = 15\\,\\text{м/с}$. Ускорение свободного падения $g = 10\\,\\text{м/с}^2$. Через сколько секунд мяч остановится?",
|
||
hint: "$t = v_0/g$",
|
||
unit: "с", a: 1.5,
|
||
ex: "$t = 15/10 = 1{,}5\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Если скорость тела возрастает, ускорение направлено:",
|
||
opts: ["Против движения", "В сторону движения", "Перпендикулярно движению", "Направление не важно"],
|
||
a: 1,
|
||
ex: "При разгоне скорость и ускорение направлены одинаково."
|
||
},
|
||
{
|
||
q: "Поезд тормозит с $v_0 = 36\\,\\text{м/с}$ с ускорением $a = 1\\,\\text{м/с}^2$. Через сколько секунд он остановится?",
|
||
hint: "$t = v_0/a$",
|
||
unit: "с", a: 36,
|
||
ex: "$t = 36/1 = 36\\,\\text{с}$"
|
||
}
|
||
];
|
||
|
||
// ══ §11 Равноускоренное движение: скорость ══
|
||
var TASKS_P11 = [
|
||
{
|
||
q: "Формула скорости при равноускоренном движении:",
|
||
opts: ["$v = v_0 / (at)$", "$v = v_0 + at$", "$v = v_0 \\cdot a \\cdot t$", "$v = at^2$"],
|
||
a: 1,
|
||
ex: "При равноускоренном движении: $v = v_0 + at$."
|
||
},
|
||
{
|
||
q: "Тело начинает движение из покоя с ускорением $a = 5\\,\\text{м/с}^2$. Скорость через $t = 6\\,\\text{с}$:",
|
||
hint: "$v = 0 + at$",
|
||
unit: "м/с", a: 30,
|
||
ex: "$v = 5 \\cdot 6 = 30\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "При равноускоренном движении график $v(t)$ — это:",
|
||
opts: ["Парабола", "Прямая линия", "Гипербола", "Синусоида"],
|
||
a: 1,
|
||
ex: "$v = v_0 + at$ — линейная функция от $t$, прямая линия."
|
||
},
|
||
{
|
||
q: "Из графика $v(t)$ можно определить ускорение как:",
|
||
opts: ["Ординату при $t=0$", "Площадь под графиком", "Тангенс угла наклона прямой", "Максимальную скорость"],
|
||
a: 2,
|
||
ex: "Наклон прямой $v(t)$ — ускорение: $a = \\tan\\alpha = \\Delta v/\\Delta t$."
|
||
},
|
||
{
|
||
q: "Автомобиль движется со скоростью $v_0 = 10\\,\\text{м/с}$ и разгоняется с $a = 2\\,\\text{м/с}^2$. Скорость через $t = 5\\,\\text{с}$:",
|
||
hint: "$v = v_0 + at$",
|
||
unit: "м/с", a: 20,
|
||
ex: "$v = 10 + 2 \\cdot 5 = 20\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело тормозит: $v_0 = 25\\,\\text{м/с}$, $a = -5\\,\\text{м/с}^2$. Через сколько секунд остановится?",
|
||
hint: "$0 = v_0 + at \\Rightarrow t = v_0/|a|$",
|
||
unit: "с", a: 5,
|
||
ex: "$t = 25/5 = 5\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Велосипедист имеет начальную скорость 4 м/с и разгоняется с ускорением 1 м/с². Какова его скорость через 8 с?",
|
||
hint: "$v = v_0 + at$",
|
||
unit: "м/с", a: 12,
|
||
ex: "$v = 4 + 1 \\cdot 8 = 12\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Площадь под графиком $v(t)$ при равноускоренном движении соответствует:",
|
||
opts: ["Ускорению", "Пути, пройденному телом", "Силе", "Мощности"],
|
||
a: 1,
|
||
ex: "Площадь под $v(t)$ — это путь: $s = \\int v\\,dt$."
|
||
}
|
||
];
|
||
|
||
// ══ §12 Равноускоренное движение: координата x(t) ══
|
||
var TASKS_P12 = [
|
||
{
|
||
q: "Формула перемещения при равноускоренном движении (из покоя):",
|
||
opts: ["$s = v_0 t$", "$s = at$", "$s = \\dfrac{at^2}{2}$", "$s = v_0^2/(2a)$"],
|
||
a: 2,
|
||
ex: "Из покоя ($v_0=0$): $s = \\dfrac{at^2}{2}$."
|
||
},
|
||
{
|
||
q: "Тело начинает движение из покоя с ускорением $a = 2\\,\\text{м/с}^2$. Путь за $t = 4\\,\\text{с}$:",
|
||
hint: "$s = at^2/2$",
|
||
unit: "м", a: 16,
|
||
ex: "$s = 2 \\cdot 16/2 = 16\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Тело: $v_0 = 6\\,\\text{м/с}$, $a = 2\\,\\text{м/с}^2$, $t = 5\\,\\text{с}$. Путь:",
|
||
hint: "$s = v_0 t + at^2/2$",
|
||
unit: "м", a: 55,
|
||
ex: "$s = 6 \\cdot 5 + 2 \\cdot 25/2 = 30+25 = 55\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Автомобиль разгонялся с места. За первые 3 с прошёл 9 м. Ускорение:",
|
||
hint: "$s = at^2/2 \\Rightarrow a = 2s/t^2$",
|
||
unit: "м/с²", a: 2,
|
||
ex: "$a = 2 \\cdot 9/9 = 2\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "График $x(t)$ при равноускоренном движении из покоя — это:",
|
||
opts: ["Прямая линия", "Парабола", "Горизонтальная линия", "Гипербола"],
|
||
a: 1,
|
||
ex: "$x = x_0 + v_0 t + at^2/2$ — при $v_0=0$: $x \\propto t^2$ — парабола."
|
||
},
|
||
{
|
||
q: "Тело тормозит: $v_0 = 20\\,\\text{м/с}$, $a = -4\\,\\text{м/с}^2$. Путь до остановки:",
|
||
hint: "$v^2 = v_0^2 - 2as \\Rightarrow s = v_0^2/(2a)$",
|
||
unit: "м", a: 50,
|
||
ex: "$s = 20^2/(2 \\cdot 4) = 400/8 = 50\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Тело: $x_0 = 10\\,\\text{м}$, $v_0 = 0$, $a = 3\\,\\text{м/с}^2$. Координата через $t = 4\\,\\text{с}$:",
|
||
hint: "$x = x_0 + at^2/2$",
|
||
unit: "м", a: 34,
|
||
ex: "$x = 10 + 3 \\cdot 16/2 = 10+24 = 34\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "При равноускоренном движении путь за $n$-ю секунду больше, чем за $(n-1)$-ю. Почему?",
|
||
opts: ["Скорость уменьшается", "Ускорение возрастает", "Скорость возрастает — за каждую следующую секунду тело проходит больший путь", "Это неверно"],
|
||
a: 2,
|
||
ex: "При разгоне скорость растёт, поэтому расстояния за равные промежутки времени нарастают."
|
||
}
|
||
];
|
||
|
||
// ══ §13 Равномерное движение по окружности ══
|
||
var TASKS_P13 = [
|
||
{
|
||
q: "Что такое период обращения?",
|
||
opts: ["Скорость движения по окружности", "Время одного полного оборота", "Число оборотов в секунду", "Радиус окружности"],
|
||
a: 1,
|
||
ex: "Период $T$ — время одного полного оборота."
|
||
},
|
||
{
|
||
q: "Что такое частота вращения?",
|
||
opts: ["Время одного оборота", "Число оборотов в единицу времени", "Длина окружности", "Ускорение"],
|
||
a: 1,
|
||
ex: "Частота $\\nu = 1/T$ — число оборотов за единицу времени (единица — Гц = 1/с)."
|
||
},
|
||
{
|
||
q: "Тело совершает 5 оборотов за 2 с. Период обращения:",
|
||
hint: "$T = t/N$",
|
||
unit: "с", a: 0.4,
|
||
ex: "$T = 2/5 = 0{,}4\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Скорость движения по окружности: колесо радиуса $r = 0{,}5\\,\\text{м}$ делает $n = 10\\,\\text{об/с}$. Линейная скорость:",
|
||
hint: "$v = 2\\pi r / T = 2\\pi r \\cdot \\nu$",
|
||
unit: "м/с", a: 31.4, tol: 0.03,
|
||
ex: "$v = 2\\pi \\cdot 0{,}5 \\cdot 10 \\approx 31{,}4\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Направление скорости при движении по окружности:",
|
||
opts: ["По радиусу к центру", "По радиусу от центра", "По касательной к окружности", "Вдоль оси вращения"],
|
||
a: 2,
|
||
ex: "Мгновенная скорость всегда направлена по касательной к траектории."
|
||
},
|
||
{
|
||
q: "Тело равномерно движется по окружности. Его скорость:",
|
||
opts: ["Не изменяется совсем", "Постоянна по модулю, но изменяется по направлению", "Постоянно возрастает", "Равна нулю"],
|
||
a: 1,
|
||
ex: "При равномерном движении по окружности: $|v| = \\text{const}$, но направление меняется непрерывно."
|
||
},
|
||
{
|
||
q: "Колесо вращается с периодом $T = 0{,}2\\,\\text{с}$. Частота вращения:",
|
||
hint: "$\\nu = 1/T$",
|
||
unit: "об/с", a: 5,
|
||
ex: "$\\nu = 1/0{,}2 = 5\\,\\text{об/с}$"
|
||
},
|
||
{
|
||
q: "Точка находится на радиусе $r = 2\\,\\text{м}$ вращающегося диска с $T = 4\\,\\text{с}$. Линейная скорость точки:",
|
||
hint: "$v = 2\\pi r/T$",
|
||
unit: "м/с", a: 3.14, tol: 0.03,
|
||
ex: "$v = 2\\pi \\cdot 2/4 = \\pi \\approx 3{,}14\\,\\text{м/с}$"
|
||
}
|
||
];
|
||
|
||
// ══ §14 Центростремительное ускорение ══
|
||
var TASKS_P14 = [
|
||
{
|
||
q: "Центростремительное ускорение направлено:",
|
||
opts: ["По касательной к траектории", "В сторону движения", "К центру окружности", "Против движения"],
|
||
a: 2,
|
||
ex: "Центростремительное ускорение всегда направлено к центру окружности."
|
||
},
|
||
{
|
||
q: "Формула центростремительного ускорения:",
|
||
opts: ["$a = v \\cdot T$", "$a = v^2/r$", "$a = vr$", "$a = r/v$"],
|
||
a: 1,
|
||
ex: "$a_\\text{цс} = v^2/r = \\omega^2 r$"
|
||
},
|
||
{
|
||
q: "Тело движется по окружности радиуса $r = 4\\,\\text{м}$ со скоростью $v = 8\\,\\text{м/с}$. Центростремительное ускорение:",
|
||
hint: "$a = v^2/r$",
|
||
unit: "м/с²", a: 16,
|
||
ex: "$a = 64/4 = 16\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Спутник летит по круговой орбите радиуса $R = 7000\\,\\text{км}$ со скоростью $v = 7{,}8\\,\\text{км/с}$. Центростремительное ускорение (в м/с²):",
|
||
hint: "$a = v^2/R$; перевести единицы",
|
||
unit: "м/с²", a: 8.69, tol: 0.05,
|
||
ex: "$a = (7800)^2/(7\\cdot10^6) \\approx 8{,}69\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Центростремительное ускорение обеспечивается:",
|
||
opts: ["Только силой тяжести", "Равнодействующей сил, направленной к центру орбиты", "Скоростью тела", "Инерцией"],
|
||
a: 1,
|
||
ex: "Центростремительное ускорение вызывается силой, направленной к центру: $F = ma_\\text{цс}$."
|
||
},
|
||
{
|
||
q: "Автомобиль проходит поворот радиуса $r = 50\\,\\text{м}$ со скоростью $v = 20\\,\\text{м/с}$. Центростремительное ускорение:",
|
||
hint: "$a = v^2/r$",
|
||
unit: "м/с²", a: 8,
|
||
ex: "$a = 400/50 = 8\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Если радиус окружности удвоить, а скорость оставить прежней, центростремительное ускорение:",
|
||
opts: ["Удвоится", "Уменьшится в 2 раза", "Увеличится в 4 раза", "Не изменится"],
|
||
a: 1,
|
||
ex: "$a = v^2/r$. При удвоении $r$ ускорение уменьшается в 2 раза."
|
||
},
|
||
{
|
||
q: "Точка на ободе колеса радиуса $r = 0{,}3\\,\\text{м}$ вращается с частотой $\\nu = 5\\,\\text{об/с}$. Центростремительное ускорение:",
|
||
hint: "$v = 2\\pi r\\nu$, $a = v^2/r = 4\\pi^2 r \\nu^2$",
|
||
unit: "м/с²", a: 296.1, tol: 0.03,
|
||
ex: "$a = 4\\pi^2 \\cdot 0{,}3 \\cdot 25 \\approx 296\\,\\text{м/с}^2$"
|
||
}
|
||
];
|
||
|
||
// ══ §15 Первый закон Ньютона ══
|
||
var TASKS_P15 = [
|
||
{
|
||
q: "Тело движется равномерно прямолинейно. Сила тяги $F_\text{тяга} = 80\,\text{Н}$. Чему равна сила трения?",
|
||
hint: "$\\vec{F}_\\text{рез} = 0 \\Rightarrow F_\\text{тяга} = F_\\text{тр}$",
|
||
unit: "Н", a: 80,
|
||
ex: "При равномерном движении $a = 0$, значит $F_\\text{рез} = 0$: $F_\\text{тр} = F_\\text{тяга} = 80\\,\\text{Н}$."
|
||
},
|
||
{
|
||
q: "Тело равномерно едет по горизонтальной поверхности. Сила сопротивления $F_\\text{сопр} = 200\\,\\text{Н}$. Чему равна сила тяги двигателя?",
|
||
hint: "Равномерное движение: $\\vec{F}_\\text{рез} = 0$",
|
||
unit: "Н", a: 200,
|
||
ex: "При $a = 0$: $F_\\text{тяга} = F_\\text{сопр} = 200\\,\\text{Н}$."
|
||
},
|
||
{
|
||
q: "Что такое инерция?",
|
||
opts: [
|
||
"Сила, действующая на тело при ускорении",
|
||
"Свойство тела сохранять скорость в отсутствие сил или при скомпенсированных силах",
|
||
"Ускорение тела под действием тяги",
|
||
"Сила тяжести"
|
||
],
|
||
a: 1,
|
||
ex: "Инерция — свойство тела сохранять скорость (и её направление) при $\\vec{F}_\\text{рез} = 0$."
|
||
},
|
||
{
|
||
q: "Пассажир в автобусе откидывается назад при резком старте. Причина?",
|
||
opts: [
|
||
"На пассажира действует сила тяги двигателя",
|
||
"Пассажир обладает инерцией и стремится остаться в покое",
|
||
"Реакция опоры уменьшилась",
|
||
"Сила трения исчезает при ускорении"
|
||
],
|
||
a: 1,
|
||
ex: "Тело (пассажир) стремится сохранить исходное состояние покоя по инерции, пока автобус ускоряется вперёд."
|
||
},
|
||
{
|
||
q: "Что такое инерциальная система отсчёта (ИСО)?",
|
||
opts: [
|
||
"Система отсчёта, связанная с покоящимся телом",
|
||
"Система отсчёта, в которой выполняется первый закон Ньютона",
|
||
"Система отсчёта, связанная с ускоряющимся телом",
|
||
"Любая система отсчёта, связанная с Землёй"
|
||
],
|
||
a: 1,
|
||
ex: "ИСО — та, в которой тело без действия сил покоится или движется равномерно прямолинейно (1-й закон)."
|
||
},
|
||
{
|
||
q: "Мяч брошен горизонтально. Какова равнодействующая всех сил во время полёта (без учёта сопротивления воздуха)?",
|
||
opts: [
|
||
"Равна нулю",
|
||
"Равна силе тяжести, направлена вертикально вниз",
|
||
"Равна начальной силе броска",
|
||
"Равна силе нормального давления"
|
||
],
|
||
a: 1,
|
||
ex: "В полёте на мяч действует только сила тяжести (воздух не учитываем). $\\vec{F}_\\text{рез} = m\\vec{g}$ — вертикально вниз."
|
||
},
|
||
{
|
||
q: "На тело одновременно действуют сила тяги $F_1 = 150\\,\\text{Н}$ вправо и сила трения $F_2 = 150\\,\\text{Н}$ влево. Каково ускорение тела?",
|
||
opts: [
|
||
"$a = 300/m$",
|
||
"$a = 150/m$",
|
||
"$a = 0$",
|
||
"Зависит от массы тела"
|
||
],
|
||
a: 2,
|
||
ex: "$\\vec{F}_\\text{рез} = 150 - 150 = 0\\,\\text{Н}$, поэтому $a = 0$. Тело движется равномерно (или стоит)."
|
||
},
|
||
{
|
||
q: "Теннисный мяч летит горизонтально. Никаких сил нет. Что произойдёт?",
|
||
opts: [
|
||
"Мяч начнёт ускоряться",
|
||
"Мяч замедлится и остановится",
|
||
"Мяч будет двигаться равномерно прямолинейно вечно",
|
||
"Мяч упадёт под действием инерции"
|
||
],
|
||
a: 2,
|
||
ex: "По 1-му закону Ньютона: без сил $\\vec{F}_\\text{рез} = 0 \\Rightarrow a = 0$ — мяч движется равномерно прямолинейно."
|
||
},
|
||
];
|
||
|
||
// ══ §16 Масса. Сила тяжести ══
|
||
var TASKS_P16 = [
|
||
{
|
||
q: "Найдите силу тяжести тела массой $m = 8\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$.",
|
||
hint: "$F_\\text{т} = mg$",
|
||
unit: "Н", a: 80,
|
||
ex: "$F_\\text{т} = 8 \\cdot 10 = 80\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Сила тяжести тела $F_\\text{т} = 250\\,\\text{Н}$, $g = 10\\,\\text{м/с}^2$. Найдите массу тела.",
|
||
hint: "$m = F_\\text{т}/g$",
|
||
unit: "кг", a: 25,
|
||
ex: "$m = 250/10 = 25\\,\\text{кг}$"
|
||
},
|
||
{
|
||
q: "Плотность вещества $\\rho = 2700\\,\\text{кг/м}^3$ (алюминий), объём $V = 0{,}002\\,\\text{м}^3$. Найдите массу тела.",
|
||
hint: "$m = \\rho V$",
|
||
unit: "кг", a: 5.4,
|
||
ex: "$m = 2700 \\cdot 0{,}002 = 5{,}4\\,\\text{кг}$"
|
||
},
|
||
{
|
||
q: "Масса тела $m = 10\\,\\text{кг}$. Найдите силу тяжести на Луне, где $g_\\text{Л} = 1{,}6\\,\\text{м/с}^2$.",
|
||
hint: "$F_\\text{т} = mg_\\text{Л}$",
|
||
unit: "Н", a: 16,
|
||
ex: "$F_\\text{т} = 10 \\cdot 1{,}6 = 16\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Что характеризует масса тела?",
|
||
opts: [
|
||
"Объём тела",
|
||
"Меру инертности тела",
|
||
"Силу тяжести тела",
|
||
"Скорость тела"
|
||
],
|
||
a: 1,
|
||
ex: "Масса — количественная мера инертности: чем больше масса, тем труднее разогнать или затормозить тело."
|
||
},
|
||
{
|
||
q: "Как изменится масса тела при перемещении с Земли на Луну?",
|
||
opts: [
|
||
"Уменьшится в 6 раз",
|
||
"Увеличится в 6 раз",
|
||
"Не изменится",
|
||
"Зависит от скорости перемещения"
|
||
],
|
||
a: 2,
|
||
ex: "Масса — фундаментальная характеристика тела, не зависящая от гравитационного поля и положения."
|
||
},
|
||
{
|
||
q: "Воздух в комнате $6 \\times 4 \\times 3\\,\\text{м}$, плотность воздуха $\\rho = 1{,}25\\,\\text{кг/м}^3$. Найдите массу воздуха в комнате.",
|
||
hint: "$V = 6 \\cdot 4 \\cdot 3\\,\\text{м}^3$; $m = \\rho V$",
|
||
unit: "кг", a: 90,
|
||
ex: "$V = 72\\,\\text{м}^3$; $m = 1{,}25 \\cdot 72 = 90\\,\\text{кг}$"
|
||
},
|
||
{
|
||
q: "Тело весит на Земле $F_\\text{т} = 600\\,\\text{Н}$. На Луне ($g_\\text{Л} = 1{,}6\\,\\text{м/с}^2$) сила тяжести равна?",
|
||
hint: "Сначала найди массу: $m = F_\\text{т}/g$, затем $F_\\text{Л} = mg_\\text{Л}$",
|
||
unit: "Н", a: 96,
|
||
ex: "$m = 600/10 = 60\\,\\text{кг}$; $F_\\text{Л} = 60 \\cdot 1{,}6 = 96\\,\\text{Н}$"
|
||
},
|
||
];
|
||
|
||
// ══ §17 Второй закон Ньютона ══
|
||
var TASKS_P17 = [
|
||
{
|
||
q: "Тело массой $m = 5\\,\\text{кг}$ движется с ускорением $a = 4\\,\\text{м/с}^2$. Найдите равнодействующую сил.",
|
||
hint: "$F = ma$",
|
||
unit: "Н", a: 20,
|
||
ex: "$F = 5 \\cdot 4 = 20\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "На тело действует сила $F = 36\\,\\text{Н}$, ускорение $a = 4\\,\\text{м/с}^2$. Найдите массу тела.",
|
||
hint: "$m = F/a$",
|
||
unit: "кг", a: 9,
|
||
ex: "$m = 36/4 = 9\\,\\text{кг}$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 8\\,\\text{кг}$ тянут силой $F = 32\\,\\text{Н}$. Найдите ускорение тела (трение пренебречь).",
|
||
hint: "$a = F/m$",
|
||
unit: "м/с²", a: 4,
|
||
ex: "$a = 32/8 = 4\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Тело массой $m = 10\\,\\text{кг}$: сила тяги $F_\\text{тяга} = 80\\,\\text{Н}$, сила трения $F_\\text{тр} = 30\\,\\text{Н}$. Найдите ускорение.",
|
||
hint: "$F_\\text{рез} = F_\\text{тяга} - F_\\text{тр}$; $a = F_\\text{рез}/m$",
|
||
unit: "м/с²", a: 5,
|
||
ex: "$F_\\text{рез} = 80 - 30 = 50\\,\\text{Н}$; $a = 50/10 = 5\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Как изменится ускорение тела, если равнодействующую увеличить в 4 раза?",
|
||
opts: [
|
||
"Уменьшится в 4 раза",
|
||
"Увеличится в 4 раза",
|
||
"Увеличится в 2 раза",
|
||
"Не изменится"
|
||
],
|
||
a: 1,
|
||
ex: "$a = F/m$: при $F' = 4F$ и $m = \\text{const}$ получаем $a' = 4F/m = 4a$."
|
||
},
|
||
{
|
||
q: "Как изменится ускорение тела, если при постоянной силе массу уменьшить в 3 раза?",
|
||
opts: [
|
||
"Уменьшится в 3 раза",
|
||
"Увеличится в 9 раз",
|
||
"Увеличится в 3 раза",
|
||
"Не изменится"
|
||
],
|
||
a: 2,
|
||
ex: "$a = F/m$: при $m' = m/3$ получаем $a' = F/(m/3) = 3F/m = 3a$."
|
||
},
|
||
{
|
||
q: "Ракета массой $m = 500\\,\\text{кг}$. Сила тяги $F = 10000\\,\\text{Н}$ (вертикально вверх), $g = 10\\,\\text{м/с}^2$. Найдите ускорение ракеты.",
|
||
hint: "$F_\\text{рез} = F_\\text{тяга} - mg$; $a = F_\\text{рез}/m$",
|
||
unit: "м/с²", a: 10,
|
||
ex: "$F_\\text{рез} = 10000 - 500 \\cdot 10 = 5000\\,\\text{Н}$; $a = 5000/500 = 10\\,\\text{м/с}^2$"
|
||
},
|
||
{
|
||
q: "Сила $F = 1\\,\\text{Н}$ сообщает телу ускорение $a = 1\\,\\text{м/с}^2$. Какова масса тела?",
|
||
hint: "$m = F/a$",
|
||
unit: "кг", a: 1,
|
||
ex: "$m = 1/1 = 1\\,\\text{кг}$. Именно так определяется единица «1 Ньютон»."
|
||
},
|
||
{
|
||
q: "Автомобиль массой $m = 1000\\,\\text{кг}$ разгоняется с $v_0 = 0$ до $v = 20\\,\\text{м/с}$ за $\\Delta t = 10\\,\\text{с}$. Найдите силу тяги (трение пренебречь).",
|
||
hint: "$a = \\Delta v/\\Delta t$; $F = ma$",
|
||
unit: "Н", a: 2000,
|
||
ex: "$a = 20/10 = 2\\,\\text{м/с}^2$; $F = 1000 \\cdot 2 = 2000\\,\\text{Н}$"
|
||
},
|
||
];
|
||
|
||
// ══ §18 Третий закон Ньютона ══
|
||
var TASKS_P18 = [
|
||
{
|
||
q: "Тело A давит на тело B с силой $F = 120\\,\\text{Н}$. С какой силой тело B действует на тело A?",
|
||
opts: [
|
||
"$60\\,\\text{Н}$ в том же направлении",
|
||
"$120\\,\\text{Н}$ в противоположном направлении",
|
||
"$240\\,\\text{Н}$ в противоположном направлении",
|
||
"Нулевая — B неподвижно"
|
||
],
|
||
a: 1,
|
||
ex: "По 3-му закону Ньютона: $|\\vec{F}_{A \\to B}| = |\\vec{F}_{B \\to A}| = 120\\,\\text{Н}$, силы противоположны."
|
||
},
|
||
{
|
||
q: "Лошадь тянет телегу с силой $F = 500\\,\\text{Н}$. С какой силой телега действует на лошадь?",
|
||
hint: "$\\vec{F}_{1\\to2} = -\\vec{F}_{2\\to1}$",
|
||
unit: "Н", a: 500,
|
||
ex: "По 3-му закону: $|\\vec{F}_{\\text{телега} \\to \\text{лошадь}}| = 500\\,\\text{Н}$ (противоположно направлению тяги)."
|
||
},
|
||
{
|
||
q: "Чем отличаются силы пары по 3-му закону Ньютона от двух сил, уравновешивающих тело?",
|
||
opts: [
|
||
"Ничем не отличаются",
|
||
"Силы пары 3-го закона приложены к разным телам и не могут уравновесить одно тело",
|
||
"Силы пары 3-го закона всегда направлены в одну сторону",
|
||
"Силы пары 3-го закона могут иметь разную природу"
|
||
],
|
||
a: 1,
|
||
ex: "Пара 3-го закона приложена к <b>разным</b> телам — они не компенсируют друг друга. Уравновешивающие силы приложены к <b>одному</b> телу."
|
||
},
|
||
{
|
||
q: "Два конькобёжца стоят на льду и отталкиваются. Коньки не тормозят. Что произойдёт?",
|
||
opts: [
|
||
"Оба останутся на месте",
|
||
"Более тяжёлый останется на месте",
|
||
"Оба начнут двигаться в противоположных направлениях",
|
||
"Только лёгкий начнёт двигаться"
|
||
],
|
||
a: 2,
|
||
ex: "По 3-му закону: силы равны, но направлены в разные стороны. Оба конькобёжца получат ускорение (разное, зависящее от массы)."
|
||
},
|
||
{
|
||
q: "Что из перечисленного является примером применения 3-го закона Ньютона?",
|
||
opts: [
|
||
"Движение тела по инерции",
|
||
"Прыжок с лодки на берег (лодка отплывает назад)",
|
||
"Ускорение тела под действием силы",
|
||
"Равновесие тела на опоре"
|
||
],
|
||
a: 1,
|
||
ex: "При прыжке человек отталкивается от лодки: человек действует на лодку, лодка с равной силой действует на человека — они расходятся в разные стороны."
|
||
},
|
||
{
|
||
q: "Что означает принцип относительности Галилея?",
|
||
opts: [
|
||
"Скорость света одинакова во всех системах отсчёта",
|
||
"Все тела падают с одинаковым ускорением",
|
||
"Законы механики одинаковы во всех инерциальных системах отсчёта",
|
||
"Масса тела не зависит от скорости"
|
||
],
|
||
a: 2,
|
||
ex: "Принцип Галилея: механические явления протекают одинаково в любой ИСО. Физику нельзя отличить, находясь внутри равномерно движущегося вагона."
|
||
},
|
||
{
|
||
q: "Силы пары по 3-му закону Ньютона:",
|
||
opts: [
|
||
"Всегда разной природы",
|
||
"Всегда одинаковой природы",
|
||
"Могут быть разной природы",
|
||
"Обе всегда направлены вниз"
|
||
],
|
||
a: 1,
|
||
ex: "Если тела взаимодействуют гравитационно — обе силы гравитационные. Если упруго — обе упругие. Природа сил в паре всегда одна."
|
||
},
|
||
{
|
||
q: "Книга лежит на столе. Какие две силы образуют пару по 3-му закону Ньютона с силой тяжести книги $m\\vec{g}$?",
|
||
opts: [
|
||
"Сила реакции стола $\\vec{N}$ на книгу",
|
||
"Сила тяжести Земли, с которой книга притягивает Землю к себе",
|
||
"Давление воздуха на книгу",
|
||
"Трение между книгой и столом"
|
||
],
|
||
a: 1,
|
||
ex: "Сила тяжести книги — Земля тянет книгу вниз. Парная сила — книга тянет Землю вверх с той же силой. Обе гравитационные, на разных телах."
|
||
},
|
||
];
|
||
|
||
// ══ §19 Закон Гука ══
|
||
var TASKS_P19 = [
|
||
{
|
||
q: "Жёсткость пружины $k = 400\\,\\text{Н/м}$, деформация $\\Delta l = 0{,}05\\,\\text{м}$. Найдите силу упругости.",
|
||
hint: "$F_\\text{упр} = k|\\Delta l|$",
|
||
unit: "Н", a: 20,
|
||
ex: "$F_\\text{упр} = 400 \\cdot 0{,}05 = 20\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Сила упругости $F = 30\\,\\text{Н}$, жёсткость $k = 600\\,\\text{Н/м}$. Найдите деформацию пружины.",
|
||
hint: "$\\Delta l = F/k$",
|
||
unit: "м", a: 0.05,
|
||
ex: "$\\Delta l = 30/600 = 0{,}05\\,\\text{м} = 5\\,\\text{см}$"
|
||
},
|
||
{
|
||
q: "Пружина деформирована на $x = 0{,}08\\,\\text{м}$, сила упругости $F = 120\\,\\text{Н}$. Найдите жёсткость.",
|
||
hint: "$k = F/\\Delta l$",
|
||
unit: "Н/м", a: 1500,
|
||
ex: "$k = 120/0{,}08 = 1500\\,\\text{Н/м}$"
|
||
},
|
||
{
|
||
q: "На пружину жёсткостью $k = 100\\,\\text{Н/м}$ подвесили груз $m = 0{,}5\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$. Найдите деформацию пружины при равновесии.",
|
||
hint: "$F_\\text{упр} = F_\\text{т} = mg$; $\\Delta l = mg/k$",
|
||
unit: "м", a: 0.05,
|
||
ex: "$\\Delta l = mg/k = 0{,}5 \\cdot 10 / 100 = 0{,}05\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Пружина жёсткостью $k = 200\\,\\text{Н/м}$ растянута силой $F = 50\\,\\text{Н}$. Найдите деформацию.",
|
||
hint: "$\\Delta l = F/k$",
|
||
unit: "м", a: 0.25,
|
||
ex: "$\\Delta l = 50/200 = 0{,}25\\,\\text{м} = 25\\,\\text{см}$"
|
||
},
|
||
{
|
||
q: "При какой деформации выполняется закон Гука?",
|
||
opts: [
|
||
"При любой деформации",
|
||
"Только при пластической деформации",
|
||
"Только при упругой деформации (не превышающей предела упругости)",
|
||
"Только при деформациях сжатия"
|
||
],
|
||
a: 2,
|
||
ex: "Закон Гука выполняется для упругой деформации — когда тело возвращается к исходной форме. При пластической деформации закон нарушается."
|
||
},
|
||
{
|
||
q: "Какова природа сил упругости?",
|
||
opts: [
|
||
"Гравитационная",
|
||
"Электромагнитная",
|
||
"Ядерная",
|
||
"Термодинамическая"
|
||
],
|
||
a: 1,
|
||
ex: "Силы упругости обусловлены электромагнитным взаимодействием атомов и молекул тела при деформации."
|
||
},
|
||
{
|
||
q: "Как изменится деформация пружины, если жёсткость увеличить в 2 раза при той же силе?",
|
||
opts: [
|
||
"Увеличится в 2 раза",
|
||
"Уменьшится в 2 раза",
|
||
"Не изменится",
|
||
"Увеличится в 4 раза"
|
||
],
|
||
a: 1,
|
||
ex: "$\\Delta l = F/k$: при $k' = 2k$ → $\\Delta l' = F/(2k) = \\Delta l/2$ — уменьшится в 2 раза."
|
||
},
|
||
{
|
||
q: "Груз $m = 2\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$ подвешен к пружине, удлинение $\\Delta l = 4\\,\\text{см} = 0{,}04\\,\\text{м}$. Найдите жёсткость пружины.",
|
||
hint: "При равновесии: $F_\\text{упр} = mg$; $k = mg/\\Delta l$",
|
||
unit: "Н/м", a: 500,
|
||
ex: "$k = mg/\\Delta l = 2 \\cdot 10 / 0{,}04 = 500\\,\\text{Н/м}$"
|
||
},
|
||
];
|
||
|
||
// ══ §20 Силы трения ══
|
||
var TASKS_P20 = [
|
||
{
|
||
q: "Коэффициент трения $\\mu = 0{,}4$, сила нормального давления $N = 150\\,\\text{Н}$. Найдите силу трения скольжения.",
|
||
hint: "$F_\\text{тр} = \\mu N$",
|
||
unit: "Н", a: 60,
|
||
ex: "$F_\\text{тр} = 0{,}4 \\cdot 150 = 60\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Сила трения $F_\\text{тр} = 45\\,\\text{Н}$, сила нормального давления $N = 150\\,\\text{Н}$. Найдите коэффициент трения.",
|
||
hint: "$\\mu = F_\\text{тр}/N$",
|
||
unit: "", a: 0.3, tol: 0.05,
|
||
ex: "$\\mu = 45/150 = 0{,}3$"
|
||
},
|
||
{
|
||
q: "Брусок массой $m = 5\\,\\text{кг}$ скользит по горизонтальной поверхности, $\\mu = 0{,}3$, $g = 10\\,\\text{м/с}^2$. Найдите силу трения скольжения.",
|
||
hint: "На горизонтали: $N = mg$; $F_\\text{тр} = \\mu mg$",
|
||
unit: "Н", a: 15,
|
||
ex: "$N = 5 \\cdot 10 = 50\\,\\text{Н}$; $F_\\text{тр} = 0{,}3 \\cdot 50 = 15\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Куда направлена сила трения скольжения?",
|
||
opts: [
|
||
"В направлении движения тела",
|
||
"Перпендикулярно поверхности",
|
||
"Против направления скорости скольжения",
|
||
"Всегда вертикально вниз"
|
||
],
|
||
a: 2,
|
||
ex: "Сила трения скольжения всегда направлена противоположно скорости скольжения тела относительно поверхности."
|
||
},
|
||
{
|
||
q: "Максимальная сила трения покоя при $\\mu_\\text{пок} = 0{,}5$, $N = 80\\,\\text{Н}$?",
|
||
hint: "$F_\\text{тр.пок}^{max} = \\mu_\\text{пок} N$",
|
||
unit: "Н", a: 40,
|
||
ex: "$F_\\text{тр.пок}^{max} = 0{,}5 \\cdot 80 = 40\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Тело движется равномерно. Сила тяги $F = 120\\,\\text{Н}$, масса $m = 30\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$. Найдите $\\mu$.",
|
||
hint: "При $a=0$: $F_\\text{тяга} = F_\\text{тр} = \\mu mg$; $\\mu = F/(mg)$",
|
||
unit: "", a: 0.4, tol: 0.05,
|
||
ex: "$\\mu = F/(mg) = 120/(30 \\cdot 10) = 0{,}4$"
|
||
},
|
||
{
|
||
q: "Зависит ли сила трения скольжения от площади соприкасающихся поверхностей?",
|
||
opts: [
|
||
"Да, больше площадь — больше трение",
|
||
"Нет, не зависит от площади контакта",
|
||
"Зависит, но только при малых скоростях",
|
||
"Зависит при смазке"
|
||
],
|
||
a: 1,
|
||
ex: "Сила трения $F_\\text{тр} = \\mu N$ — не зависит от площади контакта. Это экспериментальный факт (при одинаковой нормальной силе)."
|
||
},
|
||
{
|
||
q: "Тело массой $m = 10\\,\\text{кг}$ начали толкать силой $F = 20\\,\\text{Н}$. $\\mu_\\text{пок} = 0{,}3$, $g = 10\\,\\text{м/с}^2$. Тронется ли тело с места?",
|
||
opts: [
|
||
"Да, тронется — $F > F_\\text{тр.пок}^{max}$",
|
||
"Нет, не тронется — $F < F_\\text{тр.пок}^{max}$",
|
||
"Тронется только при $F = F_\\text{тр.пок}^{max}$",
|
||
"Зависит от времени действия силы"
|
||
],
|
||
a: 1,
|
||
ex: "$F_\\text{тр.пок}^{max} = 0{,}3 \\cdot 10 \\cdot 10 = 30\\,\\text{Н}$. $F = 20\\,\\text{Н} < 30\\,\\text{Н}$ → тело не тронется."
|
||
},
|
||
{
|
||
q: "Автомобиль $m = 800\\,\\text{кг}$ тормозит до остановки. $\\mu = 0{,}5$, $g = 10\\,\\text{м/с}^2$. Найдите тормозную силу.",
|
||
hint: "$F_\\text{тр} = \\mu mg$",
|
||
unit: "Н", a: 4000,
|
||
ex: "$F_\\text{тр} = 0{,}5 \\cdot 800 \\cdot 10 = 4000\\,\\text{Н}$"
|
||
},
|
||
];
|
||
|
||
// ══ §21 Движение тела под действием силы тяжести ══
|
||
var TASKS_P21 = [
|
||
{
|
||
q: "Тело падает свободно с высоты $h = 20\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите время падения.",
|
||
hint: "$t = \\sqrt{2h/g}$",
|
||
unit: "с", a: 2,
|
||
ex: "$t = \\sqrt{2 \\cdot 20/10} = \\sqrt{4} = 2\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Тело падает свободно с высоты $h = 45\\,\\text{м}$, $g = 10\\,\\text{м/с}^2$. Найдите скорость тела у земли.",
|
||
hint: "$v = \\sqrt{2gh}$",
|
||
unit: "м/с", a: 30,
|
||
ex: "$v = \\sqrt{2 \\cdot 10 \\cdot 45} = \\sqrt{900} = 30\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Тело падает $t = 3\\,\\text{с}$, $g = 10\\,\\text{м/с}^2$. Какое расстояние пролетело тело?",
|
||
hint: "$y = gt^2/2$",
|
||
unit: "м", a: 45,
|
||
ex: "$y = 10 \\cdot 9/2 = 45\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Что такое свободное падение?",
|
||
opts: [
|
||
"Любое падение предмета с высоты",
|
||
"Движение тела под действием только силы тяжести (без сопротивления воздуха)",
|
||
"Падение в вакууме со скоростью $g$",
|
||
"Равномерное движение вниз"
|
||
],
|
||
a: 1,
|
||
ex: "Свободное падение — движение тела, на которое действует <b>только сила тяжести</b> (воздух не учитывается)."
|
||
},
|
||
{
|
||
q: "Шарик брошен горизонтально с высоты $h = 20\\,\\text{м}$ со скоростью $v_0 = 5\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите горизонтальную дальность полёта.",
|
||
hint: "$t = \\sqrt{2h/g}$; $l = v_0 t$",
|
||
unit: "м", a: 10,
|
||
ex: "$t = \\sqrt{2 \\cdot 20/10} = 2\\,\\text{с}$; $l = 5 \\cdot 2 = 10\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Мяч брошен вертикально вверх со скоростью $v_0 = 30\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите максимальную высоту подъёма.",
|
||
hint: "$H = v_0^2/(2g)$",
|
||
unit: "м", a: 45,
|
||
ex: "$H = 900/20 = 45\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Какова форма траектории тела, брошенного горизонтально (без учёта сопротивления воздуха)?",
|
||
opts: [
|
||
"Прямая линия",
|
||
"Парабола",
|
||
"Окружность",
|
||
"Гипербола"
|
||
],
|
||
a: 1,
|
||
ex: "Горизонтальное движение равномерное ($x = v_0 t$), вертикальное — равноускоренное ($y = gt^2/2$). Исключая $t$: $y = gx^2/(2v_0^2)$ — уравнение параболы."
|
||
},
|
||
{
|
||
q: "Тело падает $t = 5\\,\\text{с}$, $g = 10\\,\\text{м/с}^2$. Найдите скорость тела в момент удара о землю.",
|
||
hint: "$v = gt$",
|
||
unit: "м/с", a: 50,
|
||
ex: "$v = g \\cdot t = 10 \\cdot 5 = 50\\,\\text{м/с}$"
|
||
},
|
||
{
|
||
q: "Камешек бросают горизонтально с высоты $h = 1{,}25\\,\\text{м}$ над водой со скоростью $v_0 = 4\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите дальность полёта.",
|
||
hint: "$t = \\sqrt{2h/g}$; $l = v_0 t$",
|
||
unit: "м", a: 2,
|
||
ex: "$t = \\sqrt{2 \\cdot 1{,}25/10} = \\sqrt{0{,}25} = 0{,}5\\,\\text{с}$; $l = 4 \\cdot 0{,}5 = 2\\,\\text{м}$"
|
||
},
|
||
];
|
||
|
||
// ══ §22 Бросок тела под углом к горизонту ══
|
||
var TASKS_P22 = [
|
||
{
|
||
q: "Тело брошено под углом $\\alpha = 30°$ к горизонту с начальной скоростью $v_0 = 20\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите горизонтальную дальность полёта.",
|
||
hint: "$L = v_0^2 \\sin 2\\alpha / g$",
|
||
unit: "м", a: 34.6, tol: 0.5,
|
||
ex: "$L = 20^2 \\cdot \\sin 60° / 10 = 400 \\cdot 0{,}866 / 10 \\approx 34{,}6\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "При каком угле броска горизонтальная дальность полёта максимальна (без учёта сопротивления воздуха)?",
|
||
opts: ["30°","45°","60°","90°"],
|
||
a: 1,
|
||
ex: "$L = v_0^2 \\sin 2\\alpha / g$ максимально при $\\sin 2\\alpha = 1$, то есть при $2\\alpha = 90°$, $\\alpha = 45°$."
|
||
},
|
||
{
|
||
q: "Тело брошено под углом $45°$ к горизонту с $v_0 = 30\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите максимальную высоту подъёма.",
|
||
hint: "$H = v_0^2 \\sin^2\\!\\alpha / (2g)$",
|
||
unit: "м", a: 22.5,
|
||
ex: "$H = 30^2 \\cdot \\sin^2 45° / 20 = 900 \\cdot 0{,}5 / 20 = 22{,}5\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Что происходит с горизонтальной составляющей скорости тела в полёте (без учёта воздуха)?",
|
||
opts: [
|
||
"Уменьшается под действием силы тяжести",
|
||
"Не изменяется (остаётся постоянной)",
|
||
"Сначала уменьшается, затем увеличивается",
|
||
"Увеличивается"
|
||
],
|
||
a: 1,
|
||
ex: "Сила тяжести направлена вертикально и изменяет только вертикальную составляющую. Горизонтальная составляющая $v_x = v_0\\cos\\alpha = \\text{const}$."
|
||
},
|
||
{
|
||
q: "Снаряд выпущен с $v_0 = 50\\,\\text{м/с}$ под углом $\\alpha = 60°$. Найдите полное время полёта. $g = 10\\,\\text{м/с}^2$.",
|
||
hint: "$T = 2v_0\\sin\\alpha / g$",
|
||
unit: "с", a: 8.66, tol: 0.1,
|
||
ex: "$T = 2 \\cdot 50 \\cdot \\sin 60° / 10 = 100 \\cdot 0{,}866 / 10 \\approx 8{,}66\\,\\text{с}$"
|
||
},
|
||
{
|
||
q: "Мяч брошен под углом $45°$ к горизонту, $v_0 = 10\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите горизонтальную дальность полёта.",
|
||
hint: "$L = v_0^2 \\sin 2\\alpha / g$",
|
||
unit: "м", a: 10,
|
||
ex: "$L = 100 \\cdot \\sin 90° / 10 = 100/10 = 10\\,\\text{м}$"
|
||
},
|
||
{
|
||
q: "Какова форма траектории тела, брошенного под углом к горизонту (без учёта воздуха)?",
|
||
opts: ["Прямая линия","Окружность","Парабола","Эллипс"],
|
||
a: 2,
|
||
ex: "Горизонтально — равномерно ($x = v_0\\cos\\alpha\\cdot t$), вертикально — равноускоренно ($y = v_0\\sin\\alpha\\cdot t - gt^2/2$). Исключая $t$ — получаем уравнение параболы."
|
||
},
|
||
{
|
||
q: "Тело брошено под углом $\\alpha = 90°$ (вертикально вверх) с $v_0 = 20\\,\\text{м/с}$, $g = 10\\,\\text{м/с}^2$. Найдите максимальную высоту подъёма.",
|
||
hint: "$H = v_0^2 / (2g)$ при $\\alpha = 90°$",
|
||
unit: "м", a: 20,
|
||
ex: "$H = v_0^2 \\sin^2 90° / (2g) = 400 \\cdot 1 / 20 = 20\\,\\text{м}$"
|
||
},
|
||
];
|
||
|
||
// ══ §23 Закон всемирного тяготения ══
|
||
var TASKS_P23 = [
|
||
{
|
||
q: "Расстояние между двумя телами уменьшили в 3 раза. Как изменилась сила тяготения между ними?",
|
||
opts: [
|
||
"Уменьшилась в 3 раза",
|
||
"Увеличилась в 3 раза",
|
||
"Увеличилась в 9 раз",
|
||
"Уменьшилась в 9 раз"
|
||
],
|
||
a: 2,
|
||
ex: "$F = Gm_1m_2/r^2$. При $r' = r/3$: $F' = Gm_1m_2/(r/3)^2 = 9Gm_1m_2/r^2 = 9F$. Сила увеличилась в 9 раз."
|
||
},
|
||
{
|
||
q: "Чему равна гравитационная постоянная $G$?",
|
||
opts: [
|
||
"$9{,}8\\,\\text{Н}{\\cdot}\\text{м}^2/\\text{кг}^2$",
|
||
"$6{,}67 \\cdot 10^{-11}\\,\\text{Н}{\\cdot}\\text{м}^2/\\text{кг}^2$",
|
||
"$3 \\cdot 10^8\\,\\text{Н}{\\cdot}\\text{м}^2/\\text{кг}^2$",
|
||
"$1{,}67 \\cdot 10^{-27}\\,\\text{Н}{\\cdot}\\text{м}^2/\\text{кг}^2$"
|
||
],
|
||
a: 1,
|
||
ex: "$G = 6{,}67 \\cdot 10^{-11}\\,\\text{Н}{\\cdot}\\text{м}^2/\\text{кг}^2$ — гравитационная постоянная, измеренная Кавендишем в 1798 году."
|
||
},
|
||
{
|
||
q: "Ускорение свободного падения на поверхности Луны $g_\\text{Л} \\approx 1{,}6\\,\\text{м/с}^2$. Масса тела $m = 60\\,\\text{кг}$. Найдите его вес на Луне.",
|
||
hint: "$F_\\text{т} = mg$",
|
||
unit: "Н", a: 96,
|
||
ex: "$F_\\text{т} = 60 \\cdot 1{,}6 = 96\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Как изменится сила тяготения между двумя телами, если массу одного из них увеличить в 4 раза, а расстояние увеличить в 2 раза?",
|
||
opts: [
|
||
"Увеличится в 4 раза",
|
||
"Останется прежней",
|
||
"Уменьшится в 2 раза",
|
||
"Увеличится в 2 раза"
|
||
],
|
||
a: 1,
|
||
ex: "$F' = G(4m_1)m_2/(2r)^2 = 4Gm_1m_2/(4r^2) = Gm_1m_2/r^2 = F$. Сила не изменилась!"
|
||
},
|
||
{
|
||
q: "Первая космическая скорость для Земли ($g = 9{,}8\\,\\text{м/с}^2$, $R = 6400\\,\\text{км}$). Найдите $v_1$ (в км/с).",
|
||
hint: "$v_1 = \\sqrt{gR}$",
|
||
unit: "км/с", a: 7.9, tol: 0.1,
|
||
ex: "$v_1 = \\sqrt{9{,}8 \\cdot 6{,}4 \\cdot 10^6} = \\sqrt{6{,}27 \\cdot 10^7} \\approx 7920\\,\\text{м/с} \\approx 7{,}9\\,\\text{км/с}$"
|
||
},
|
||
{
|
||
q: "Два шара массами $m_1 = 2\\,\\text{кг}$ и $m_2 = 5\\,\\text{кг}$ находятся на расстоянии $r = 1\\,\\text{м}$. Найдите силу тяготения между ними ($G = 6{,}67 \\cdot 10^{-11}$).",
|
||
hint: "$F = Gm_1m_2/r^2$",
|
||
unit: "нН", a: 0.667, tol: 0.05,
|
||
ex: "$F = 6{,}67 \\cdot 10^{-11} \\cdot 2 \\cdot 5 / 1 = 6{,}67 \\cdot 10^{-10}\\,\\text{Н} = 0{,}667\\,\\text{нН}$"
|
||
},
|
||
{
|
||
q: "Что такое первая космическая скорость?",
|
||
opts: [
|
||
"Скорость освобождения от гравитации Земли",
|
||
"Минимальная скорость для орбитального полёта у поверхности Земли",
|
||
"Скорость вращения Земли вокруг Солнца",
|
||
"Скорость света в вакууме"
|
||
],
|
||
a: 1,
|
||
ex: "Первая космическая скорость — минимальная скорость для круговой орбиты у поверхности Земли: $v_1 = \\sqrt{gR} \\approx 7{,}9\\,\\text{км/с}$."
|
||
},
|
||
{
|
||
q: "Ускорение свободного падения на поверхности планеты. Масса планеты увеличилась в 4 раза, радиус — в 2 раза. Как изменилось $g$?",
|
||
opts: [
|
||
"Не изменилось",
|
||
"Увеличилось в 2 раза",
|
||
"Уменьшилось в 2 раза",
|
||
"Увеличилось в 4 раза"
|
||
],
|
||
a: 0,
|
||
ex: "$g = GM/R^2$. $g' = G(4M)/(2R)^2 = 4GM/(4R^2) = GM/R^2 = g$. Не изменилось!"
|
||
},
|
||
];
|
||
|
||
// ══ §24 Вес тела. Невесомость ══
|
||
var TASKS_P24 = [
|
||
{
|
||
q: "Человек массой $m = 70\\,\\text{кг}$ стоит в лифте. Лифт движется вверх с ускорением $a = 2\\,\\text{м/с}^2$, $g = 10\\,\\text{м/с}^2$. Найдите вес человека.",
|
||
hint: "$P = m(g + a)$",
|
||
unit: "Н", a: 840,
|
||
ex: "$P = 70 \\cdot (10 + 2) = 70 \\cdot 12 = 840\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Человек массой $m = 70\\,\\text{кг}$ стоит в лифте. Лифт движется вниз с ускорением $a = 3\\,\\text{м/с}^2$, $g = 10\\,\\text{м/с}^2$. Найдите вес человека.",
|
||
hint: "$P = m(g - a)$",
|
||
unit: "Н", a: 490,
|
||
ex: "$P = 70 \\cdot (10 - 3) = 70 \\cdot 7 = 490\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "При каком условии тело находится в состоянии невесомости?",
|
||
opts: [
|
||
"Тело движется с постоянной скоростью",
|
||
"Тело движется только под действием силы тяжести (свободное падение)",
|
||
"Тело находится на большой высоте, где нет воздуха",
|
||
"Тело движется горизонтально"
|
||
],
|
||
a: 1,
|
||
ex: "Невесомость — состояние, при котором исчезает сила давления на опору. Наступает при свободном падении: тело движется только под действием силы тяжести, реакция опоры = 0."
|
||
},
|
||
{
|
||
q: "Человек стоит на весах в лифте. Весы показывают $85\\,\\text{кг}$. Масса человека $70\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$. Найдите ускорение лифта.",
|
||
hint: "$P = m(g+a) \\Rightarrow a = P/m - g$",
|
||
unit: "м/с²", a: 2.14, tol: 0.1,
|
||
ex: "$P = 85 \\cdot 10 = 850\\,\\text{Н}$; $a = P/m - g = 850/70 - 10 \\approx 12{,}14 - 10 \\approx 2{,}14\\,\\text{м/с}^2$ (вверх)"
|
||
},
|
||
{
|
||
q: "Чем отличается вес тела от силы тяжести?",
|
||
opts: [
|
||
"Это одно и то же — оба равны $mg$",
|
||
"Вес зависит от ускорения тела, сила тяжести — нет",
|
||
"Сила тяжести зависит от ускорения, вес — нет",
|
||
"Вес всегда больше силы тяжести"
|
||
],
|
||
a: 1,
|
||
ex: "Сила тяжести $F_\\text{т} = mg$ определяется только массой и $g$. Вес $P$ — сила, с которой тело давит на опору. При ускорении $P = m(g \\pm a)$."
|
||
},
|
||
{
|
||
q: "Тело массой $m = 5\\,\\text{кг}$ брошено вертикально вниз. В полёте (без опоры) его вес равен:",
|
||
opts: [
|
||
"$50\\,\\text{Н}$",
|
||
"$25\\,\\text{Н}$",
|
||
"$0\\,\\text{Н}$ (невесомость)",
|
||
"Зависит от скорости"
|
||
],
|
||
a: 2,
|
||
ex: "В свободном падении нет опоры, нет реакции опоры. Вес как сила давления на опору равен нулю — невесомость. Сила тяжести при этом остаётся $F_\\text{т} = mg = 50\\,\\text{Н}$."
|
||
},
|
||
{
|
||
q: "Человек $m = 60\\,\\text{кг}$ в лифте. Лифт движется равномерно вниз. Найдите вес человека. $g = 10\\,\\text{м/с}^2$.",
|
||
hint: "$a = 0 \\Rightarrow P = mg$",
|
||
unit: "Н", a: 600,
|
||
ex: "При равномерном движении $a = 0$: $P = mg = 60 \\cdot 10 = 600\\,\\text{Н}$ — такой же, как и в покое."
|
||
},
|
||
{
|
||
q: "Почему космонавты на МКС испытывают невесомость, хотя на высоте 400 км гравитация составляет около 88% от земной?",
|
||
opts: [
|
||
"Потому что на такой высоте нет воздуха",
|
||
"Потому что станция находится в постоянном свободном падении вокруг Земли",
|
||
"Потому что вдали от Земли масса тел уменьшается",
|
||
"Потому что на высоте 400 км сила тяжести обнуляется"
|
||
],
|
||
a: 1,
|
||
ex: "МКС и всё, что в ней, постоянно «падает» вокруг Земли (орбитальный полёт = свободное падение, только быстрое). Опора не давит на тело → $P = 0$ → невесомость."
|
||
},
|
||
];
|
||
|
||
// ══ §25 Момент силы. Условия равновесия ══
|
||
var TASKS_P25 = [
|
||
{
|
||
q: "Что называется плечом силы?",
|
||
opts: [
|
||
"Расстояние от оси до точки приложения силы",
|
||
"Кратчайшее расстояние от оси вращения до линии действия силы",
|
||
"Проекция силы на ось",
|
||
"Расстояние между двумя точками приложения сил"
|
||
],
|
||
a: 1,
|
||
ex: "Плечо силы — это <b>перпендикуляр</b> из оси вращения на линию действия силы (не до точки приложения!)."
|
||
},
|
||
{
|
||
q: "Сила $F = 75\\,\\text{Н}$ приложена на расстоянии $l = 0{,}20\\,\\text{м}$ от оси. Найдите момент силы.",
|
||
hint: "$M = F \\cdot l$",
|
||
unit: "Н·м", a: 15,
|
||
ex: "$M = 75 \\cdot 0{,}20 = 15\\,\\text{Н}\\cdot\\text{м}$"
|
||
},
|
||
{
|
||
q: "Каковы оба условия равновесия тела?",
|
||
opts: [
|
||
"Тело покоится и не нагревается",
|
||
"Векторная сумма сил = 0 и алгебраическая сумма моментов = 0",
|
||
"Скорость = 0 и ускорение = 0",
|
||
"Нет внешних сил"
|
||
],
|
||
a: 1,
|
||
ex: "1-е условие: $\\sum \\vec{F} = \\vec{0}$ (нет поступательного ускорения). 2-е условие: $\\sum M = 0$ (нет вращения)."
|
||
},
|
||
{
|
||
q: "Момент силы $M = 24\\,\\text{Н}\\cdot\\text{м}$, плечо $l = 0{,}6\\,\\text{м}$. Найдите силу.",
|
||
hint: "$F = M / l$",
|
||
unit: "Н", a: 40,
|
||
ex: "$F = 24 / 0{,}6 = 40\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "На рычаг действует сила $F = 50\\,\\text{Н}$, плечо $l = 0{,}4\\,\\text{м}$. Вычислите момент.",
|
||
hint: "$M = F \\cdot l$",
|
||
unit: "Н·м", a: 20,
|
||
ex: "$M = 50 \\cdot 0{,}4 = 20\\,\\text{Н}\\cdot\\text{м}$"
|
||
},
|
||
{
|
||
q: "Рычаг в равновесии: $F_1 = 40\\,\\text{Н}$, $l_1 = 0{,}3\\,\\text{м}$, $l_2 = 0{,}6\\,\\text{м}$. Найдите $F_2$.",
|
||
hint: "$F_1 l_1 = F_2 l_2$",
|
||
unit: "Н", a: 20,
|
||
ex: "$F_2 = F_1 l_1 / l_2 = 40 \\cdot 0{,}3 / 0{,}6 = 20\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Что надо увеличить, чтобы меньшей силой создать тот же момент?",
|
||
opts: [
|
||
"Массу тела",
|
||
"Плечо силы",
|
||
"Число точек приложения",
|
||
"Скорость вращения"
|
||
],
|
||
a: 1,
|
||
ex: "$M = F \\cdot l$ — при том же $F$ увеличение плеча $l$ увеличивает момент. Поэтому у гаечных ключей длинные рукоятки."
|
||
},
|
||
{
|
||
q: "Рычаг в равновесии: $F_1 = 60\\,\\text{Н}$, $l_1 = 0{,}5\\,\\text{м}$. Если $l_2 = 0{,}3\\,\\text{м}$, найдите $F_2$.",
|
||
hint: "$F_1 l_1 = F_2 l_2$",
|
||
unit: "Н", a: 100,
|
||
ex: "$F_2 = 60 \\cdot 0{,}5 / 0{,}3 = 100\\,\\text{Н}$"
|
||
},
|
||
];
|
||
|
||
// ══ §26 Рычаги и блоки ══
|
||
var TASKS_P26 = [
|
||
{
|
||
q: "Что называется выигрышем в силе?",
|
||
opts: [
|
||
"Разность сил $F_2 - F_1$",
|
||
"Во сколько раз сила нагрузки больше приложенной силы ($F_2/F_1$)",
|
||
"Отношение плеч $l_1/l_2$",
|
||
"Ответы 2 и 3 верны"
|
||
],
|
||
a: 3,
|
||
ex: "Выигрыш в силе — это $F_2/F_1 = l_1/l_2$. Оба определения равнозначны (следуют из условия равновесия рычага)."
|
||
},
|
||
{
|
||
q: "Рычаг: $l_1 = 0{,}8\\,\\text{м}$, $l_2 = 0{,}2\\,\\text{м}$, нагрузка $F_2 = 200\\,\\text{Н}$. Найдите нужную силу $F_1$.",
|
||
hint: "$F_1 = F_2 \\cdot l_2 / l_1$",
|
||
unit: "Н", a: 50,
|
||
ex: "$F_1 = 200 \\cdot 0{,}2 / 0{,}8 = 50\\,\\text{Н}$. Выигрыш в силе = 4."
|
||
},
|
||
{
|
||
q: "Что даёт неподвижный блок?",
|
||
opts: [
|
||
"Выигрыш в силе в 2 раза",
|
||
"Только изменяет направление силы (выигрыш = 1)",
|
||
"Выигрыш в работе",
|
||
"Проигрыш в силе в 2 раза"
|
||
],
|
||
a: 1,
|
||
ex: "Неподвижный блок — лишь <b>изменяет направление</b>: тянем вниз, груз поднимается вверх. В силе выигрыша нет."
|
||
},
|
||
{
|
||
q: "Подвижный блок: груз $G = 240\\,\\text{Н}$. Какую силу нужно приложить (без учёта масс блока и нити)?",
|
||
hint: "Подвижный блок: $F = G/2$",
|
||
unit: "Н", a: 120,
|
||
ex: "Подвижный блок даёт выигрыш в 2 раза: $F = G/2 = 240/2 = 120\\,\\text{Н}$."
|
||
},
|
||
{
|
||
q: "Рычаг: $l_1 = 1{,}5\\,\\text{м}$, $l_2 = 0{,}3\\,\\text{м}$. Во сколько раз выигрыш в силе?",
|
||
hint: "Выигрыш $= l_1/l_2$",
|
||
unit: "раз", a: 5,
|
||
ex: "Выигрыш $= l_1/l_2 = 1{,}5/0{,}3 = 5$. Сила нужна в 5 раз меньше нагрузки."
|
||
},
|
||
{
|
||
q: "Тело массой $m = 60\\,\\text{кг}$, $g = 10\\,\\text{м/с}^2$ надо поднять рычагом: $l_1 = 1{,}2\\,\\text{м}$, $l_2 = 0{,}3\\,\\text{м}$. Найдите нужную силу.",
|
||
hint: "$F_1 = mg \\cdot l_2/l_1$",
|
||
unit: "Н", a: 150,
|
||
ex: "$F_1 = 60 \\cdot 10 \\cdot 0{,}3/1{,}2 = 150\\,\\text{Н}$. Выигрыш в силе = 4."
|
||
},
|
||
{
|
||
q: "«Золотое правило механики» означает: нет выигрыша в...",
|
||
opts: [
|
||
"Силе",
|
||
"Расстоянии",
|
||
"Работе",
|
||
"Скорости"
|
||
],
|
||
a: 2,
|
||
ex: "Любой механизм: $A_\\text{затр} \\geq A_\\text{пол}$. Выиграл в силе $n$ раз — проиграл в пути $n$ раз. Работа та же."
|
||
},
|
||
{
|
||
q: "Какую силу надо приложить для подъёма груза $G = 400\\,\\text{Н}$ с помощью системы из двух подвижных блоков?",
|
||
hint: "Два подвижных блока: выигрыш = 4",
|
||
unit: "Н", a: 100,
|
||
ex: "Каждый подвижный блок даёт выигрыш ×2. Два блока: $F = G/4 = 400/4 = 100\\,\\text{Н}$."
|
||
},
|
||
];
|
||
|
||
// ══ §27 Наклонная плоскость. КПД ══
|
||
var TASKS_P27 = [
|
||
{
|
||
q: "Что показывает КПД механизма?",
|
||
opts: [
|
||
"Во сколько раз механизм выигрывает в силе",
|
||
"Долю полезной работы от затраченной (в %)",
|
||
"Мощность механизма",
|
||
"Отношение скоростей"
|
||
],
|
||
a: 1,
|
||
ex: "$\\eta = A_\\text{пол}/A_\\text{затр} \\cdot 100\\%$ — КПД показывает, <b>какая доля работы используется с пользой</b>. Остаток — потери на трение и нагрев."
|
||
},
|
||
{
|
||
q: "$A_\\text{полез} = 600\\,\\text{Дж}$, $A_\\text{затрач} = 800\\,\\text{Дж}$. Найдите КПД.",
|
||
hint: "$\\eta = A_\\text{пол}/A_\\text{затр} \\cdot 100\\%$",
|
||
unit: "%", a: 75,
|
||
ex: "$\\eta = 600/800 \\cdot 100\\% = 75\\%$"
|
||
},
|
||
{
|
||
q: "Наклонная плоскость: длина $l = 5\\,\\text{м}$, высота $h = 1\\,\\text{м}$. Во сколько раз выигрыш в силе?",
|
||
hint: "Выигрыш $= l/h$",
|
||
unit: "раз", a: 5,
|
||
ex: "Выигрыш $= l/h = 5/1 = 5$. Нужная сила в 5 раз меньше веса груза (без трения)."
|
||
},
|
||
{
|
||
q: "«Золотое правило»: если выигрываем в силе в 3 раза, то в пути...",
|
||
opts: [
|
||
"Тоже выигрываем в 3 раза",
|
||
"Проигрываем в 3 раза (путь в 3 раза длиннее)",
|
||
"Ничего не меняется",
|
||
"Выигрываем в 9 раз"
|
||
],
|
||
a: 1,
|
||
ex: "Золотое правило: $F_1 \\cdot s_1 = F_2 \\cdot s_2$. Уменьшил силу в 3 раза → увеличил путь в 3 раза. Работа та же."
|
||
},
|
||
{
|
||
q: "Груз $m = 30\\,\\text{кг}$ затащили по наклонной плоскости $l = 6\\,\\text{м}$, $h = 2\\,\\text{м}$, без трения. Найдите нужную силу.",
|
||
hint: "$F = mg \\cdot h/l$",
|
||
unit: "Н", a: 100,
|
||
ex: "$F = 30 \\cdot 10 \\cdot 2/6 = 100\\,\\text{Н}$. Без трения: сила в $l/h = 3$ раза меньше веса."
|
||
},
|
||
{
|
||
q: "$A_\\text{затрач} = 500\\,\\text{Дж}$, $\\eta = 80\\%$. Найдите полезную работу.",
|
||
hint: "$A_\\text{пол} = \\eta \\cdot A_\\text{затр} / 100$",
|
||
unit: "Дж", a: 400,
|
||
ex: "$A_\\text{пол} = 0{,}80 \\cdot 500 = 400\\,\\text{Дж}$"
|
||
},
|
||
{
|
||
q: "Может ли КПД механизма быть больше 100%?",
|
||
opts: [
|
||
"Да, при идеальном механизме",
|
||
"Да, если нет трения",
|
||
"Нет, КПД всегда меньше 100%",
|
||
"Да, при использовании смазки"
|
||
],
|
||
a: 2,
|
||
ex: "КПД <b>никогда не превышает 100%</b>: полезная работа не может быть больше затраченной (закон сохранения энергии). Трение всегда «ворует» часть работы."
|
||
},
|
||
{
|
||
q: "Груз $m = 20\\,\\text{кг}$ подняли по наклонной плоскости $l = 5\\,\\text{м}$, $h = 2\\,\\text{м}$, приложив силу $F = 100\\,\\text{Н}$. Найдите КПД.",
|
||
hint: "$A_\\text{пол} = mgh$; $A_\\text{затр} = Fl$",
|
||
unit: "%", a: 80,
|
||
ex: "$A_\\text{пол} = 20\\cdot10\\cdot2 = 400\\,\\text{Дж}$; $A_\\text{затр} = 100\\cdot5 = 500\\,\\text{Дж}$; $\\eta = 400/500 \\cdot 100\\% = 80\\%$"
|
||
},
|
||
];
|
||
|
||
// ══ §28 Центр тяжести. Виды равновесия ══
|
||
var TASKS_P28 = [
|
||
{
|
||
q: "Что такое центр тяжести тела?",
|
||
opts: [
|
||
"Геометрический центр тела",
|
||
"Точка, через которую проходит равнодействующая всех сил тяжести, действующих на тело",
|
||
"Точка наибольшей массы тела",
|
||
"Точка опоры тела"
|
||
],
|
||
a: 1,
|
||
ex: "Центр тяжести — точка, через которую проходит равнодействующая всех сил тяжести. Для однородного тела совпадает с геометрическим центром."
|
||
},
|
||
{
|
||
q: "Два тела массами $m_1 = 3\\,\\text{кг}$ и $m_2 = 7\\,\\text{кг}$ находятся на расстоянии $10\\,\\text{м}$ друг от друга. Найдите расстояние от первого тела до центра тяжести системы.",
|
||
hint: "$x_c = m_2 \\cdot d / (m_1 + m_2)$",
|
||
unit: "м", a: 7,
|
||
ex: "$x_c = m_2 \\cdot d/(m_1+m_2) = 7 \\cdot 10/10 = 7\\,\\text{м}$ от первого тела (ЦТ ближе к тяжёлому)"
|
||
},
|
||
{
|
||
q: "Какой вид равновесия у шарика, лежащего в сферической лунке?",
|
||
opts: ["Неустойчивое","Устойчивое","Безразличное","Нейтральное"],
|
||
a: 1,
|
||
ex: "В лунке при отклонении возникает возвращающая сила. Центр тяжести поднимается при отклонении → при отпускании тело возвращается. Это устойчивое равновесие."
|
||
},
|
||
{
|
||
q: "Какой вид равновесия у карандаша, поставленного на острие?",
|
||
opts: ["Устойчивое","Безразличное","Неустойчивое","Вынужденное"],
|
||
a: 2,
|
||
ex: "Центр тяжести карандаша выше точки опоры. При малейшем отклонении равнодействующая сил не возвращает карандаш в вертикальное положение — он падает. Неустойчивое равновесие."
|
||
},
|
||
{
|
||
q: "При каком условии тело, стоящее на наклонной поверхности, не опрокидывается?",
|
||
opts: [
|
||
"Масса тела достаточно велика",
|
||
"Вертикаль через центр тяжести проходит внутри площади опоры",
|
||
"Угол наклона не превышает 45°",
|
||
"Трение между телом и поверхностью достаточно большое"
|
||
],
|
||
a: 1,
|
||
ex: "Тело не опрокидывается, если вертикальная прямая через ЦТ пересекает площадь опоры. Как только эта вертикаль выходит за её пределы — тело опрокидывается."
|
||
},
|
||
{
|
||
q: "Как изменить устойчивость тела?",
|
||
opts: [
|
||
"Увеличить массу",
|
||
"Понизить центр тяжести и расширить площадь опоры",
|
||
"Повысить центр тяжести",
|
||
"Уменьшить площадь опоры"
|
||
],
|
||
a: 1,
|
||
ex: "Устойчивость повышается при понижении ЦТ (меньше опрокидывающий момент) и расширении площади опоры (вертикаль через ЦТ труднее выходит за её пределы)."
|
||
},
|
||
{
|
||
q: "Какой вид равновесия у однородного шара на горизонтальной плоскости?",
|
||
opts: ["Устойчивое","Неустойчивое","Безразличное","Вынужденное"],
|
||
a: 2,
|
||
ex: "При любом перемещении шара по плоскости высота ЦТ не меняется. Тело остаётся в новом положении. Это безразличное равновесие."
|
||
},
|
||
{
|
||
q: "Нижний конец стержня закреплён в шарнире. Стержень стоит вертикально (свободный конец вверху). Это равновесие:",
|
||
opts: [
|
||
"Устойчивое — центр тяжести внизу",
|
||
"Неустойчивое — центр тяжести выше точки опоры",
|
||
"Безразличное — центр тяжести у шарнира",
|
||
"Невозможно определить"
|
||
],
|
||
a: 1,
|
||
ex: "Центр тяжести вертикального стержня находится выше точки опоры (шарнира). Малейшее отклонение — стержень падает. Неустойчивое равновесие."
|
||
},
|
||
];
|
||
|
||
// ══ §29 Закон Архимеда. Плавание тел ══
|
||
var TASKS_P29 = [
|
||
{
|
||
q: "Тело объёмом $V = 200\\,\\text{см}^3$ полностью погружено в воду ($\\rho_\\text{в} = 1000\\,\\text{кг/м}^3$, $g = 10\\,\\text{м/с}^2$). Найдите архимедову силу.",
|
||
hint: "$F_\\text{выт} = \\rho_\\text{ж} g V$",
|
||
unit: "Н", a: 2,
|
||
ex: "$V = 200\\,\\text{см}^3 = 2 \\cdot 10^{-4}\\,\\text{м}^3$; $F_\\text{выт} = 1000 \\cdot 10 \\cdot 2 \\cdot 10^{-4} = 2\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Кусок льда плотностью $\\rho_\\text{л} = 900\\,\\text{кг/м}^3$ плавает в воде ($\\rho_\\text{в} = 1000$). Какая доля объёма льда находится под водой?",
|
||
hint: "$V_\\text{погр}/V = \\rho_\\text{т}/\\rho_\\text{ж}$",
|
||
unit: "%", a: 90,
|
||
ex: "$V_\\text{погр}/V = \\rho_\\text{л}/\\rho_\\text{в} = 900/1000 = 0{,}9 = 90\\%$. Именно поэтому видна только верхушка айсберга."
|
||
},
|
||
{
|
||
q: "Деревянный кубик плотностью $600\\,\\text{кг/м}^3$ плавает в воде. Потонет ли он в ртути ($\\rho_\\text{Hg} = 13600\\,\\text{кг/м}^3$)?",
|
||
opts: [
|
||
"Потонет — ртуть тяжелее дерева",
|
||
"Будет плавать — ртуть тяжелее дерева, выталкивающая сила больше",
|
||
"Зависит от размера кубика",
|
||
"Зависит от температуры"
|
||
],
|
||
a: 1,
|
||
ex: "$\\rho_\\text{дерева} = 600 < \\rho_\\text{Hg} = 13600$ — тело плавает. В ртути дерево будет почти полностью над поверхностью: $V_\\text{погр}/V = 600/13600 \\approx 4{,}4\\%$."
|
||
},
|
||
{
|
||
q: "Тело весит в воздухе $F_\\text{возд} = 50\\,\\text{Н}$, а в воде — $F_\\text{в воде} = 38\\,\\text{Н}$. Найдите архимедову силу.",
|
||
hint: "$F_\\text{выт} = F_\\text{возд} - F_\\text{в воде}$",
|
||
unit: "Н", a: 12,
|
||
ex: "$F_\\text{выт} = 50 - 38 = 12\\,\\text{Н}$. Это прямой способ измерения архимедовой силы — взвешивание в жидкости."
|
||
},
|
||
{
|
||
q: "От чего зависит архимедова сила?",
|
||
opts: [
|
||
"От материала тела и его формы",
|
||
"От плотности жидкости и объёма погружённой части тела",
|
||
"От глубины погружения тела",
|
||
"От скорости движения тела в жидкости"
|
||
],
|
||
a: 1,
|
||
ex: "$F_\\text{выт} = \\rho_\\text{ж} g V_\\text{погр}$ зависит только от плотности жидкости и объёма погружённой части. Форма тела, материал и глубина — не имеют значения."
|
||
},
|
||
{
|
||
q: "Тело плотностью $\\rho_\\text{т} = 800\\,\\text{кг/м}^3$ объёмом $V = 0{,}5\\,\\text{л}$ плавает в воде. Найдите объём погружённой части.",
|
||
hint: "$V_\\text{погр} = V \\cdot \\rho_\\text{т}/\\rho_\\text{ж}$",
|
||
unit: "л", a: 0.4,
|
||
ex: "$V_\\text{погр}/V = \\rho_\\text{т}/\\rho_\\text{ж} = 800/1000 = 0{,}8$; $V_\\text{погр} = 0{,}5 \\cdot 0{,}8 = 0{,}4\\,\\text{л}$"
|
||
},
|
||
{
|
||
q: "Камень объёмом $V = 100\\,\\text{см}^3$ и плотностью $\\rho_\\text{т} = 2500\\,\\text{кг/м}^3$ погружён в воду. Найдите его кажущийся вес в воде ($g = 10$).",
|
||
hint: "$F_\\text{каж} = mg - F_\\text{выт}$",
|
||
unit: "Н", a: 1.5,
|
||
ex: "$m = \\rho_\\text{т}V = 2500 \\cdot 10^{-4} = 0{,}25\\,\\text{кг}$; $F_\\text{выт} = 1000 \\cdot 10 \\cdot 10^{-4} = 1\\,\\text{Н}$; $F = 2{,}5 - 1 = 1{,}5\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Тело потонет в жидкости, если:",
|
||
opts: [
|
||
"$\\rho_\\text{тела} < \\rho_\\text{жидкости}$",
|
||
"$\\rho_\\text{тела} = \\rho_\\text{жидкости}$",
|
||
"$\\rho_\\text{тела} > \\rho_\\text{жидкости}$",
|
||
"Тело всегда тонет"
|
||
],
|
||
a: 2,
|
||
ex: "При $\\rho_\\text{т} > \\rho_\\text{ж}$: $F_\\text{выт} < mg$ даже при полном погружении → тело тонет. При $\\rho_\\text{т} < \\rho_\\text{ж}$ — тело плавает. При $\\rho_\\text{т} = \\rho_\\text{ж}$ — нейтральная плавучесть."
|
||
},
|
||
{
|
||
q: "Одно и то же тело взвесили в воде и в масле ($\\rho_\\text{масло} = 800\\,\\text{кг/м}^3$). В какой жидкости архимедова сила больше?",
|
||
opts: [
|
||
"В масле — оно более вязкое",
|
||
"В воде — она плотнее масла",
|
||
"Одинаковая в обоих случаях",
|
||
"Зависит от формы тела"
|
||
],
|
||
a: 1,
|
||
ex: "$F_\\text{выт} = \\rho_\\text{ж} g V_\\text{погр}$. Объём тела одинаков, $g$ одинаково, но $\\rho_\\text{воды} = 1000 > \\rho_\\text{масло} = 800$ → в воде сила больше."
|
||
},
|
||
];
|
||
|
||
// ══ §30 Плавание судов. Воздухоплавание ══
|
||
var TASKS_P30 = [
|
||
{
|
||
q: "Стальной корабль плавает, хотя сталь тяжелее воды. Почему?",
|
||
opts: [
|
||
"Потому что сталь при намокании становится легче",
|
||
"Потому что средняя плотность корабля (металл + воздух внутри) меньше плотности воды",
|
||
"Потому что вода выталкивает металлические объекты с большой силой",
|
||
"Потому что скорость хода не даёт кораблю затонуть"
|
||
],
|
||
a: 1,
|
||
ex: "Внутри корпуса корабля — воздух. Средняя плотность (вся масса / весь объём корпуса) меньше плотности воды → корабль плавает."
|
||
},
|
||
{
|
||
q: "Корабль водоизмещением $m = 5000\\,\\text{т}$ плавает в морской воде ($\\rho = 1025\\,\\text{кг/м}^3$, $g = 10\\,\\text{м/с}^2$). Найдите объём вытесненной воды.",
|
||
hint: "$V = m/\\rho$",
|
||
unit: "м³", a: 4878, tol: 50,
|
||
ex: "$V = m/\\rho = 5{,}0 \\cdot 10^6 / 1025 \\approx 4878\\,\\text{м}^3$"
|
||
},
|
||
{
|
||
q: "Как изменится осадка корабля при переходе из пресной воды в морскую (солёную)?",
|
||
opts: [
|
||
"Осадка увеличится",
|
||
"Осадка уменьшится — плотность воды больше, выталкивающая сила при меньшей осадке та же",
|
||
"Осадка не изменится",
|
||
"Зависит от водоизмещения"
|
||
],
|
||
a: 1,
|
||
ex: "В морской воде ($\\rho = 1025$) при том же объёме погружённой части архимедова сила больше. Значит, нужен меньший объём → корабль всплывёт немного выше."
|
||
},
|
||
{
|
||
q: "Воздушный шар объёмом $V = 200\\,\\text{м}^3$ заполнен горячим воздухом ($\\rho_\\text{гор} = 0{,}9\\,\\text{кг/м}^3$). Атмосферный воздух: $\\rho_\\text{атм} = 1{,}29\\,\\text{кг/м}^3$. Найдите максимальный вес полезного груза ($g = 10$).",
|
||
hint: "$F_\\text{подъём} = (\\rho_\\text{атм} - \\rho_\\text{гор}) \\cdot g \\cdot V$",
|
||
unit: "Н", a: 780,
|
||
ex: "$(1{,}29 - 0{,}9) \\cdot 10 \\cdot 200 = 0{,}39 \\cdot 2000 = 780\\,\\text{Н}$ (без учёта массы оболочки)"
|
||
},
|
||
{
|
||
q: "Что такое линия Плимсоля?",
|
||
opts: [
|
||
"Граница между килем и корпусом",
|
||
"Метка на борту судна, указывающая максимально допустимую осадку",
|
||
"Линия курса корабля на карте",
|
||
"Граница прибоя у берега"
|
||
],
|
||
a: 1,
|
||
ex: "Линия Плимсоля — обязательная марка на корпусе судна. Показывает максимальную допустимую осадку в разных условиях (морская, тропическая, пресная вода)."
|
||
},
|
||
{
|
||
q: "Деревянный ящик плотностью $\\rho = 600\\,\\text{кг/м}^3$ объёмом $0{,}1\\,\\text{м}^3$ плавает в воде. Найдите архимедову силу, действующую на него. $g = 10\\,\\text{м/с}^2$.",
|
||
hint: "При плавании $F_\\text{выт} = mg = \\rho_\\text{т} g V$",
|
||
unit: "Н", a: 600,
|
||
ex: "При плавании $F_\\text{выт} = mg = \\rho_\\text{т} g V = 600 \\cdot 10 \\cdot 0{,}1 = 600\\,\\text{Н}$"
|
||
},
|
||
{
|
||
q: "Как подводная лодка ныряет?",
|
||
opts: [
|
||
"Включает мощные двигатели и уходит вниз",
|
||
"Заполняет балластные цистерны водой, увеличивая среднюю плотность",
|
||
"Складывает паруса",
|
||
"Открывает специальные клапаны снизу"
|
||
],
|
||
a: 1,
|
||
ex: "Балластные цистерны заполняются забортной водой → общая масса лодки растёт → средняя плотность превышает плотность воды → лодка тонет."
|
||
},
|
||
{
|
||
q: "Дирижабль заполнен гелием ($\\rho_\\text{He} = 0{,}178\\,\\text{кг/м}^3$), объём $V = 5000\\,\\text{м}^3$. Плотность воздуха $1{,}29\\,\\text{кг/м}^3$. Найдите подъёмную силу ($g = 10$).",
|
||
hint: "$F_\\text{подъём} = (\\rho_\\text{возд} - \\rho_\\text{газа}) g V$",
|
||
unit: "кН", a: 55.6, tol: 1,
|
||
ex: "$(1{,}29 - 0{,}178) \\cdot 10 \\cdot 5000 = 1{,}112 \\cdot 50000 = 55600\\,\\text{Н} = 55{,}6\\,\\text{кН}$"
|
||
},
|
||
];
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ПУЛЫ — единая таблица
|
||
// ══════════════════════════════════════════════
|
||
const POOLS = {
|
||
p1: TASKS_P1, p2: TASKS_P2, p3: TASKS_P3, p4: TASKS_P4, p5: TASKS_P5,
|
||
p6: TASKS_P6, p7: TASKS_P7, p8: TASKS_P8, p9: TASKS_P9, p10: TASKS_P10,
|
||
p11: TASKS_P11, p12: TASKS_P12, p13: TASKS_P13, p14: TASKS_P14,
|
||
p15: TASKS_P15,
|
||
p16: TASKS_P16,
|
||
p17: TASKS_P17,
|
||
p18: TASKS_P18,
|
||
p19: TASKS_P19,
|
||
p20: TASKS_P20,
|
||
p21: TASKS_P21,
|
||
p22: TASKS_P22,
|
||
p23: TASKS_P23,
|
||
p24: TASKS_P24,
|
||
p25: TASKS_P25,
|
||
p26: TASKS_P26,
|
||
p27: TASKS_P27,
|
||
p28: TASKS_P28,
|
||
p29: TASKS_P29,
|
||
p30: TASKS_P30,
|
||
p31: TASKS_P31,
|
||
p32: TASKS_P32,
|
||
p33: TASKS_P33,
|
||
p34: TASKS_P34,
|
||
p35: TASKS_P35,
|
||
p36: TASKS_P36,
|
||
hard: TASKS_HARD,
|
||
};
|
||
|
||
// ══════════════════════════════════════════════
|
||
// СОСТОЯНИЕ
|
||
// ══════════════════════════════════════════════
|
||
function mkState(pool) {
|
||
return {idx:0, answered:false, results:Array(pool.length).fill(null), selections:Array(pool.length).fill(null)};
|
||
}
|
||
const STATE = {
|
||
p1: mkState(TASKS_P1), p2: mkState(TASKS_P2), p3: mkState(TASKS_P3),
|
||
p4: mkState(TASKS_P4), p5: mkState(TASKS_P5), p6: mkState(TASKS_P6),
|
||
p7: mkState(TASKS_P7), p8: mkState(TASKS_P8), p9: mkState(TASKS_P9),
|
||
p10: mkState(TASKS_P10), p11: mkState(TASKS_P11), p12: mkState(TASKS_P12),
|
||
p13: mkState(TASKS_P13), p14: mkState(TASKS_P14),
|
||
p15: mkState(TASKS_P15),
|
||
p16: mkState(TASKS_P16),
|
||
p17: mkState(TASKS_P17),
|
||
p18: mkState(TASKS_P18),
|
||
p19: mkState(TASKS_P19),
|
||
p20: mkState(TASKS_P20),
|
||
p21: mkState(TASKS_P21),
|
||
p22: mkState(TASKS_P22),
|
||
p23: mkState(TASKS_P23),
|
||
p24: mkState(TASKS_P24),
|
||
p25: mkState(TASKS_P25),
|
||
p26: mkState(TASKS_P26),
|
||
p27: mkState(TASKS_P27),
|
||
p28: mkState(TASKS_P28),
|
||
p29: mkState(TASKS_P29),
|
||
p30: mkState(TASKS_P30),
|
||
p31: mkState(TASKS_P31),
|
||
p32: mkState(TASKS_P32),
|
||
p33: mkState(TASKS_P33),
|
||
p34: mkState(TASKS_P34),
|
||
p35: mkState(TASKS_P35),
|
||
p36: mkState(TASKS_P36),
|
||
hard: mkState(TASKS_HARD),
|
||
};
|
||
|
||
// ══════════════════════════════════════════════
|
||
// KaTeX рендеринг
|
||
// ══════════════════════════════════════════════
|
||
function doRender(el) {
|
||
if (!window.renderMathInElement) return;
|
||
renderMathInElement(el, {
|
||
delimiters:[{left:'$',right:'$',display:false},{left:'\\[',right:'\\]',display:true}],
|
||
throwOnError:false
|
||
});
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ТАБЫ
|
||
// ══════════════════════════════════════════════
|
||
document.querySelectorAll('.tab').forEach(t => {
|
||
t.addEventListener('click', () => {
|
||
document.querySelectorAll('.tab').forEach(x => x.classList.remove('active'));
|
||
document.querySelectorAll('.content').forEach(x => x.classList.remove('active'));
|
||
t.classList.add('active');
|
||
document.getElementById('tab-' + t.dataset.tab).classList.add('active');
|
||
// Trigger canvas draws when switching to these tabs
|
||
var tn = t.dataset.tab;
|
||
if (tn === 'ref1') setTimeout(startAnim1, 60);
|
||
else if (tn === 'ref2') setTimeout(function(){ upd2(); }, 60);
|
||
else if (tn === 'ref3') setTimeout(function(){ upd3(); }, 60);
|
||
else if (tn === 'ref4') setTimeout(function(){ upd4(); }, 60);
|
||
else if (tn === 'ref5') setTimeout(function(){ upd5(); }, 60);
|
||
else if (tn === 'ref6') setTimeout(function(){ upd6(); }, 60);
|
||
else if (tn === 'ref7') setTimeout(function(){ upd7(); }, 60);
|
||
else if (tn === 'ref8') setTimeout(function(){ upd8(); }, 60);
|
||
else if (tn === 'ref9') setTimeout(function(){ upd9(); }, 60);
|
||
else if (tn === 'ref10') setTimeout(function(){ upd10(); }, 60);
|
||
else if (tn === 'ref11') setTimeout(function(){ upd11(); }, 60);
|
||
else if (tn === 'ref12') setTimeout(function(){ upd12(); }, 60);
|
||
else if (tn === 'ref13') setTimeout(function(){ upd13(); }, 60);
|
||
else if (tn === 'ref14') setTimeout(function(){ upd14(); }, 60);
|
||
else if (tn === 'ref15') setTimeout(startAnim15, 60);
|
||
else if (tn === 'ref17') setTimeout(startAnim17, 60);
|
||
else if (tn === 'ref18') setTimeout(startAnim18, 60);
|
||
else if (tn === 'ref19') setTimeout(drawSpring19, 60);
|
||
else if (tn === 'ref20') setTimeout(drawFriction20, 60);
|
||
else if (tn === 'ref21') setTimeout(startAnim21, 60);
|
||
else if (tn === 'ref22') setTimeout(function(){ upd22(); }, 60);
|
||
else if (tn === 'ref23') setTimeout(function(){ upd23(); }, 60);
|
||
else if (tn === 'ref24') setTimeout(function(){ upd24(); }, 60);
|
||
else if (tn === 'ref25') setTimeout(function(){ upd25(); }, 60);
|
||
else if (tn === 'ref26') setTimeout(function(){ upd26(); }, 60);
|
||
else if (tn === 'ref27') setTimeout(function(){ upd27(); upd27mu(); }, 60);
|
||
else if (tn === 'ref28') setTimeout(function(){ upd28(); }, 60);
|
||
else if (tn === 'ref29') setTimeout(function(){ upd29(); }, 60);
|
||
else if (tn === 'ref30') setTimeout(function(){ upd30(); }, 60);
|
||
});
|
||
});
|
||
|
||
// ══════════════════════════════════════════════
|
||
// CHAPTER NAVIGATION
|
||
// ══════════════════════════════════════════════
|
||
document.querySelectorAll('.ch-btn').forEach(function(btn) {
|
||
btn.addEventListener('click', function() {
|
||
document.querySelectorAll('.ch-btn').forEach(function(b) { b.classList.remove('active'); });
|
||
document.querySelectorAll('.sec-group').forEach(function(g) { g.classList.remove('show'); });
|
||
btn.classList.add('active');
|
||
var grp = document.querySelector('.sec-group[data-chg="' + btn.dataset.ch + '"]');
|
||
if (grp) {
|
||
grp.classList.add('show');
|
||
if (!grp.querySelector('.tab.active')) {
|
||
var first = grp.querySelector('.tab');
|
||
if (first) first.click();
|
||
}
|
||
}
|
||
});
|
||
});
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ПЕРЕКЛЮЧАТЕЛЬ ПАРАГРАФОВ
|
||
// ══════════════════════════════════════════════
|
||
function setParaTab(para) {
|
||
['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10','p11','p12','p13','p14','p15','p16','p17','p18','p19','p20','p21','p22','p23','p24','p25','p26','p27','p28','p29','p30','p31','p32','p33','p34','p35','p36','hard'].forEach(p => {
|
||
const el = document.getElementById('ptab-' + p);
|
||
if (el) el.style.display = p === para ? 'block' : 'none';
|
||
document.querySelectorAll('.para-pill[data-para="' + p + '"]').forEach(b =>
|
||
b.classList.toggle('active', p === para)
|
||
);
|
||
});
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// НАВИГАЦИЯ
|
||
// ══════════════════════════════════════════════
|
||
function renderNav(sec) {
|
||
const pool = POOLS[sec];
|
||
const s = STATE[sec];
|
||
const el = document.getElementById('navDots' + sec);
|
||
if (!el) return;
|
||
el.innerHTML = pool.map((_, i) => {
|
||
let cls = 'nav-dot';
|
||
if (i === s.idx) cls += ' nd-cur';
|
||
else if (s.results[i] === true) cls += ' nd-ok';
|
||
else if (s.results[i] === false) cls += ' nd-fail';
|
||
return `<button class="${cls}" onclick="goToTask('${sec}',${i})" title="Задача ${i+1}">${i+1}</button>`;
|
||
}).join('');
|
||
}
|
||
|
||
function goToTask(sec, idx) {
|
||
const s = STATE[sec];
|
||
s.idx = idx;
|
||
s.answered = s.results[idx] !== null;
|
||
renderTask(sec);
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ОТРИСОВКА ЗАДАЧ (numeric + MCQ)
|
||
// ══════════════════════════════════════════════
|
||
function renderTask(sec) {
|
||
const pool = POOLS[sec];
|
||
const s = STATE[sec];
|
||
const area = document.getElementById('taskArea' + sec);
|
||
const fb = document.getElementById('fb' + sec);
|
||
document.getElementById('sum' + sec).classList.remove('show');
|
||
|
||
const q = pool[s.idx];
|
||
const done = s.results[s.idx] !== null;
|
||
s.answered = done;
|
||
const isMcq = !!q.opts;
|
||
|
||
const paraBadge = q.para
|
||
? `<span class="para-badge ${q.para==='§1'?'b1':q.para==='§2'?'b2':q.para==='§3'?'b3':q.para==='§4'?'b4':q.para==='§5'?'b5':q.para==='§6'?'b6':q.para==='§7'?'b7':q.para==='§8'?'b8':q.para==='§9'?'b9':q.para==='§10'?'b10':q.para==='§11'?'b11':q.para==='§12'?'b12':q.para==='§13'?'b13':q.para==='§14'?'b14':q.para==='§22'?'b22':q.para==='§23'?'b23':q.para==='§24'?'b24':q.para==='§25'?'b25':q.para==='§26'?'b26':q.para==='§27'?'b27':q.para==='§28'?'b28':q.para==='§29'?'b29':q.para==='§30'?'b30':q.para==='§32'?'b32':q.para==='§33'?'b33':q.para==='§34'?'b34':q.para==='§35'?'b35':q.para==='§36'?'b36':''}">${q.para}</span>`
|
||
: '';
|
||
|
||
if (isMcq) {
|
||
const selIdx = s.selections[s.idx];
|
||
area.innerHTML = `
|
||
<div class="task-card">
|
||
<div class="task-num">Задача ${s.idx+1} из ${pool.length} · Тест${paraBadge}</div>
|
||
<div class="task-text">${q.q}</div>
|
||
<div class="mcq-opts">
|
||
${q.opts.map((opt, i) => {
|
||
let cls = 'mcq-opt';
|
||
if (done) {
|
||
if (i === q.a) cls += ' mcq-cor';
|
||
else if (i === selIdx) cls += ' mcq-wrong';
|
||
}
|
||
return `<button class="${cls}" id="mcqOpt${sec}_${i}"
|
||
onclick="${done ? '' : `selectMcq('${sec}',${i})`}"
|
||
${done ? 'disabled' : ''}>
|
||
<span style="font-weight:800;margin-right:6px">${String.fromCharCode(65+i)}.</span>${opt}
|
||
</button>`;
|
||
}).join('')}
|
||
</div>
|
||
</div>`;
|
||
} else {
|
||
area.innerHTML = `
|
||
<div class="task-card">
|
||
<div class="task-num">Задача ${s.idx+1} из ${pool.length}${paraBadge}</div>
|
||
<div class="task-text">${q.q}</div>
|
||
<div class="task-hint"><i class="fas fa-lightbulb"></i><span>${q.hint}</span></div>
|
||
<div class="ans-row">
|
||
<label style="font-weight:700;font-size:.88rem">Ответ:</label>
|
||
<input class="ans-inp" type="text" id="ainp${sec}" placeholder="?"
|
||
autocomplete="off"
|
||
${done ? `disabled style="border-color:var(--${s.results[s.idx] ? 'ok' : 'fail'})"` : ''}>
|
||
<span class="unit-lbl">${q.unit}</span>
|
||
${done ? '' : `<button class="btn btn-pri" onclick="checkNum('${sec}')"><i class="fas fa-check"></i> Проверить</button>`}
|
||
</div>
|
||
</div>`;
|
||
}
|
||
|
||
if (done) {
|
||
const ok = s.results[s.idx];
|
||
fb.className = 'feedback show ' + (ok ? 'fb-ok' : 'fb-fail');
|
||
if (isMcq) {
|
||
fb.innerHTML = ok
|
||
? `✓ Верно! ${q.ex || ''}`
|
||
: `✗ Неверно. Правильный ответ: <strong>${q.opts[q.a]}</strong> ${q.ex || ''}`;
|
||
} else {
|
||
fb.innerHTML = ok
|
||
? `✓ Верно! ${q.ex}`
|
||
: `✗ Неверно. Правильный ответ: <strong>${q.a} ${q.unit}</strong> ${q.ex}`;
|
||
}
|
||
document.getElementById('nextBtn' + sec).style.display = 'inline-flex';
|
||
doRender(fb);
|
||
} else {
|
||
fb.className = 'feedback';
|
||
document.getElementById('nextBtn' + sec).style.display = 'none';
|
||
}
|
||
|
||
updateScoreBar(sec);
|
||
renderNav(sec);
|
||
doRender(area);
|
||
|
||
if (!done && !isMcq) {
|
||
const inp = document.getElementById('ainp' + sec);
|
||
setTimeout(() => inp && inp.focus(), 80);
|
||
inp && inp.addEventListener('keydown', e => { if (e.key === 'Enter') checkNum(sec); });
|
||
}
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ПРОВЕРКА MCQ
|
||
// ══════════════════════════════════════════════
|
||
function selectMcq(sec, i) {
|
||
const s = STATE[sec];
|
||
if (s.answered) return;
|
||
const pool = POOLS[sec];
|
||
const q = pool[s.idx];
|
||
const ok = i === q.a;
|
||
s.results[s.idx] = ok;
|
||
s.selections[s.idx] = i;
|
||
s.answered = true;
|
||
updateScoreBar(sec);
|
||
renderNav(sec);
|
||
|
||
q.opts.forEach((_, j) => {
|
||
const btn = document.getElementById(`mcqOpt${sec}_${j}`);
|
||
if (!btn) return;
|
||
btn.disabled = true;
|
||
if (j === q.a) btn.classList.add('mcq-cor');
|
||
else if (j === i && !ok) btn.classList.add('mcq-wrong');
|
||
});
|
||
|
||
const fb = document.getElementById('fb' + sec);
|
||
fb.className = 'feedback show ' + (ok ? 'fb-ok' : 'fb-fail');
|
||
fb.innerHTML = ok
|
||
? `✓ Верно! ${q.ex || ''}`
|
||
: `✗ Неверно. Правильный ответ: <strong>${q.opts[q.a]}</strong> ${q.ex || ''}`;
|
||
doRender(fb);
|
||
document.getElementById('nextBtn' + sec).style.display = 'inline-flex';
|
||
|
||
if (s.results.every(r => r !== null)) {
|
||
setTimeout(() => showSummary(sec), 2200);
|
||
}
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ПРОВЕРКА ЧИСЛОВЫХ
|
||
// ══════════════════════════════════════════════
|
||
function checkNum(sec) {
|
||
const s = STATE[sec];
|
||
if (s.answered) return;
|
||
const pool = POOLS[sec];
|
||
const q = pool[s.idx];
|
||
const inp = document.getElementById('ainp' + sec);
|
||
const fb = document.getElementById('fb' + sec);
|
||
const val = inp.value.trim().replace(',', '.');
|
||
const num = parseFloat(val);
|
||
|
||
if (!val || isNaN(num)) {
|
||
fb.className = 'feedback show fb-fail';
|
||
fb.innerHTML = '⚠️ Введите числовой ответ!';
|
||
return;
|
||
}
|
||
|
||
s.answered = true;
|
||
// Относительная погрешность 3%, для нуля — абсолютная 0.05
|
||
const tol = q.tol !== undefined ? q.tol : 0.03;
|
||
const ok = q.a === 0
|
||
? Math.abs(num) < 0.05
|
||
: Math.abs((num - q.a) / q.a) < tol;
|
||
s.results[s.idx] = ok;
|
||
updateScoreBar(sec);
|
||
renderNav(sec);
|
||
|
||
inp.disabled = true;
|
||
inp.style.borderColor = ok ? 'var(--ok)' : 'var(--fail)';
|
||
|
||
fb.className = 'feedback show ' + (ok ? 'fb-ok' : 'fb-fail');
|
||
fb.innerHTML = ok
|
||
? `✓ Верно! ${q.ex}`
|
||
: `✗ Неверно. Правильный ответ: <strong>${q.a} ${q.unit}</strong> ${q.ex}`;
|
||
doRender(fb);
|
||
document.getElementById('nextBtn' + sec).style.display = 'inline-flex';
|
||
|
||
if (s.results.every(r => r !== null)) {
|
||
setTimeout(() => showSummary(sec), 2200);
|
||
}
|
||
}
|
||
|
||
// Обратная совместимость — старый вызов check(sec) из HTML уже заменён, но на случай остатков:
|
||
function check(sec) { checkNum(sec); }
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ИНТЕРАКТИВНЫЕ СХЕМЫ
|
||
// ══════════════════════════════════════════════
|
||
|
||
// ── §1 — Анимация: виды движения ──────────────────────────
|
||
var anim1Id = null;
|
||
function startAnim1() {
|
||
var cv = document.getElementById('cv1');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
if (anim1Id) { cancelAnimationFrame(anim1Id); anim1Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 160;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var t = 0;
|
||
function frame() {
|
||
t += 0.018;
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0, 0, W, H);
|
||
ctx.font = '11px Inter,sans-serif';
|
||
// Row 1: uniform
|
||
var y1 = H * 0.23;
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#475569';
|
||
ctx.fillText('Равномерное (v = const)', 6, y1 - 9);
|
||
ctx.strokeStyle = dark ? '#334155' : '#e2e8f0'; ctx.lineWidth = 1;
|
||
ctx.beginPath(); ctx.moveTo(0, y1); ctx.lineTo(W, y1); ctx.stroke();
|
||
var x1 = ((t * 65) % (W + 22)) - 11;
|
||
ctx.fillStyle = '#3b82f6';
|
||
ctx.beginPath(); ctx.arc(x1, y1 - 11, 9, 0, 2*Math.PI); ctx.fill();
|
||
// Row 2: accelerated
|
||
var y2 = H * 0.57;
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#475569';
|
||
ctx.fillText('Равноускоренное (a > 0)', 6, y2 - 9);
|
||
ctx.strokeStyle = dark ? '#334155' : '#e2e8f0';
|
||
ctx.beginPath(); ctx.moveTo(0, y2); ctx.lineTo(W, y2); ctx.stroke();
|
||
var ph2 = (t * 0.55) % 2.2;
|
||
var x2 = ph2 * ph2 * W * 0.21;
|
||
ctx.fillStyle = '#10b981';
|
||
ctx.beginPath(); ctx.arc(Math.min(x2, W+9), y2 - 11, 9, 0, 2*Math.PI); ctx.fill();
|
||
// Row 3: decelerated
|
||
var y3 = H * 0.91;
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#475569';
|
||
ctx.fillText('Равнозамедленное (a < 0)', 6, y3 - 9);
|
||
ctx.strokeStyle = dark ? '#334155' : '#e2e8f0';
|
||
ctx.beginPath(); ctx.moveTo(0, y3); ctx.lineTo(W, y3); ctx.stroke();
|
||
var ph3 = (t * 0.55) % 2.2;
|
||
var x3 = W * (2*ph3 - 0.45*ph3*ph3) * 0.22;
|
||
ctx.fillStyle = '#f97316';
|
||
ctx.beginPath(); ctx.arc(Math.min(x3, W+9), y3 - 11, 9, 0, 2*Math.PI); ctx.fill();
|
||
anim1Id = requestAnimationFrame(frame);
|
||
}
|
||
frame();
|
||
}
|
||
|
||
// ── §2 — Относительность движения ─────────────────────────
|
||
function upd2() {
|
||
var cv = document.getElementById('cv2');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 160;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var vp = +(document.getElementById('sl2v') ? document.getElementById('sl2v').value : 5);
|
||
var vt = 20;
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f0f9ff';
|
||
ctx.fillRect(0,0,W,H);
|
||
// Ground
|
||
var gy = H*0.88;
|
||
ctx.strokeStyle = dark ? '#475569' : '#94a3b8'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(0,gy); ctx.lineTo(W,gy); ctx.stroke();
|
||
ctx.strokeStyle = dark ? '#475569' : '#cbd5e1'; ctx.lineWidth = 1;
|
||
for (var xi = 0; xi < W; xi += 30) {
|
||
ctx.beginPath(); ctx.moveTo(xi,gy); ctx.lineTo(xi+12,gy+6); ctx.stroke();
|
||
}
|
||
// Train body
|
||
var tx = W*0.1, tw = W*0.6, th = 44, ty = gy - th - 8;
|
||
ctx.fillStyle = dark ? '#1e3a5f' : '#dbeafe';
|
||
ctx.strokeStyle = dark ? '#3b82f6' : '#1d4ed8'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); roundRect(ctx, tx, ty, tw, th, 8); ctx.fill(); ctx.stroke();
|
||
// Wheels
|
||
[tx+18, tx+tw-18].forEach(function(wx) {
|
||
ctx.fillStyle = dark ? '#475569' : '#64748b';
|
||
ctx.beginPath(); ctx.arc(wx, gy-4, 8, 0, 2*Math.PI); ctx.fill();
|
||
ctx.fillStyle = '#fff'; ctx.beginPath(); ctx.arc(wx, gy-4, 3, 0, 2*Math.PI); ctx.fill();
|
||
});
|
||
// Train label
|
||
ctx.font = 'bold 11px Inter,sans-serif';
|
||
ctx.fillStyle = dark ? '#93c5fd' : '#1d4ed8';
|
||
ctx.fillText('Поезд: v₁ = '+vt+' м/с', tx+8, ty+16);
|
||
// Passenger dot
|
||
var px = tx + tw*0.5;
|
||
ctx.fillStyle = '#ef4444';
|
||
ctx.beginPath(); ctx.arc(px, ty+th*0.5+2, 11, 0, 2*Math.PI); ctx.fill();
|
||
ctx.font = 'bold 9px Inter,sans-serif'; ctx.fillStyle = '#fff';
|
||
ctx.textAlign = 'center';
|
||
ctx.fillText('+'+vp, px, ty+th*0.5+6); ctx.textAlign = 'left';
|
||
// Arrow: absolute speed
|
||
var ay = ty - 12, scale = (W*0.7) / (vt + 10);
|
||
var aLen = (vt + vp) * scale;
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(tx, ay); ctx.lineTo(tx + aLen, ay); ctx.stroke();
|
||
ctx.fillStyle = '#10b981';
|
||
ctx.beginPath(); ctx.moveTo(tx+aLen,ay); ctx.lineTo(tx+aLen-8,ay-5); ctx.lineTo(tx+aLen-8,ay+5); ctx.fill();
|
||
ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillText('v_пас = '+vt+'+'+vp+' = '+(vt+vp)+' м/с', tx, ay - 5);
|
||
var el = document.getElementById('res2');
|
||
if (el) el.textContent = 'Скорость относительно земли = ' + (vt+vp) + ' м/с';
|
||
var ev = document.getElementById('v2v');
|
||
if (ev) ev.textContent = vp + ' м/с';
|
||
}
|
||
function roundRect(ctx, x, y, w, h, r) {
|
||
ctx.beginPath();
|
||
ctx.moveTo(x+r,y); ctx.lineTo(x+w-r,y); ctx.quadraticCurveTo(x+w,y,x+w,y+r);
|
||
ctx.lineTo(x+w,y+h-r); ctx.quadraticCurveTo(x+w,y+h,x+w-r,y+h);
|
||
ctx.lineTo(x+r,y+h); ctx.quadraticCurveTo(x,y+h,x,y+h-r);
|
||
ctx.lineTo(x,y+r); ctx.quadraticCurveTo(x,y,x+r,y); ctx.closePath();
|
||
}
|
||
|
||
// ── §3 — Сложение векторов ─────────────────────────────────
|
||
function upd3() {
|
||
var cv = document.getElementById('cv3');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 180;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var a = +(document.getElementById('sl3a') ? document.getElementById('sl3a').value : 60);
|
||
var b = +(document.getElementById('sl3b') ? document.getElementById('sl3b').value : 50);
|
||
var ang = +(document.getElementById('sl3ang') ? document.getElementById('sl3ang').value : 60);
|
||
var angR = ang * Math.PI / 180;
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var ox = W*0.18, oy = H*0.65, sc = (W*0.55) / 120;
|
||
// Vector a (horizontal)
|
||
var ax = a * sc, ay = 0;
|
||
drawArrow3(ctx, ox, oy, ox+ax, oy+ay, '#3b82f6', 'a='+a, true, dark);
|
||
// Vector b (at angle)
|
||
var bx = b*sc*Math.cos(angR), by = -b*sc*Math.sin(angR);
|
||
drawArrow3(ctx, ox, oy, ox+bx, oy+by, '#ef4444', 'b='+b, true, dark);
|
||
// Result vector (parallelogram diagonal)
|
||
var rx = ax+bx, ry = ay+by;
|
||
var cLen = Math.sqrt(rx*rx+ry*ry)/sc;
|
||
drawArrow3(ctx, ox, oy, ox+rx, oy+ry, '#10b981', 'c='+cLen.toFixed(1), false, dark);
|
||
// Dashed parallelogram lines
|
||
ctx.strokeStyle = dark ? '#475569' : '#cbd5e1'; ctx.lineWidth = 1;
|
||
ctx.setLineDash([4,3]);
|
||
ctx.beginPath(); ctx.moveTo(ox+ax,oy+ay); ctx.lineTo(ox+rx,oy+ry); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox+bx,oy+by); ctx.lineTo(ox+rx,oy+ry); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
var el3a=document.getElementById('v3a'); if(el3a) el3a.textContent=a;
|
||
var el3b=document.getElementById('v3b'); if(el3b) el3b.textContent=b;
|
||
var el3ang=document.getElementById('v3ang'); if(el3ang) el3ang.textContent=ang+'°';
|
||
var el = document.getElementById('res3');
|
||
if (el) { el.textContent = '|c| = √(a²+b²+2ab·cos α) = ' + cLen.toFixed(2); doRender(el); }
|
||
}
|
||
function drawArrow3(ctx, x1, y1, x2, y2, col, lbl, dashed, dark) {
|
||
ctx.strokeStyle = col; ctx.lineWidth = dashed ? 2 : 3;
|
||
if (dashed) { ctx.setLineDash([]); }
|
||
ctx.beginPath(); ctx.moveTo(x1,y1); ctx.lineTo(x2,y2); ctx.stroke();
|
||
var ang = Math.atan2(y2-y1,x2-x1);
|
||
ctx.fillStyle = col;
|
||
ctx.beginPath(); ctx.moveTo(x2,y2);
|
||
ctx.lineTo(x2-10*Math.cos(ang-0.4),y2-10*Math.sin(ang-0.4));
|
||
ctx.lineTo(x2-10*Math.cos(ang+0.4),y2-10*Math.sin(ang+0.4));
|
||
ctx.fill();
|
||
var mx = (x1+x2)/2, my = (y1+y2)/2 - 10;
|
||
ctx.font = 'bold 11px Inter,sans-serif'; ctx.fillStyle = col;
|
||
ctx.fillText(lbl, mx, my);
|
||
}
|
||
|
||
// ── §4 — Проекции вектора ──────────────────────────────────
|
||
function upd4() {
|
||
var cv = document.getElementById('cv4');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 160;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var phi = +(document.getElementById('sl4phi') ? document.getElementById('sl4phi').value : 37);
|
||
var am = +(document.getElementById('sl4a') ? document.getElementById('sl4a').value : 70);
|
||
var phiR = phi * Math.PI / 180;
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var ox = W*0.18, oy = H*0.72, sc = (W*0.6)/120;
|
||
var vx = am*sc*Math.cos(phiR), vy = -am*sc*Math.sin(phiR);
|
||
// Axes
|
||
ctx.strokeStyle = dark ? '#475569' : '#94a3b8'; ctx.lineWidth = 1;
|
||
ctx.beginPath(); ctx.moveTo(ox-10,oy); ctx.lineTo(ox+W*0.72,oy); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox,oy+10); ctx.lineTo(ox,oy-H*0.7); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#475569'; ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillText('x', ox+W*0.72-6, oy+14); ctx.fillText('y', ox+4, oy-H*0.7+12);
|
||
// Vector
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(ox,oy); ctx.lineTo(ox+vx,oy+vy); ctx.stroke();
|
||
ctx.fillStyle = '#3b82f6';
|
||
var ang = Math.atan2(vy,vx);
|
||
ctx.beginPath(); ctx.moveTo(ox+vx,oy+vy);
|
||
ctx.lineTo(ox+vx-9*Math.cos(ang-0.4),oy+vy-9*Math.sin(ang-0.4));
|
||
ctx.lineTo(ox+vx-9*Math.cos(ang+0.4),oy+vy-9*Math.sin(ang+0.4)); ctx.fill();
|
||
ctx.fillText('a='+am, ox+vx/2-8, oy+vy/2-8);
|
||
// Projection lines dashed
|
||
ctx.strokeStyle = dark ? '#475569' : '#cbd5e1'; ctx.lineWidth = 1.2; ctx.setLineDash([4,3]);
|
||
ctx.beginPath(); ctx.moveTo(ox+vx,oy+vy); ctx.lineTo(ox+vx,oy); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox+vx,oy+vy); ctx.lineTo(ox,oy+vy); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
// Projection arrows
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(ox,oy); ctx.lineTo(ox+vx,oy); ctx.stroke();
|
||
ctx.fillStyle = '#ef4444'; ctx.font = 'bold 11px Inter,sans-serif';
|
||
var axVal = (am*Math.cos(phiR)).toFixed(1);
|
||
ctx.fillText('ax='+axVal, ox+vx/2-10, oy+16);
|
||
ctx.strokeStyle = '#f59e0b'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(ox,oy); ctx.lineTo(ox,oy+vy); ctx.stroke();
|
||
ctx.fillStyle = '#f59e0b';
|
||
var ayVal = (am*Math.sin(phiR)).toFixed(1);
|
||
ctx.fillText('ay='+ayVal, ox+6, oy+vy/2);
|
||
// Angle arc
|
||
ctx.strokeStyle = '#8b5cf6'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.arc(ox,oy,28,0,-phiR,true); ctx.stroke();
|
||
ctx.fillStyle = '#8b5cf6'; ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillText('φ='+phi+'°', ox+30, oy-8);
|
||
var el4phi=document.getElementById('v4phi'); if(el4phi) el4phi.textContent=phi+'°';
|
||
var el4a=document.getElementById('v4a'); if(el4a) el4a.textContent=am;
|
||
var el = document.getElementById('res4');
|
||
if (el) el.textContent = 'ax = '+axVal+', ay = '+ayVal;
|
||
}
|
||
|
||
// ── §5 — Путь и перемещение ───────────────────────────────
|
||
function upd5() {
|
||
var cv = document.getElementById('cv5');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 130;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var s1 = +(document.getElementById('sl5s1') ? document.getElementById('sl5s1').value : 120);
|
||
var s2 = +(document.getElementById('sl5s2') ? document.getElementById('sl5s2').value : 60);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var pad = W*0.08, sc = (W*0.84)/(s1+50);
|
||
var y = H*0.48, r = 8;
|
||
// Start point A
|
||
var xa = pad, xb = pad + s1*sc, xc = pad + (s1-s2)*sc;
|
||
// Draw detour arc (path above)
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath();
|
||
ctx.moveTo(xa,y); ctx.quadraticCurveTo((xa+xb)/2, y-38, xb, y);
|
||
ctx.stroke();
|
||
ctx.fillStyle = '#ef4444'; ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillText('Путь s₁='+s1+' м', (xa+xb)/2-24, y-42);
|
||
// Return path (dashed below)
|
||
ctx.strokeStyle = '#f97316'; ctx.lineWidth = 2; ctx.setLineDash([5,3]);
|
||
ctx.beginPath(); ctx.moveTo(xb,y); ctx.lineTo(xc,y); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
ctx.fillStyle = '#f97316';
|
||
ctx.fillText('s₂='+s2, (xb+xc)/2-10, y+18);
|
||
// Displacement arrow
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(xa, y+30); ctx.lineTo(xc-4, y+30); ctx.stroke();
|
||
ctx.fillStyle = '#3b82f6';
|
||
var disp = s1-s2;
|
||
ctx.beginPath(); ctx.moveTo(xc,y+30); ctx.lineTo(xc-10,y+25); ctx.lineTo(xc-10,y+35); ctx.fill();
|
||
ctx.fillText('Перемещение |Δr| = '+(disp)+' м', xa, y+46);
|
||
// Points
|
||
[[xa,'A','#1d4ed8'],[xb,'B','#dc2626'],[xc,'C','#c2410c']].forEach(function(p){
|
||
ctx.fillStyle = p[2]; ctx.beginPath(); ctx.arc(p[0],y,r,0,2*Math.PI); ctx.fill();
|
||
ctx.fillStyle = dark ? '#e2e8f0' : '#1e293b'; ctx.font = 'bold 11px Inter,sans-serif';
|
||
ctx.fillText(p[1], p[0]-4, y-r-4);
|
||
});
|
||
[['sl5s1','v5s1',s1],['sl5s2','v5s2',s2]].forEach(function(p){
|
||
var el=document.getElementById(p[1]); if(el) el.textContent=p[2]+' м';
|
||
});
|
||
var el = document.getElementById('res5');
|
||
if (el) el.textContent = 'Путь = '+(s1+s2)+' м, Перемещение = '+(s1-s2)+' м';
|
||
}
|
||
|
||
// ── §6 — График x(t) равномерного движения ────────────────
|
||
function upd6() {
|
||
var cv = document.getElementById('cv6');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 180;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var v = +(document.getElementById('sl6v') ? document.getElementById('sl6v').value : 10);
|
||
var x0 = +(document.getElementById('sl6x0') ? document.getElementById('sl6x0').value : 0);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var lpad = 44, bpad = 28, rpad = 18, tpad = 18;
|
||
var gw = W-lpad-rpad, gh = H-tpad-bpad;
|
||
var ox = lpad, oy = tpad+gh;
|
||
// Grid
|
||
ctx.strokeStyle = dark ? '#1e3a5f' : '#e2e8f0'; ctx.lineWidth = 1;
|
||
var tmax = 8, xmin = -60, xmax = 100;
|
||
for (var ti = 0; ti <= tmax; ti++) {
|
||
var gx = ox + ti*(gw/tmax);
|
||
ctx.beginPath(); ctx.moveTo(gx,tpad); ctx.lineTo(gx,oy); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#64748b' : '#94a3b8'; ctx.font = '10px Inter,sans-serif';
|
||
ctx.fillText(ti, gx-3, oy+14);
|
||
}
|
||
var xstep = 20, nsteps = Math.ceil((xmax-xmin)/xstep);
|
||
for (var xi = 0; xi <= nsteps; xi++) {
|
||
var xv = xmin + xi*xstep;
|
||
var gy = oy - (xv-xmin)/(xmax-xmin)*gh;
|
||
if (gy < tpad-1 || gy > oy+1) continue;
|
||
ctx.beginPath(); ctx.moveTo(ox,gy); ctx.lineTo(ox+gw,gy); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#64748b' : '#94a3b8'; ctx.font = '10px Inter,sans-serif';
|
||
ctx.fillText(xv, ox-28, gy+4);
|
||
}
|
||
// Axes
|
||
ctx.strokeStyle = dark ? '#94a3b8' : '#475569'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(ox,tpad-4); ctx.lineTo(ox,oy+2); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox-2,oy); ctx.lineTo(ox+gw+4,oy); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#475569'; ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillText('t, с', ox+gw-4, oy+14); ctx.fillText('x, м', ox+4, tpad-6);
|
||
// Line x(t)
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath();
|
||
for (var tc = 0; tc <= tmax; tc++) {
|
||
var xc2 = x0 + v * tc;
|
||
var gxc = ox + tc*(gw/tmax);
|
||
var gyc = oy - (xc2-xmin)/(xmax-xmin)*gh;
|
||
if (tc === 0) ctx.moveTo(gxc, gyc); else ctx.lineTo(gxc, gyc);
|
||
}
|
||
ctx.stroke();
|
||
ctx.fillStyle = '#3b82f6'; ctx.font = 'bold 11px Inter,sans-serif';
|
||
ctx.fillText('x = '+x0+(v>=0?'+':'')+v+'·t', ox+gw*0.4, tpad+12);
|
||
[['v6v',v+' м/с'],['v6x0',x0+' м']].forEach(function(p){
|
||
var el=document.getElementById(p[0]); if(el) el.textContent=p[1];
|
||
});
|
||
var el = document.getElementById('res6');
|
||
if (el) el.textContent = 'x(t) = '+x0+(v>=0?'+':'')+v+'·t';
|
||
}
|
||
|
||
// ── §7 — Движение двух тел: встреча ──────────────────────
|
||
function upd7() {
|
||
var cv = document.getElementById('cv7');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 200;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var v1 = +(document.getElementById('sl7v1') ? document.getElementById('sl7v1').value : 6);
|
||
var x01 = +(document.getElementById('sl7x1') ? document.getElementById('sl7x1').value : 0);
|
||
var v2 = +(document.getElementById('sl7v2') ? document.getElementById('sl7v2').value : 4);
|
||
var x02 = +(document.getElementById('sl7x2') ? document.getElementById('sl7x2').value : 100);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
// Parameters
|
||
var lpad = 44, bpad = 28, rpad = 16, tpad = 18;
|
||
var gw = W-lpad-rpad, gh = H-tpad-bpad;
|
||
var ox = lpad, oy = tpad+gh;
|
||
var tmax = 15, xmin = -10, xmax = 110;
|
||
// Grid
|
||
ctx.strokeStyle = dark ? '#1e3a5f' : '#e2e8f0'; ctx.lineWidth = 1;
|
||
for (var ti = 0; ti <= tmax; ti += 3) {
|
||
var gx = ox + ti*(gw/tmax);
|
||
ctx.beginPath(); ctx.moveTo(gx,tpad); ctx.lineTo(gx,oy); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#64748b' : '#94a3b8'; ctx.font = '10px Inter,sans-serif';
|
||
ctx.fillText(ti, gx-3, oy+14);
|
||
}
|
||
for (var xi = 0; xi <= 110; xi += 20) {
|
||
var gy = oy - (xi-xmin)/(xmax-xmin)*gh;
|
||
if (gy < tpad-1 || gy > oy+1) continue;
|
||
ctx.beginPath(); ctx.moveTo(ox,gy); ctx.lineTo(ox+gw,gy); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#64748b' : '#94a3b8'; ctx.font = '10px Inter,sans-serif';
|
||
ctx.fillText(xi, ox-26, gy+4);
|
||
}
|
||
// Axes
|
||
ctx.strokeStyle = dark ? '#94a3b8' : '#475569'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(ox,tpad-4); ctx.lineTo(ox,oy+2); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox-2,oy); ctx.lineTo(ox+gw+4,oy); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#475569'; ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillText('t, с', ox+gw-4, oy+14); ctx.fillText('x, м', ox+4, tpad-6);
|
||
// Line 1
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath();
|
||
for (var tc = 0; tc <= tmax; tc++) {
|
||
var xv = x01 + v1*tc;
|
||
ctx.lineTo(ox+tc*(gw/tmax), oy-(xv-xmin)/(xmax-xmin)*gh);
|
||
if (tc===0) ctx.moveTo(ox, oy-(x01-xmin)/(xmax-xmin)*gh);
|
||
}
|
||
ctx.stroke();
|
||
ctx.fillStyle = '#3b82f6'; ctx.font = 'bold 10px Inter,sans-serif';
|
||
ctx.fillText('Тело 1 (v='+v1+')', ox+4, oy-(x01-xmin)/(xmax-xmin)*gh - 5);
|
||
// Line 2
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath();
|
||
ctx.moveTo(ox, oy-(x02-xmin)/(xmax-xmin)*gh);
|
||
for (var tc2 = 0; tc2 <= tmax; tc2++) {
|
||
var xv2 = x02 - v2*tc2;
|
||
ctx.lineTo(ox+tc2*(gw/tmax), oy-(xv2-xmin)/(xmax-xmin)*gh);
|
||
}
|
||
ctx.stroke();
|
||
ctx.fillStyle = '#ef4444';
|
||
ctx.fillText('Тело 2 (v='+v2+')', ox+gw*0.55, oy-(x02-xmin)/(xmax-xmin)*gh + 14);
|
||
// Meeting point
|
||
var dv = v1 + v2, dx = x02 - x01;
|
||
if (dv > 0) {
|
||
var tmeet = dx / dv;
|
||
var xmeet = x01 + v1*tmeet;
|
||
if (tmeet > 0 && tmeet < tmax && xmeet >= xmin && xmeet <= xmax) {
|
||
var gxm = ox+tmeet*(gw/tmax);
|
||
var gym = oy-(xmeet-xmin)/(xmax-xmin)*gh;
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 1; ctx.setLineDash([4,3]);
|
||
ctx.beginPath(); ctx.moveTo(gxm,gym); ctx.lineTo(gxm,oy); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox,gym); ctx.lineTo(gxm,gym); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
ctx.fillStyle = '#10b981';
|
||
ctx.beginPath(); ctx.arc(gxm,gym,5,0,2*Math.PI); ctx.fill();
|
||
ctx.font = '10px Inter,sans-serif';
|
||
ctx.fillText('t='+tmeet.toFixed(1)+' с', gxm+3, gym-5);
|
||
}
|
||
}
|
||
[['v7v1',v1+' м/с'],['v7v2',v2+' м/с'],['v7x1',x01+' м'],['v7x2',x02+' м']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
var el = document.getElementById('res7');
|
||
if (el && dv > 0) {
|
||
var tm = dx/dv;
|
||
el.textContent = tm > 0 ? 'Встреча через t = '+tm.toFixed(2)+' с, в точке x = '+(x01+v1*tm).toFixed(1)+' м' : 'Движутся прочь друг от друга';
|
||
}
|
||
}
|
||
|
||
// ── §8 — Средняя скорость ─────────────────────────────────
|
||
function upd8() {
|
||
var cv = document.getElementById('cv8');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 140;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var v1 = +(document.getElementById('sl8v1') ? document.getElementById('sl8v1').value : 40);
|
||
var v2 = +(document.getElementById('sl8v2') ? document.getElementById('sl8v2').value : 60);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
// Two segments of equal length
|
||
var pad = W*0.08, segW = W*0.38, y = H*0.42, h = 22;
|
||
// Segment 1
|
||
ctx.fillStyle = dark ? '#1e3a5f' : '#dbeafe';
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth = 2;
|
||
ctx.fillRect(pad, y, segW, h); ctx.strokeRect(pad, y, segW, h);
|
||
ctx.fillStyle = dark ? '#93c5fd' : '#1d4ed8'; ctx.font = 'bold 11px Inter,sans-serif';
|
||
ctx.textAlign = 'center';
|
||
ctx.fillText('v₁ = '+v1+' км/ч', pad+segW/2, y+15);
|
||
// Segment 2
|
||
ctx.fillStyle = dark ? '#1c2d0f' : '#d1fae5';
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2;
|
||
ctx.fillRect(pad+segW, y, segW, h); ctx.strokeRect(pad+segW, y, segW, h);
|
||
ctx.fillStyle = dark ? '#6ee7b7' : '#065f46';
|
||
ctx.fillText('v₂ = '+v2+' км/ч', pad+segW+segW/2, y+15);
|
||
ctx.textAlign = 'left';
|
||
// Labels
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#475569'; ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillText('s/2', pad, y-8); ctx.fillText('s/2', pad+segW, y-8);
|
||
// Average speed formula
|
||
var vavg = 2*v1*v2/(v1+v2);
|
||
ctx.fillStyle = dark ? '#e2e8f0' : '#1e293b'; ctx.font = 'bold 12px Inter,sans-serif';
|
||
ctx.fillText('⟨v⟩ = 2v₁v₂/(v₁+v₂) = '+vavg.toFixed(1)+' км/ч', pad, y+h+26);
|
||
ctx.font = '10px Inter,sans-serif'; ctx.fillStyle = dark ? '#64748b' : '#94a3b8';
|
||
ctx.fillText('(среднеарифметическое: '+(v1+v2)/2+' ≠ среднее по пути)', pad, y+h+42);
|
||
[['v8v1',v1+' км/ч'],['v8v2',v2+' км/ч']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
var el = document.getElementById('res8');
|
||
if (el) el.textContent = '⟨v⟩ = ' + vavg.toFixed(2) + ' км/ч';
|
||
}
|
||
|
||
// ── §9 — Сложение скоростей (лодка на реке) ───────────────
|
||
var anim9Id = null;
|
||
function upd9() {
|
||
var cv = document.getElementById('cv9');
|
||
if (!cv) return;
|
||
if (anim9Id) { cancelAnimationFrame(anim9Id); anim9Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 180;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var vb = +(document.getElementById('sl9vb') ? document.getElementById('sl9vb').value : 4);
|
||
var vu = +(document.getElementById('sl9vu') ? document.getElementById('sl9vu').value : 3);
|
||
var d = +(document.getElementById('sl9d') ? document.getElementById('sl9d').value : 60);
|
||
var vres = Math.sqrt(vb*vb+vu*vu);
|
||
var t = d/vb;
|
||
var drift = vu*t;
|
||
var dark = document.body.classList.contains('dark');
|
||
var anim9t = 0;
|
||
function frame9() {
|
||
anim9t += 0.012;
|
||
var ph = anim9t % 1;
|
||
ctx.fillStyle = dark ? '#1e293b' : '#e0f2fe';
|
||
ctx.fillRect(0,0,W,H);
|
||
// River banks
|
||
var bank1 = H*0.12, bank2 = H*0.88, riverH = bank2-bank1;
|
||
ctx.fillStyle = dark ? '#0c4a6e' : '#bae6fd';
|
||
ctx.fillRect(0, bank1, W, riverH);
|
||
ctx.fillStyle = dark ? '#1e3a5f' : '#7dd3fc';
|
||
// Ripples
|
||
for (var ri = 0; ri < 5; ri++) {
|
||
ctx.strokeStyle = dark ? '#1e3a5f' : '#38bdf8'; ctx.lineWidth = 1;
|
||
ctx.beginPath(); ctx.moveTo(40+ri*60, (bank1+bank2)/2); ctx.lineTo(80+ri*60, (bank1+bank2)/2); ctx.stroke();
|
||
}
|
||
ctx.fillStyle = dark ? '#64748b' : '#475569';
|
||
ctx.fillRect(0, 0, W, bank1); ctx.fillRect(0, bank2, W, H-bank2);
|
||
ctx.font = 'bold 10px Inter,sans-serif';
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#334155';
|
||
ctx.fillText('Берег 1', 6, bank1-4);
|
||
ctx.fillText('Берег 2', 6, bank2+12);
|
||
// Current arrows
|
||
ctx.strokeStyle = '#0ea5e9'; ctx.lineWidth = 1.5;
|
||
for (var ci = 0; ci < 4; ci++) {
|
||
var cy = bank1 + riverH*(0.2+ci*0.2);
|
||
ctx.beginPath(); ctx.moveTo(W*0.1+ci*20, cy); ctx.lineTo(W*0.1+ci*20+vu*8, cy); ctx.stroke();
|
||
ctx.fillStyle = '#0ea5e9';
|
||
ctx.beginPath(); ctx.moveTo(W*0.1+ci*20+vu*8,cy);
|
||
ctx.lineTo(W*0.1+ci*20+vu*8-6,cy-3); ctx.lineTo(W*0.1+ci*20+vu*8-6,cy+3); ctx.fill();
|
||
}
|
||
// Boat position
|
||
var scX = (W*0.75)/Math.max(drift+20,40);
|
||
var scY = riverH;
|
||
var bx = W*0.12 + ph*drift*scX;
|
||
var by = bank1 + ph*scY;
|
||
ctx.fillStyle = '#f59e0b';
|
||
ctx.beginPath(); ctx.arc(bx, by, 8, 0, 2*Math.PI); ctx.fill();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter,sans-serif';
|
||
ctx.textAlign = 'center'; ctx.fillText('⛵', bx, by+4); ctx.textAlign = 'left';
|
||
// Result
|
||
var el = document.getElementById('res9');
|
||
if (el) el.textContent = '|v_рез| = '+vres.toFixed(2)+' м/с, снос = '+drift.toFixed(1)+' м, t = '+t.toFixed(1)+' с';
|
||
[['v9vb',vb+' м/с'],['v9vu',vu+' м/с'],['v9d',d+' м']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
anim9Id = requestAnimationFrame(frame9);
|
||
}
|
||
frame9();
|
||
}
|
||
|
||
// ── §10 — Ускорение ───────────────────────────────────────
|
||
function upd10() {
|
||
var cv = document.getElementById('cv10');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 160;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var v0 = +(document.getElementById('sl10v0') ? document.getElementById('sl10v0').value : 10);
|
||
var a = +(document.getElementById('sl10a') ? document.getElementById('sl10a').value : 2);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
// Show v(t) for a few seconds
|
||
var tmax = 8, vmax = Math.max(v0+a*tmax, 5)+5;
|
||
var lpad=44, bpad=28, rpad=16, tpad=18;
|
||
var gw=W-lpad-rpad, gh=H-tpad-bpad;
|
||
var ox=lpad, oy=tpad+gh;
|
||
ctx.strokeStyle = dark ? '#1e3a5f' : '#e2e8f0'; ctx.lineWidth = 1;
|
||
for (var ti=0; ti<=tmax; ti+=2) {
|
||
var gx = ox+ti*(gw/tmax);
|
||
ctx.beginPath(); ctx.moveTo(gx,tpad); ctx.lineTo(gx,oy); ctx.stroke();
|
||
ctx.fillStyle = dark?'#64748b':'#94a3b8'; ctx.font='10px Inter,sans-serif';
|
||
ctx.fillText(ti, gx-3, oy+14);
|
||
}
|
||
var vstep = vmax > 40 ? 20 : 10;
|
||
for (var vi=0; vi<=vmax; vi+=vstep) {
|
||
var gy = oy-vi/vmax*gh;
|
||
if (gy < tpad-1) continue;
|
||
ctx.beginPath(); ctx.moveTo(ox,gy); ctx.lineTo(ox+gw,gy); ctx.stroke();
|
||
ctx.fillText(vi, ox-24, gy+4);
|
||
}
|
||
ctx.strokeStyle = dark?'#94a3b8':'#475569'; ctx.lineWidth=1.5;
|
||
ctx.beginPath(); ctx.moveTo(ox,tpad-4); ctx.lineTo(ox,oy+2); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox-2,oy); ctx.lineTo(ox+gw+4,oy); ctx.stroke();
|
||
ctx.fillStyle = dark?'#94a3b8':'#475569'; ctx.font='11px Inter,sans-serif';
|
||
ctx.fillText('t,с', ox+gw-4, oy+14); ctx.fillText('v,м/с', ox+4, tpad-6);
|
||
// v(t) line
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth=2.5;
|
||
ctx.beginPath();
|
||
ctx.moveTo(ox, oy-v0/vmax*gh);
|
||
for (var tc=0; tc<=tmax; tc++) {
|
||
var vc = v0+a*tc;
|
||
if (vc < 0) vc = 0;
|
||
ctx.lineTo(ox+tc*(gw/tmax), oy-Math.min(vc,vmax)/vmax*gh);
|
||
}
|
||
ctx.stroke();
|
||
ctx.fillStyle='#3b82f6'; ctx.font='bold 11px Inter,sans-serif';
|
||
ctx.fillText('v = '+v0+(a>=0?'+':'')+a+'·t', ox+gw*0.3, tpad+14);
|
||
// a annotation
|
||
ctx.strokeStyle='#ef4444'; ctx.lineWidth=1.5; ctx.setLineDash([4,3]);
|
||
var gx1=ox+(gw/tmax), gx2=ox+2*(gw/tmax);
|
||
var vy1=oy-(v0+a)/vmax*gh, vy2=oy-(v0+2*a)/vmax*gh;
|
||
ctx.beginPath(); ctx.moveTo(gx1,vy1); ctx.lineTo(gx2,vy1); ctx.lineTo(gx2,vy2); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
ctx.fillStyle='#ef4444'; ctx.font='10px Inter,sans-serif';
|
||
ctx.fillText('a='+a, gx2+3, (vy1+vy2)/2+4);
|
||
[['v10v0',v0+' м/с'],['v10a',a+' м/с²']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
var vFinal = v0+a*tmax;
|
||
var el = document.getElementById('res10');
|
||
if (el) el.textContent = 'Через '+tmax+' с: v = '+v0+(a>=0?'+':'')+a+'·'+tmax+' = '+(v0+a*tmax)+' м/с';
|
||
}
|
||
|
||
// ── §11 — Равноускоренное движение: v(t) ─────────────────
|
||
function upd11() {
|
||
var cv = document.getElementById('cv11');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 180;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var v0 = +(document.getElementById('sl11v0') ? document.getElementById('sl11v0').value : 5);
|
||
var a = +(document.getElementById('sl11a') ? document.getElementById('sl11a').value : 3);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var tmax = 10, vmax = Math.max(v0+a*tmax+4, 10);
|
||
var lpad=44, bpad=28, rpad=16, tpad=18;
|
||
var gw=W-lpad-rpad, gh=H-tpad-bpad;
|
||
var ox=lpad, oy=tpad+gh;
|
||
// Grid
|
||
ctx.strokeStyle = dark?'#1e3a5f':'#e2e8f0'; ctx.lineWidth=1;
|
||
for (var ti=0; ti<=tmax; ti+=2) {
|
||
var gx=ox+ti*(gw/tmax);
|
||
ctx.beginPath(); ctx.moveTo(gx,tpad); ctx.lineTo(gx,oy); ctx.stroke();
|
||
ctx.fillStyle=dark?'#64748b':'#94a3b8'; ctx.font='10px Inter,sans-serif';
|
||
ctx.fillText(ti, gx-3, oy+14);
|
||
}
|
||
var vstep = vmax > 60 ? 20 : 10;
|
||
for (var vi=0; vi<=vmax; vi+=vstep) {
|
||
var gy=oy-vi/vmax*gh; if(gy<tpad-1) continue;
|
||
ctx.beginPath(); ctx.moveTo(ox,gy); ctx.lineTo(ox+gw,gy); ctx.stroke();
|
||
ctx.fillText(vi, ox-24, gy+4);
|
||
}
|
||
// Axes
|
||
ctx.strokeStyle=dark?'#94a3b8':'#475569'; ctx.lineWidth=1.5;
|
||
ctx.beginPath(); ctx.moveTo(ox,tpad-4); ctx.lineTo(ox,oy+2); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox-2,oy); ctx.lineTo(ox+gw+4,oy); ctx.stroke();
|
||
ctx.fillStyle=dark?'#94a3b8':'#475569'; ctx.font='11px Inter,sans-serif';
|
||
ctx.fillText('t,с',ox+gw-4,oy+14); ctx.fillText('v,м/с',ox+4,tpad-6);
|
||
// v(t) line with area fill
|
||
ctx.fillStyle = dark ? 'rgba(59,130,246,0.15)' : 'rgba(59,130,246,0.1)';
|
||
ctx.beginPath(); ctx.moveTo(ox,oy);
|
||
ctx.lineTo(ox, oy-Math.min(v0,vmax)/vmax*gh);
|
||
for (var tc=0; tc<=tmax; tc++) {
|
||
var vc=v0+a*tc; if(vc<0) vc=0;
|
||
ctx.lineTo(ox+tc*(gw/tmax), oy-Math.min(vc,vmax)/vmax*gh);
|
||
}
|
||
ctx.lineTo(ox+gw,oy); ctx.closePath(); ctx.fill();
|
||
ctx.strokeStyle='#3b82f6'; ctx.lineWidth=2.5;
|
||
ctx.beginPath(); ctx.moveTo(ox, oy-Math.min(v0,vmax)/vmax*gh);
|
||
for (var tc2=0; tc2<=tmax; tc2++) {
|
||
var vc2=v0+a*tc2; if(vc2<0) vc2=0;
|
||
ctx.lineTo(ox+tc2*(gw/tmax), oy-Math.min(vc2,vmax)/vmax*gh);
|
||
}
|
||
ctx.stroke();
|
||
// Slope annotation
|
||
ctx.fillStyle='#3b82f6'; ctx.font='bold 11px Inter,sans-serif';
|
||
ctx.fillText('v = '+v0+(a>=0?'+':'')+a+'·t', ox+gw*0.45, tpad+14);
|
||
ctx.fillStyle=dark?'#94a3b8':'#64748b'; ctx.font='10px Inter,sans-serif';
|
||
ctx.fillText('Площадь = путь s', ox+gw*0.22, oy-gh*0.28);
|
||
[['v11v0',v0+' м/с'],['v11a',a+' м/с²']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
var el=document.getElementById('res11');
|
||
if (el) el.textContent = 'v('+tmax+'с) = '+(v0+a*tmax)+' м/с; s = '+(v0*tmax+a*tmax*tmax/2).toFixed(1)+' м';
|
||
}
|
||
|
||
// ── §12 — x(t) при равноускоренном движении ──────────────
|
||
function upd12() {
|
||
var cv = document.getElementById('cv12');
|
||
if (!cv) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 200;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var v0 = +(document.getElementById('sl12v0') ? document.getElementById('sl12v0').value : 0);
|
||
var a = +(document.getElementById('sl12a') ? document.getElementById('sl12a').value : 2);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var tmax = 8;
|
||
var xmax = v0*tmax + 0.5*a*tmax*tmax;
|
||
var xmin = Math.min(0, xmax);
|
||
if (xmax < 5 && xmax > -5) xmax = 20;
|
||
if (xmin > -5) xmin = -5;
|
||
var lpad=44, bpad=28, rpad=16, tpad=18;
|
||
var gw=W-lpad-rpad, gh=H-tpad-bpad;
|
||
var ox=lpad, oy=tpad+gh;
|
||
// Grid
|
||
ctx.strokeStyle=dark?'#1e3a5f':'#e2e8f0'; ctx.lineWidth=1;
|
||
for (var ti=0; ti<=tmax; ti+=2) {
|
||
var gx=ox+ti*(gw/tmax);
|
||
ctx.beginPath(); ctx.moveTo(gx,tpad); ctx.lineTo(gx,oy); ctx.stroke();
|
||
ctx.fillStyle=dark?'#64748b':'#94a3b8'; ctx.font='10px Inter,sans-serif';
|
||
ctx.fillText(ti, gx-3, oy+14);
|
||
}
|
||
var xstep = (xmax-xmin) > 80 ? 40 : 20;
|
||
for (var xi=Math.ceil(xmin/xstep)*xstep; xi<=xmax; xi+=xstep) {
|
||
var gy=oy-(xi-xmin)/(xmax-xmin)*gh; if(gy<tpad-1||gy>oy+1) continue;
|
||
ctx.beginPath(); ctx.moveTo(ox,gy); ctx.lineTo(ox+gw,gy); ctx.stroke();
|
||
ctx.fillText(xi.toFixed(0), ox-30, gy+4);
|
||
}
|
||
// Axes
|
||
ctx.strokeStyle=dark?'#94a3b8':'#475569'; ctx.lineWidth=1.5;
|
||
ctx.beginPath(); ctx.moveTo(ox,tpad-4); ctx.lineTo(ox,oy+2); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(ox-2,oy); ctx.lineTo(ox+gw+4,oy); ctx.stroke();
|
||
ctx.fillStyle=dark?'#94a3b8':'#475569'; ctx.font='11px Inter,sans-serif';
|
||
ctx.fillText('t,с',ox+gw-4,oy+14); ctx.fillText('x,м',ox+4,tpad-6);
|
||
// x(t) curve (parabola)
|
||
ctx.strokeStyle='#10b981'; ctx.lineWidth=2.5;
|
||
ctx.beginPath();
|
||
for (var tc=0; tc<=tmax*20; tc++) {
|
||
var t2=tc/(tmax*20)*tmax;
|
||
var xv=v0*t2+0.5*a*t2*t2;
|
||
var gxc=ox+t2/tmax*gw;
|
||
var gyc=oy-(xv-xmin)/(xmax-xmin)*gh;
|
||
if (tc===0) ctx.moveTo(gxc,gyc); else ctx.lineTo(gxc,gyc);
|
||
}
|
||
ctx.stroke();
|
||
ctx.fillStyle='#10b981'; ctx.font='bold 11px Inter,sans-serif';
|
||
ctx.fillText('x = '+v0+'t + '+a+'/2·t²', ox+gw*0.3, tpad+14);
|
||
[['v12v0',v0+' м/с'],['v12a',a+' м/с²']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
var el=document.getElementById('res12');
|
||
if (el) el.textContent = 'x('+tmax+'с) = '+(v0*tmax+0.5*a*tmax*tmax).toFixed(1)+' м';
|
||
}
|
||
|
||
// ── §13 — Равномерное движение по окружности ─────────────
|
||
var anim13Id = null;
|
||
function upd13() {
|
||
var cv = document.getElementById('cv13');
|
||
if (!cv) return;
|
||
if (anim13Id) { cancelAnimationFrame(anim13Id); anim13Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 180;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var r = +(document.getElementById('sl13r') ? document.getElementById('sl13r').value : 3);
|
||
var nu = +(document.getElementById('sl13nu') ? document.getElementById('sl13nu').value : 2);
|
||
var v = 2*Math.PI*r*nu;
|
||
var anim13t = 0;
|
||
function frame13() {
|
||
anim13t += 0.016;
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var cx = W*0.35, cy = H*0.5;
|
||
var sc = Math.min(H*0.35, W*0.28) / 5;
|
||
var R = r * sc;
|
||
// Circle
|
||
ctx.strokeStyle = dark ? '#334155' : '#e2e8f0'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.arc(cx,cy,R,0,2*Math.PI); ctx.stroke();
|
||
// Radius
|
||
var angle = 2*Math.PI*nu * anim13t;
|
||
var px = cx + R*Math.cos(angle), py = cy + R*Math.sin(angle);
|
||
ctx.strokeStyle = dark ? '#475569' : '#94a3b8'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(cx,cy); ctx.lineTo(px,py); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#64748b'; ctx.font = '10px Inter,sans-serif';
|
||
ctx.fillText('r='+r+' м', cx+3, cy-4);
|
||
// Point
|
||
ctx.fillStyle = '#3b82f6';
|
||
ctx.beginPath(); ctx.arc(px,py,7,0,2*Math.PI); ctx.fill();
|
||
// Velocity vector (tangential)
|
||
var tangX = -Math.sin(angle)*v*0.5*sc*0.8;
|
||
var tangY = Math.cos(angle)*v*0.5*sc*0.8;
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(px,py); ctx.lineTo(px+tangX,py+tangY); ctx.stroke();
|
||
ctx.fillStyle = '#10b981';
|
||
ctx.beginPath(); ctx.moveTo(px+tangX,py+tangY);
|
||
ctx.lineTo(px+tangX-7*Math.cos(Math.atan2(tangY,tangX)-0.4),py+tangY-7*Math.sin(Math.atan2(tangY,tangX)-0.4));
|
||
ctx.lineTo(px+tangX-7*Math.cos(Math.atan2(tangY,tangX)+0.4),py+tangY-7*Math.sin(Math.atan2(tangY,tangX)+0.4));
|
||
ctx.fill();
|
||
ctx.font = '10px Inter,sans-serif';
|
||
ctx.fillText('v', px+tangX+3, py+tangY-3);
|
||
// Info panel
|
||
var ix = W*0.63, iy = H*0.12;
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f1f5f9';
|
||
ctx.strokeStyle = dark ? '#334155' : '#e2e8f0'; ctx.lineWidth = 1;
|
||
ctx.fillRect(ix-4,iy-16,W*0.36,80);
|
||
ctx.font = '11px Inter,sans-serif';
|
||
ctx.fillStyle = dark ? '#e2e8f0' : '#1e293b';
|
||
ctx.fillText('r = '+r+' м', ix, iy);
|
||
ctx.fillText('ν = '+nu+' об/с', ix, iy+18);
|
||
ctx.fillText('T = '+(1/nu).toFixed(2)+' с', ix, iy+36);
|
||
ctx.fillText('v = '+v.toFixed(1)+' м/с', ix, iy+54);
|
||
[['v13r',r+' м'],['v13nu',nu+' об/с']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
var el=document.getElementById('res13');
|
||
if (el) el.textContent = 'v = 2π·'+r+'·'+nu+' ≈ '+v.toFixed(2)+' м/с; T = '+(1/nu).toFixed(2)+' с';
|
||
anim13Id = requestAnimationFrame(frame13);
|
||
}
|
||
frame13();
|
||
}
|
||
|
||
// ── §14 — Центростремительное ускорение ──────────────────
|
||
var anim14Id = null;
|
||
function upd14() {
|
||
var cv = document.getElementById('cv14');
|
||
if (!cv) return;
|
||
if (anim14Id) { cancelAnimationFrame(anim14Id); anim14Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth || 420, H = cv.offsetHeight || 180;
|
||
cv.width = Math.round(W*dpr); cv.height = Math.round(H*dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr,0,0,dpr,0,0);
|
||
var vms = +(document.getElementById('sl14v') ? document.getElementById('sl14v').value : 10);
|
||
var r = +(document.getElementById('sl14r') ? document.getElementById('sl14r').value : 5);
|
||
var ac = vms*vms/r;
|
||
var anim14t = 0;
|
||
function frame14() {
|
||
anim14t += 0.016;
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dark ? '#1e293b' : '#f8fafc';
|
||
ctx.fillRect(0,0,W,H);
|
||
var cx = W*0.35, cy = H*0.5;
|
||
var sc = Math.min(H*0.35, W*0.28)/Math.max(r,3);
|
||
var R = r*sc;
|
||
var omega = vms/r;
|
||
var angle = omega * anim14t;
|
||
var px = cx + R*Math.cos(angle), py = cy + R*Math.sin(angle);
|
||
// Circle
|
||
ctx.strokeStyle = dark?'#334155':'#e2e8f0'; ctx.lineWidth=2;
|
||
ctx.beginPath(); ctx.arc(cx,cy,R,0,2*Math.PI); ctx.stroke();
|
||
// Radius
|
||
ctx.strokeStyle = dark?'#475569':'#94a3b8'; ctx.lineWidth=1.5;
|
||
ctx.beginPath(); ctx.moveTo(cx,cy); ctx.lineTo(px,py); ctx.stroke();
|
||
// Center dot
|
||
ctx.fillStyle = dark?'#475569':'#94a3b8';
|
||
ctx.beginPath(); ctx.arc(cx,cy,4,0,2*Math.PI); ctx.fill();
|
||
ctx.fillStyle=dark?'#94a3b8':'#64748b'; ctx.font='10px Inter,sans-serif';
|
||
ctx.fillText('r='+r, cx+4, cy-4);
|
||
// Point
|
||
ctx.fillStyle='#f97316';
|
||
ctx.beginPath(); ctx.arc(px,py,7,0,2*Math.PI); ctx.fill();
|
||
// Velocity arrow (tangent) — green
|
||
var scV = 0.45*sc;
|
||
var tvx = -Math.sin(angle)*vms*scV, tvy = Math.cos(angle)*vms*scV;
|
||
ctx.strokeStyle='#10b981'; ctx.lineWidth=2;
|
||
ctx.beginPath(); ctx.moveTo(px,py); ctx.lineTo(px+tvx,py+tvy); ctx.stroke();
|
||
ctx.fillStyle='#10b981';
|
||
var va=Math.atan2(tvy,tvx);
|
||
ctx.beginPath(); ctx.moveTo(px+tvx,py+tvy);
|
||
ctx.lineTo(px+tvx-7*Math.cos(va-0.4),py+tvy-7*Math.sin(va-0.4));
|
||
ctx.lineTo(px+tvx-7*Math.cos(va+0.4),py+tvy-7*Math.sin(va+0.4)); ctx.fill();
|
||
ctx.font='10px Inter,sans-serif'; ctx.fillText('v',px+tvx+3,py+tvy-3);
|
||
// Centripetal acceleration arrow — red (toward center)
|
||
var scA = 0.5*sc;
|
||
var avx = (cx-px)/r * ac * scA, avy = (cy-py)/r * ac * scA;
|
||
var aLen = Math.min(Math.sqrt(avx*avx+avy*avy), R*0.7);
|
||
var aang = Math.atan2(cy-py, cx-px);
|
||
var eax = px + Math.cos(aang)*aLen, eay = py + Math.sin(aang)*aLen;
|
||
ctx.strokeStyle='#ef4444'; ctx.lineWidth=2.5;
|
||
ctx.beginPath(); ctx.moveTo(px,py); ctx.lineTo(eax,eay); ctx.stroke();
|
||
ctx.fillStyle='#ef4444';
|
||
ctx.beginPath(); ctx.moveTo(eax,eay);
|
||
ctx.lineTo(eax-8*Math.cos(aang-0.4),eay-8*Math.sin(aang-0.4));
|
||
ctx.lineTo(eax-8*Math.cos(aang+0.4),eay-8*Math.sin(aang+0.4)); ctx.fill();
|
||
ctx.font='10px Inter,sans-serif'; ctx.fillText('aцс',eax+3,eay-3);
|
||
// Info panel
|
||
var ix=W*0.63, iy=H*0.12;
|
||
ctx.fillStyle=dark?'#1e293b':'#f1f5f9';
|
||
ctx.strokeStyle=dark?'#334155':'#e2e8f0'; ctx.lineWidth=1;
|
||
ctx.fillRect(ix-4,iy-16,W*0.37,68);
|
||
ctx.font='11px Inter,sans-serif'; ctx.fillStyle=dark?'#e2e8f0':'#1e293b';
|
||
ctx.fillText('v = '+vms+' м/с', ix, iy);
|
||
ctx.fillText('r = '+r+' м', ix, iy+18);
|
||
ctx.fillText('aцс = v²/r = '+ac.toFixed(1)+' м/с²', ix, iy+36);
|
||
[['v14v',vms+' м/с'],['v14r',r+' м']].forEach(function(p){ var el=document.getElementById(p[0]); if(el) el.textContent=p[1]; });
|
||
var el=document.getElementById('res14');
|
||
if (el) el.textContent = 'aцс = '+vms+'²/'+r+' = '+ac.toFixed(2)+' м/с²';
|
||
anim14Id = requestAnimationFrame(frame14);
|
||
}
|
||
frame14();
|
||
}
|
||
|
||
// §16 — F_т = mg
|
||
function upd16() {
|
||
var m = +document.getElementById('sl16m').value;
|
||
var g = +document.getElementById('sl16g').value;
|
||
document.getElementById('v16m').textContent = m + ' кг';
|
||
document.getElementById('v16g').textContent = g + ' м/с²';
|
||
var F = m * g;
|
||
var el = document.getElementById('res16');
|
||
if (el) { el.textContent = 'Fт = ' + m + ' · ' + g + ' = ' + F.toFixed(0) + ' Н'; doRender(el); }
|
||
}
|
||
|
||
// §17 — a = F/m
|
||
function upd17() {
|
||
var F = +document.getElementById('sl17f').value;
|
||
var m = +document.getElementById('sl17m').value;
|
||
document.getElementById('v17f').textContent = F + ' Н';
|
||
document.getElementById('v17m').textContent = m + ' кг';
|
||
var a = (F / m).toFixed(2).replace('.', ',');
|
||
var el = document.getElementById('res17');
|
||
if (el) { el.textContent = 'a = ' + F + ' / ' + m + ' = ' + a + ' м/с²'; doRender(el); }
|
||
}
|
||
|
||
// §19 — F_упр = k·Δl
|
||
function upd19() {
|
||
var k = +document.getElementById('sl19k').value;
|
||
var xcm = +document.getElementById('sl19x').value;
|
||
document.getElementById('v19k').textContent = k + ' Н/м';
|
||
document.getElementById('v19x').textContent = xcm + ' см';
|
||
var xm = xcm / 100;
|
||
var F = (k * xm).toFixed(1).replace('.', ',');
|
||
var xStr = xm.toFixed(2).replace('.', ',');
|
||
var el = document.getElementById('res19');
|
||
if (el) { el.textContent = 'Fупр = ' + k + ' · ' + xStr + ' = ' + F + ' Н'; doRender(el); }
|
||
drawSpring19();
|
||
}
|
||
|
||
// §20 — F_тр = μ·N
|
||
function upd20() {
|
||
var muInt = +document.getElementById('sl20mu').value;
|
||
var m = +document.getElementById('sl20m').value;
|
||
var mu = (muInt / 100).toFixed(2);
|
||
document.getElementById('v20mu').textContent = mu;
|
||
document.getElementById('v20m').textContent = m + ' кг';
|
||
var N = m * 10;
|
||
var F = (muInt / 100 * N).toFixed(1).replace('.', ',');
|
||
var el = document.getElementById('res20');
|
||
if (el) { el.textContent = 'Fтр = ' + mu + ' · ' + N + ' = ' + F + ' Н'; doRender(el); }
|
||
drawFriction20();
|
||
}
|
||
|
||
// §21 — t_пад, v_пад
|
||
function upd21() {
|
||
var h = +document.getElementById('sl21h').value;
|
||
document.getElementById('v21h').textContent = h + ' м';
|
||
var t = Math.sqrt(2 * h / 10).toFixed(2).replace('.', ',');
|
||
var v = Math.sqrt(2 * 10 * h).toFixed(1).replace('.', ',');
|
||
var el = document.getElementById('res21');
|
||
if (el) { el.textContent = 't = √(2·' + h + '/10) = ' + t + ' с; v = √(2·10·' + h + ') = ' + v + ' м/с'; doRender(el); }
|
||
// Restart parabola animation with new height
|
||
if (document.getElementById('tab-ref21') && document.getElementById('tab-ref21').classList.contains('active')) {
|
||
startAnim21();
|
||
}
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §22 — БРОСОК ПОД УГЛОМ: ИНТЕРАКТИВ
|
||
// ══════════════════════════════════════════════
|
||
function upd22() {
|
||
var deg = +document.getElementById('sl22a').value;
|
||
var v0 = +document.getElementById('sl22v').value;
|
||
document.getElementById('v22a').textContent = deg + '°';
|
||
document.getElementById('v22v').textContent = v0 + ' м/с';
|
||
var g = 10, rad = deg * Math.PI / 180;
|
||
var L = v0 * v0 * Math.sin(2 * rad) / g;
|
||
var H = v0 * v0 * Math.sin(rad) * Math.sin(rad) / (2 * g);
|
||
var T = 2 * v0 * Math.sin(rad) / g;
|
||
var el = document.getElementById('res22');
|
||
if (el) el.textContent = 'L = ' + L.toFixed(1) + ' м | H = ' + H.toFixed(1) + ' м | T = ' + T.toFixed(2) + ' с';
|
||
drawAngularThrow22(deg, v0);
|
||
}
|
||
function drawAngularThrow22(deg, v0) {
|
||
var cv = document.getElementById('cv22');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H2 = cv.offsetHeight || 200;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H2 * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.clearRect(0, 0, W, H2);
|
||
var g = 10, rad = deg * Math.PI / 180;
|
||
var L = v0 * v0 * Math.sin(2 * rad) / g;
|
||
var Hmax = v0 * v0 * Math.sin(rad) * Math.sin(rad) / (2 * g);
|
||
var pad = 30, bH = H2 - 30;
|
||
var scX = (W - 2 * pad) / (L || 1);
|
||
var scY = (bH - 20) / (Hmax || 1);
|
||
// Ground
|
||
ctx.strokeStyle = dark ? '#334155' : '#cbd5e1';
|
||
ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(pad, bH); ctx.lineTo(W - pad, bH); ctx.stroke();
|
||
// Parabola
|
||
ctx.strokeStyle = '#0369a1';
|
||
ctx.lineWidth = 2.5;
|
||
ctx.beginPath();
|
||
var T = 2 * v0 * Math.sin(rad) / g;
|
||
for (var i = 0; i <= 120; i++) {
|
||
var t = T * i / 120;
|
||
var x = pad + v0 * Math.cos(rad) * t * scX;
|
||
var y = bH - (v0 * Math.sin(rad) * t - 0.5 * g * t * t) * scY;
|
||
if (i === 0) ctx.moveTo(x, y); else ctx.lineTo(x, y);
|
||
}
|
||
ctx.stroke();
|
||
// Ball
|
||
var tMid = T * 0.5;
|
||
var bx = pad + v0 * Math.cos(rad) * tMid * scX;
|
||
var by = bH - (v0 * Math.sin(rad) * tMid - 0.5 * g * tMid * tMid) * scY;
|
||
ctx.beginPath(); ctx.arc(bx, by, 7, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#f97316'; ctx.fill();
|
||
// Angle arc
|
||
ctx.strokeStyle = '#0369a1'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.arc(pad, bH, 28, -rad, 0, true); ctx.stroke();
|
||
ctx.fillStyle = '#0369a1'; ctx.font = 'bold 11px Inter';
|
||
ctx.fillText(deg + '°', pad + 30, bH - 8);
|
||
// Labels
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#64748b'; ctx.font = '11px Inter';
|
||
ctx.fillText('L = ' + L.toFixed(1) + ' м', pad + 5, bH + 18);
|
||
ctx.fillText('H = ' + Hmax.toFixed(1) + ' м', bx - 20, by - 10);
|
||
// Launch arrow
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2;
|
||
var arLen = 40;
|
||
ctx.beginPath();
|
||
ctx.moveTo(pad, bH);
|
||
ctx.lineTo(pad + arLen * Math.cos(rad), bH - arLen * Math.sin(rad));
|
||
ctx.stroke();
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §23 — ЗАКОН ТЯГОТЕНИЯ: ИНТЕРАКТИВ
|
||
// ══════════════════════════════════════════════
|
||
function upd23() {
|
||
var m1 = +document.getElementById('sl23m1').value;
|
||
var m2 = +document.getElementById('sl23m2').value;
|
||
var r = +document.getElementById('sl23r').value;
|
||
document.getElementById('v23m1').textContent = m1 + ' кг';
|
||
document.getElementById('v23m2').textContent = m2 + ' кг';
|
||
document.getElementById('v23r').textContent = r + ' м';
|
||
var G = 6.674e-11;
|
||
var F = G * m1 * m2 / (r * r);
|
||
var el = document.getElementById('res23');
|
||
if (el) el.textContent = 'F = ' + F.toExponential(3) + ' Н';
|
||
drawGravity23(m1, m2, r, F);
|
||
}
|
||
function drawGravity23(m1, m2, r, F) {
|
||
var cv = document.getElementById('cv23');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 160;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.clearRect(0, 0, W, H);
|
||
var cy = H / 2;
|
||
var r1 = Math.max(12, Math.min(35, 8 + m1 * 0.4));
|
||
var r2 = Math.max(12, Math.min(35, 8 + m2 * 0.4));
|
||
var gap = Math.max(40, Math.min(W - 2 * r1 - 2 * r2 - 60, (r / 20) * (W - 80)));
|
||
var x1 = 50, x2 = x1 + 2 * r1 + gap + 2 * r2;
|
||
if (x2 > W - 30) x2 = W - 30;
|
||
// Body 1
|
||
ctx.beginPath(); ctx.arc(x1 + r1, cy, r1, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#1d4ed8'; ctx.fill();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 11px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(m1 + ' кг', x1 + r1, cy + 4);
|
||
// Body 2
|
||
ctx.beginPath(); ctx.arc(x2 - r2, cy, r2, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#0369a1'; ctx.fill();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 11px Inter';
|
||
ctx.fillText(m2 + ' кг', x2 - r2, cy + 4);
|
||
// Arrows
|
||
var maxArr = 60, normF = Math.log10(F + 1e-11) + 11;
|
||
var arrLen = Math.max(8, Math.min(maxArr, normF * 8));
|
||
ctx.strokeStyle = '#f97316'; ctx.lineWidth = 2.5;
|
||
// Left arrow (toward right)
|
||
ctx.beginPath(); ctx.moveTo(x1 + r1, cy); ctx.lineTo(x1 + r1 + arrLen, cy); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(x1 + r1 + arrLen, cy - 5); ctx.lineTo(x1 + r1 + arrLen + 8, cy); ctx.lineTo(x1 + r1 + arrLen, cy + 5); ctx.fillStyle = '#f97316'; ctx.fill();
|
||
// Right arrow (toward left)
|
||
ctx.beginPath(); ctx.moveTo(x2 - r2, cy); ctx.lineTo(x2 - r2 - arrLen, cy); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(x2 - r2 - arrLen, cy - 5); ctx.lineTo(x2 - r2 - arrLen - 8, cy); ctx.lineTo(x2 - r2 - arrLen, cy + 5); ctx.fill();
|
||
// r label
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#64748b'; ctx.font = '11px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('r = ' + r + ' м', (x1 + r1 + x2 - r2) / 2, cy + 30);
|
||
// F label
|
||
ctx.fillStyle = '#f97316'; ctx.font = 'bold 12px Inter';
|
||
ctx.fillText('F = ' + F.toExponential(2) + ' Н', (x1 + r1 + x2 - r2) / 2, cy - 20);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §24 — ВЕС ТЕЛА В ЛИФТЕ: ИНТЕРАКТИВ
|
||
// ══════════════════════════════════════════════
|
||
function upd24() {
|
||
var m = +document.getElementById('sl24m').value;
|
||
var a = +document.getElementById('sl24a').value;
|
||
document.getElementById('v24m').textContent = m + ' кг';
|
||
document.getElementById('v24a').textContent = a > 0 ? '+' + a + ' м/с²' : (a < 0 ? a + ' м/с²' : '0 м/с² (покой/равном.)');
|
||
var g = 10;
|
||
var Ft = m * g;
|
||
var P = m * (g + a);
|
||
var el = document.getElementById('res24');
|
||
if (el) {
|
||
var status = a > 0 ? ' (перегрузка ⬆️)' : (a < 0 ? ' (облегчение ⬇️)' : ' (норма)');
|
||
if (a <= -10) status = ' ⚠️ НЕВЕСОМОСТЬ!';
|
||
el.textContent = 'P = ' + P.toFixed(0) + ' Н | F_т = ' + Ft.toFixed(0) + ' Н' + status;
|
||
}
|
||
drawElevator24(m, a, P, Ft);
|
||
}
|
||
function drawElevator24(m, a, P, Ft) {
|
||
var cv = document.getElementById('cv24');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 200;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.clearRect(0, 0, W, H);
|
||
var cx = W / 2, bY = H - 20;
|
||
// Elevator cabin
|
||
var ew = 120, eh = 80, ex = cx - ew / 2, ey = bY - eh - 60;
|
||
ctx.strokeStyle = dark ? '#475569' : '#94a3b8'; ctx.lineWidth = 2;
|
||
ctx.strokeRect(ex, ey, ew, eh);
|
||
// Cable
|
||
ctx.strokeStyle = dark ? '#64748b' : '#94a3b8'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(cx, ey); ctx.lineTo(cx, 20); ctx.stroke();
|
||
// Person inside elevator
|
||
var px = cx, pBase = ey + eh - 5;
|
||
ctx.fillStyle = dark ? '#93c5fd' : '#1d4ed8';
|
||
ctx.beginPath(); ctx.arc(px, pBase - 30, 12, 0, Math.PI * 2); ctx.fill();
|
||
ctx.strokeStyle = dark ? '#93c5fd' : '#1d4ed8'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(px, pBase - 18); ctx.lineTo(px, pBase - 5); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(px - 10, pBase - 10); ctx.lineTo(px + 10, pBase - 10); ctx.stroke();
|
||
// Weight arrow (F_t - downward, red)
|
||
var g = 10, sc = Math.max(15, Math.min(60, Ft / (m * g) * 35));
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(px + 25, pBase - 20); ctx.lineTo(px + 25, pBase - 20 + sc); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(px + 22, pBase - 20 + sc - 6); ctx.lineTo(px + 25, pBase - 20 + sc + 4); ctx.lineTo(px + 28, pBase - 20 + sc - 6); ctx.fillStyle = '#ef4444'; ctx.fill();
|
||
ctx.fillStyle = '#ef4444'; ctx.font = '10px Inter'; ctx.textAlign = 'left';
|
||
ctx.fillText('F_т=' + Ft.toFixed(0) + 'Н', px + 30, pBase - 20 + sc / 2);
|
||
// Reaction (P - upward, green), clamped to 0 if weightless
|
||
var Pdisp = Math.max(0, P);
|
||
var scP = Math.max(0, Math.min(60, Pdisp / (m * g) * 35));
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(px - 25, pBase); ctx.lineTo(px - 25, pBase - scP); ctx.stroke();
|
||
if (scP > 3) {
|
||
ctx.beginPath(); ctx.moveTo(px - 28, pBase - scP + 6); ctx.lineTo(px - 25, pBase - scP - 4); ctx.lineTo(px - 22, pBase - scP + 6); ctx.fillStyle = '#10b981'; ctx.fill();
|
||
}
|
||
ctx.fillStyle = '#10b981'; ctx.font = '10px Inter'; ctx.textAlign = 'right';
|
||
ctx.fillText('P=' + Pdisp.toFixed(0) + 'Н', px - 28, pBase - scP / 2);
|
||
// Acceleration arrow
|
||
if (a !== 0) {
|
||
ctx.strokeStyle = '#f97316'; ctx.lineWidth = 2;
|
||
var arDir = a > 0 ? -1 : 1;
|
||
ctx.beginPath(); ctx.moveTo(ex - 20, ey + eh / 2); ctx.lineTo(ex - 20, ey + eh / 2 + arDir * 35); ctx.stroke();
|
||
ctx.beginPath();
|
||
var arTip = ey + eh / 2 + arDir * 35;
|
||
ctx.moveTo(ex - 23, arTip - arDir * 6); ctx.lineTo(ex - 20, arTip + arDir * 4); ctx.lineTo(ex - 17, arTip - arDir * 6);
|
||
ctx.fillStyle = '#f97316'; ctx.fill();
|
||
ctx.fillStyle = '#f97316'; ctx.font = 'bold 10px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('a=' + (a > 0 ? '+' : '') + a + ' м/с²', ex - 20, ey + eh / 2 + arDir * 50 + (a > 0 ? -5 : 10));
|
||
}
|
||
// Label
|
||
ctx.fillStyle = dark ? '#e2e8f0' : '#1e293b'; ctx.font = 'bold 12px Inter'; ctx.textAlign = 'center';
|
||
var statusText = a > -10 ? 'P = ' + P.toFixed(0) + ' Н' : '⚠️ НЕВЕСОМОСТЬ!';
|
||
ctx.fillStyle = a <= -10 ? '#f97316' : (P > Ft + 1 ? '#0369a1' : (P < Ft - 1 ? '#7e22ce' : (dark ? '#e2e8f0' : '#1e293b')));
|
||
ctx.fillText(statusText, cx, H - 5);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §25 — МОМЕНТ СИЛЫ: КАЧЕЛИ + РЕЗУЛЬТАТ
|
||
// ══════════════════════════════════════════════
|
||
function upd25() {
|
||
var l1 = +document.getElementById('sl25l1').value / 10; // 0.1–2.0 m
|
||
var l2 = +document.getElementById('sl25l2').value / 10;
|
||
document.getElementById('v25l1').textContent = l1.toFixed(1) + ' м';
|
||
document.getElementById('v25l2').textContent = l2.toFixed(1) + ' м';
|
||
var m1 = 4, m2 = 6, g = 10;
|
||
var M1 = (m1 * g * l1).toFixed(1);
|
||
var M2 = (m2 * g * l2).toFixed(1);
|
||
var diff = Math.abs(parseFloat(M1) - parseFloat(M2));
|
||
var status = diff < 1.0 ? '⚖️ РАВНОВЕСИЕ!' : (parseFloat(M1) > parseFloat(M2) ? '← наклон влево' : 'наклон вправо →');
|
||
var el = document.getElementById('res25');
|
||
if (el) { el.textContent = 'M₁ = ' + M1 + ' Н·м | M₂ = ' + M2 + ' Н·м — ' + status; doRender(el); }
|
||
drawSeesaw25();
|
||
}
|
||
|
||
function drawSeesaw25() {
|
||
var cv = document.getElementById('cv25');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 180;
|
||
if (cv.width !== Math.round(W * dpr) || cv.height !== Math.round(H * dpr)) {
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
}
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
|
||
var l1 = +document.getElementById('sl25l1').value / 10;
|
||
var l2 = +document.getElementById('sl25l2').value / 10;
|
||
var m1 = 4, m2 = 6, g = 10;
|
||
var M1 = m1 * g * l1, M2 = m2 * g * l2;
|
||
var maxL = 2.0;
|
||
var cx = W / 2, pivotY = H * 0.58;
|
||
var scale = (W * 0.43) / maxL; // pixels per meter
|
||
|
||
// Tilt angle based on moment imbalance
|
||
var tilt = Math.min(0.36, Math.max(-0.36, (M1 - M2) / 80));
|
||
|
||
// Draw pivot support (triangle)
|
||
ctx.beginPath();
|
||
ctx.moveTo(cx, pivotY + 2);
|
||
ctx.lineTo(cx - 18, pivotY + 34);
|
||
ctx.lineTo(cx + 18, pivotY + 34);
|
||
ctx.closePath();
|
||
ctx.fillStyle = dk ? '#475569' : '#94a3b8'; ctx.fill();
|
||
ctx.strokeStyle = dk ? '#64748b' : '#64748b'; ctx.lineWidth = 1.5; ctx.stroke();
|
||
// Base
|
||
ctx.fillStyle = dk ? '#334155' : '#cbd5e1';
|
||
ctx.fillRect(cx - 28, pivotY + 34, 56, 10);
|
||
|
||
// Beam (tilted)
|
||
var beamLen = (l1 + l2) * scale;
|
||
ctx.save();
|
||
ctx.translate(cx, pivotY);
|
||
ctx.rotate(tilt);
|
||
// Beam rect
|
||
ctx.fillStyle = dk ? '#64748b' : '#94a3b8';
|
||
ctx.fillRect(-beamLen * l1 / (l1 + l2) - 4, -6, beamLen + 8, 12);
|
||
ctx.strokeStyle = dk ? '#475569' : '#64748b'; ctx.lineWidth = 1; ctx.strokeRect(-beamLen * l1 / (l1 + l2) - 4, -6, beamLen + 8, 12);
|
||
|
||
// Left weight (blue, m1=4kg) at distance l1
|
||
var x1 = -l1 * scale;
|
||
var bH = 30 + m1 * 4;
|
||
ctx.fillStyle = '#3b82f6';
|
||
ctx.fillRect(x1 - 20, -6 - bH, 40, bH);
|
||
ctx.strokeStyle = '#1d4ed8'; ctx.lineWidth = 2; ctx.strokeRect(x1 - 20, -6 - bH, 40, bH);
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(m1 + ' кг', x1, -6 - bH/2 + 4);
|
||
// l1 label
|
||
ctx.fillStyle = '#3b82f6'; ctx.font = '8px Inter';
|
||
ctx.fillText('l₁=' + l1.toFixed(1) + 'м', x1/2, 16);
|
||
// M1 label
|
||
ctx.fillStyle = '#3b82f6'; ctx.font = 'bold 9px Inter';
|
||
ctx.fillText('M₁=' + M1.toFixed(0) + ' Н·м', x1, -6 - bH - 10);
|
||
|
||
// Right weight (orange, m2=6kg) at distance l2
|
||
var x2 = l2 * scale;
|
||
var bH2 = 30 + m2 * 4;
|
||
ctx.fillStyle = '#f97316';
|
||
ctx.fillRect(x2 - 20, -6 - bH2, 40, bH2);
|
||
ctx.strokeStyle = '#ea580c'; ctx.lineWidth = 2; ctx.strokeRect(x2 - 20, -6 - bH2, 40, bH2);
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter';
|
||
ctx.fillText(m2 + ' кг', x2, -6 - bH2/2 + 4);
|
||
// l2 label
|
||
ctx.fillStyle = '#f97316'; ctx.font = '8px Inter';
|
||
ctx.fillText('l₂=' + l2.toFixed(1) + 'м', x2/2, 16);
|
||
// M2 label
|
||
ctx.fillStyle = '#f97316'; ctx.font = 'bold 9px Inter';
|
||
ctx.fillText('M₂=' + M2.toFixed(0) + ' Н·м', x2, -6 - bH2 - 10);
|
||
|
||
ctx.textAlign = 'left';
|
||
ctx.restore();
|
||
|
||
// Balance indicator
|
||
var diff = Math.abs(M1 - M2);
|
||
ctx.font = 'bold 11px Inter'; ctx.textAlign = 'center';
|
||
if (diff < 1.5) {
|
||
ctx.fillStyle = '#10b981';
|
||
ctx.fillText('⚖️ РАВНОВЕСИЕ! M₁ = M₂', W/2, H - 8);
|
||
} else {
|
||
ctx.fillStyle = dk ? '#94a3b8' : '#64748b';
|
||
ctx.fillText('Наклон: ΔM = ' + diff.toFixed(0) + ' Н·м', W/2, H - 8);
|
||
}
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §26 — РЫЧАГ: ИНТЕРАКТИВ
|
||
// ══════════════════════════════════════════════
|
||
function upd26() {
|
||
var l2 = +document.getElementById('sl26l2').value / 10; // нагрузка
|
||
var l1 = +document.getElementById('sl26l1').value / 10; // сила
|
||
document.getElementById('v26l2').textContent = l2.toFixed(1) + ' м';
|
||
document.getElementById('v26l1').textContent = l1.toFixed(1) + ' м';
|
||
var mg = 500; // 50 кг × 10
|
||
var F = (mg * l2 / l1).toFixed(0);
|
||
var gain = (l1 / l2).toFixed(1);
|
||
var el = document.getElementById('res26');
|
||
if (el) { el.textContent = 'F = ' + F + ' Н | Выигрыш = ' + gain + '× | Нагрузка 50 кг'; doRender(el); }
|
||
drawLever26();
|
||
}
|
||
|
||
function drawLever26() {
|
||
var cv = document.getElementById('cv26');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 160;
|
||
if (cv.width !== Math.round(W * dpr) || cv.height !== Math.round(H * dpr)) {
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
}
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
|
||
var l2 = +document.getElementById('sl26l2').value / 10;
|
||
var l1 = +document.getElementById('sl26l1').value / 10;
|
||
var mg = 500, F = mg * l2 / l1;
|
||
var gain = l1 / l2;
|
||
|
||
var pivotY = H * 0.52, cx = W * 0.42;
|
||
var scale = Math.min((W - 40) / (l1 + l2 + 0.3), 90);
|
||
var x_load = cx - l2 * scale; // left side: load
|
||
var x_force = cx + l1 * scale; // right side: force applied
|
||
|
||
// Ground
|
||
ctx.fillStyle = dk ? '#334155' : '#e2e8f0'; ctx.fillRect(0, pivotY + 28, W, H - pivotY - 28);
|
||
ctx.strokeStyle = dk ? '#64748b' : '#94a3b8'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(0, pivotY + 28); ctx.lineTo(W, pivotY + 28); ctx.stroke();
|
||
|
||
// Fulcrum
|
||
ctx.beginPath();
|
||
ctx.moveTo(cx, pivotY + 3);
|
||
ctx.lineTo(cx - 15, pivotY + 28);
|
||
ctx.lineTo(cx + 15, pivotY + 28);
|
||
ctx.closePath();
|
||
ctx.fillStyle = '#f97316'; ctx.fill();
|
||
|
||
// Beam
|
||
ctx.fillStyle = dk ? '#64748b' : '#94a3b8';
|
||
ctx.fillRect(x_load - 4, pivotY - 5, x_force - x_load + 8, 10);
|
||
ctx.strokeStyle = dk ? '#475569' : '#64748b'; ctx.lineWidth = 1; ctx.stroke();
|
||
|
||
// Load (left, down) — mg arrow
|
||
var arrowScale = Math.min(55, mg * 0.055);
|
||
ctx.beginPath(); ctx.moveTo(x_load, pivotY - 5); ctx.lineTo(x_load, pivotY - 5 - arrowScale);
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5; ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(x_load, pivotY - 5 - arrowScale);
|
||
ctx.lineTo(x_load - 6, pivotY - 5 - arrowScale + 12); ctx.lineTo(x_load + 6, pivotY - 5 - arrowScale + 12);
|
||
ctx.fillStyle = '#ef4444'; ctx.fill();
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#ef4444'; ctx.textAlign = 'center';
|
||
ctx.fillText('G = ' + mg + ' Н', x_load, pivotY - 5 - arrowScale - 5);
|
||
|
||
// Applied force (right, down)
|
||
var fArrow = Math.min(55, F * 0.055);
|
||
ctx.beginPath(); ctx.moveTo(x_force, pivotY - 5); ctx.lineTo(x_force, pivotY - 5 - fArrow);
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth = 2.5; ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(x_force, pivotY - 5 - fArrow);
|
||
ctx.lineTo(x_force - 6, pivotY - 5 - fArrow + 12); ctx.lineTo(x_force + 6, pivotY - 5 - fArrow + 12);
|
||
ctx.fillStyle = '#3b82f6'; ctx.fill();
|
||
ctx.fillStyle = '#3b82f6'; ctx.font = 'bold 9px Inter';
|
||
ctx.fillText('F = ' + F.toFixed(0) + ' Н', x_force, pivotY - 5 - fArrow - 5);
|
||
|
||
// l1 and l2 labels
|
||
ctx.font = '9px Inter'; ctx.fillStyle = '#ef4444';
|
||
ctx.fillText('l₂ = ' + l2.toFixed(1) + ' м', (x_load + cx) / 2, pivotY + 20);
|
||
ctx.fillStyle = '#3b82f6';
|
||
ctx.fillText('l₁ = ' + l1.toFixed(1) + ' м', (cx + x_force) / 2, pivotY + 20);
|
||
|
||
// Gain badge
|
||
ctx.font = 'bold 11px Inter'; ctx.fillStyle = '#10b981'; ctx.textAlign = 'center';
|
||
ctx.fillText('Выигрыш = ' + gain.toFixed(1) + '× → F в ' + gain.toFixed(1) + ' раз меньше нагрузки!', W/2, H - 8);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §27 — НАКЛОННАЯ ПЛОСКОСТЬ + КПД
|
||
// ══════════════════════════════════════════════
|
||
function upd27() {
|
||
var alpha = +document.getElementById('sl27a').value;
|
||
var m = +document.getElementById('sl27m').value;
|
||
document.getElementById('v27a').textContent = alpha + '°';
|
||
document.getElementById('v27m').textContent = m + ' кг';
|
||
var rad = alpha * Math.PI / 180;
|
||
var F = (m * 10 * Math.sin(rad)).toFixed(0);
|
||
var gain = (1 / Math.sin(rad)).toFixed(1);
|
||
var el = document.getElementById('res27');
|
||
if (el) { el.textContent = 'F = ' + F + ' Н (против ' + (m*10) + ' Н напрямую) | Выигрыш = ' + gain + '×'; doRender(el); }
|
||
drawIncline27();
|
||
}
|
||
|
||
function upd27mu() {
|
||
var muInt = +document.getElementById('sl27mu').value;
|
||
var mu = (muInt / 100).toFixed(2);
|
||
document.getElementById('v27mu').textContent = mu;
|
||
var alpha = +document.getElementById('sl27a').value;
|
||
var rad = alpha * Math.PI / 180;
|
||
var sinA = Math.sin(rad), cosA = Math.cos(rad);
|
||
var eta, label;
|
||
if (sinA < 0.001) {
|
||
eta = 100;
|
||
} else {
|
||
// F_ideal = mg*sin(a), F_real = mg*(sin(a)+mu*cos(a))
|
||
// eta = F_ideal/F_real = sin/(sin+mu*cos)
|
||
eta = Math.min(100, (sinA / (sinA + mu * cosA) * 100)).toFixed(0);
|
||
}
|
||
var loss = (100 - eta);
|
||
var el = document.getElementById('res27mu');
|
||
if (el) { el.textContent = 'КПД = ' + eta + '% | Потери на трение: ' + loss + '%'; doRender(el); }
|
||
drawEfficiency27(+eta);
|
||
}
|
||
|
||
function drawIncline27() {
|
||
var cv = document.getElementById('cv27');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 180;
|
||
if (cv.width !== Math.round(W * dpr) || cv.height !== Math.round(H * dpr)) {
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
}
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
|
||
var alpha = +document.getElementById('sl27a').value;
|
||
var m = +document.getElementById('sl27m').value;
|
||
var rad = alpha * Math.PI / 180;
|
||
var mg = m * 10;
|
||
var F = mg * Math.sin(rad);
|
||
var N = mg * Math.cos(rad);
|
||
|
||
// Draw inclined plane (triangle)
|
||
var bX = 20, bY = H - 30, triW = W - 40, triH = triW * Math.tan(rad);
|
||
if (triH > H - 55) { triH = H - 55; triW = triH / Math.tan(rad); bX = 20; }
|
||
var topX = bX, topY = bY - triH;
|
||
var rightX = bX + triW, rightY = bY;
|
||
|
||
ctx.beginPath();
|
||
ctx.moveTo(bX, bY); ctx.lineTo(rightX, rightY); ctx.lineTo(topX, topY);
|
||
ctx.closePath();
|
||
ctx.fillStyle = dk ? 'rgba(71,85,105,.35)' : 'rgba(203,213,225,.65)'; ctx.fill();
|
||
ctx.strokeStyle = dk ? '#64748b' : '#94a3b8'; ctx.lineWidth = 2; ctx.stroke();
|
||
|
||
// Angle arc
|
||
ctx.beginPath(); ctx.arc(rightX, rightY, 28, Math.PI - rad, Math.PI);
|
||
ctx.strokeStyle = '#f59e0b'; ctx.lineWidth = 1.5; ctx.stroke();
|
||
ctx.font = 'bold 10px Inter'; ctx.fillStyle = '#f59e0b';
|
||
ctx.fillText('α=' + alpha + '°', rightX - 52, rightY - 10);
|
||
|
||
// Block on slope
|
||
var blockDist = 0.35; // fraction along slope from top
|
||
var slopeLen = Math.sqrt(triW * triW + triH * triH);
|
||
var bBlockX = topX + blockDist * triW;
|
||
var bBlockY = topY + blockDist * triH;
|
||
var bW = 30, bH = 20;
|
||
|
||
ctx.save();
|
||
ctx.translate(bBlockX, bBlockY);
|
||
ctx.rotate(Math.atan2(triH, triW));
|
||
ctx.fillStyle = '#6366f1';
|
||
ctx.fillRect(-bW/2, -bH, bW, bH);
|
||
ctx.strokeStyle = '#4338ca'; ctx.lineWidth = 2; ctx.strokeRect(-bW/2, -bH, bW, bH);
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(m + ' кг', 0, -bH/2 + 4);
|
||
ctx.textAlign = 'left';
|
||
ctx.restore();
|
||
|
||
// mg arrow (vertical down)
|
||
var arLen = Math.min(55, mg * 0.25);
|
||
ctx.beginPath(); ctx.moveTo(bBlockX, bBlockY); ctx.lineTo(bBlockX, bBlockY + arLen);
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5; ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(bBlockX, bBlockY+arLen); ctx.lineTo(bBlockX-5,bBlockY+arLen-10); ctx.lineTo(bBlockX+5,bBlockY+arLen-10);
|
||
ctx.fillStyle = '#ef4444'; ctx.fill();
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#ef4444'; ctx.textAlign = 'left';
|
||
ctx.fillText('mg=' + mg + 'Н', bBlockX + 6, bBlockY + arLen - 2);
|
||
|
||
// F arrow (along slope, up)
|
||
var fLen = Math.min(50, F * 0.55);
|
||
var slopeUx = -triW / slopeLen, slopeUy = -triH / slopeLen; // up the slope
|
||
ctx.beginPath(); ctx.moveTo(bBlockX, bBlockY);
|
||
ctx.lineTo(bBlockX + slopeUx * fLen, bBlockY + slopeUy * fLen);
|
||
ctx.strokeStyle = '#3b82f6'; ctx.lineWidth = 2.5; ctx.stroke();
|
||
var ax2 = bBlockX + slopeUx * fLen, ay2 = bBlockY + slopeUy * fLen;
|
||
ctx.beginPath(); ctx.moveTo(ax2, ay2);
|
||
ctx.lineTo(ax2 - slopeUx * 12 + slopeUy * 5, ay2 - slopeUy * 12 - slopeUx * 5);
|
||
ctx.lineTo(ax2 - slopeUx * 12 - slopeUy * 5, ay2 - slopeUy * 12 + slopeUx * 5);
|
||
ctx.fillStyle = '#3b82f6'; ctx.fill();
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#3b82f6';
|
||
ctx.fillText('F=' + F.toFixed(0) + 'Н', ax2 + 5, ay2 - 3);
|
||
|
||
// N arrow (perpendicular to slope, outward)
|
||
var nLen = Math.min(45, N * 0.22);
|
||
var nUx = triH / slopeLen, nUy = -triW / slopeLen; // outward normal
|
||
ctx.beginPath(); ctx.moveTo(bBlockX, bBlockY);
|
||
ctx.lineTo(bBlockX + nUx * nLen, bBlockY + nUy * nLen);
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2; ctx.stroke();
|
||
ctx.font = '9px Inter'; ctx.fillStyle = '#10b981';
|
||
ctx.fillText('N=' + N.toFixed(0) + 'Н', bBlockX + nUx * nLen + 3, bBlockY + nUy * nLen - 2);
|
||
|
||
// h and l labels
|
||
ctx.font = '9px Inter'; ctx.fillStyle = dk ? '#94a3b8' : '#64748b';
|
||
ctx.textAlign = 'center';
|
||
ctx.fillText('l = ' + (slopeLen * 0.035).toFixed(1) + 'м (условно)', (topX + rightX)/2, bY + 16);
|
||
ctx.fillText('h', topX - 14, (topY + bY)/2);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
function drawEfficiency27(eta) {
|
||
var cv = document.getElementById('cv27eff');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 70;
|
||
if (cv.width !== Math.round(W * dpr) || cv.height !== Math.round(H * dpr)) {
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
}
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
|
||
var barH = 30, barY = (H - barH) / 2, pad = 16;
|
||
// Background bar
|
||
ctx.fillStyle = dk ? '#334155' : '#e2e8f0';
|
||
ctx.beginPath();
|
||
if (ctx.roundRect) ctx.roundRect(pad, barY, W - pad*2, barH, 8);
|
||
else ctx.rect(pad, barY, W - pad*2, barH);
|
||
ctx.fill();
|
||
// Useful work (green)
|
||
var usefulW = Math.max(0, (eta / 100) * (W - pad*2));
|
||
if (usefulW > 0) {
|
||
ctx.fillStyle = '#10b981';
|
||
ctx.beginPath();
|
||
if (ctx.roundRect) ctx.roundRect(pad, barY, usefulW, barH, 8);
|
||
else ctx.rect(pad, barY, usefulW, barH);
|
||
ctx.fill();
|
||
}
|
||
// Waste (red)
|
||
var wasteW = (W - pad*2) - usefulW;
|
||
if (wasteW > 4) {
|
||
ctx.fillStyle = '#ef4444';
|
||
ctx.beginPath();
|
||
ctx.rect(pad + usefulW, barY, wasteW, barH);
|
||
ctx.fill();
|
||
// Round right corner
|
||
if (ctx.roundRect) {
|
||
ctx.beginPath(); ctx.roundRect(pad + usefulW, barY, wasteW, barH, [0, 8, 8, 0]); ctx.fill();
|
||
}
|
||
}
|
||
// Labels
|
||
ctx.font = 'bold 10px Inter'; ctx.fillStyle = '#fff'; ctx.textAlign = 'center';
|
||
if (usefulW > 60) ctx.fillText('Полезная ' + eta + '%', pad + usefulW / 2, barY + barH/2 + 4);
|
||
if (wasteW > 50) ctx.fillText('Потери ' + (100 - eta) + '%', pad + usefulW + wasteW/2, barY + barH/2 + 4);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §15 — АНИМАЦИЯ ИНЕРЦИИ
|
||
// ══════════════════════════════════════════════
|
||
var anim15Id = null;
|
||
function startAnim15() {
|
||
var cv = document.getElementById('cv15');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
if (anim15Id) { cancelAnimationFrame(anim15Id); anim15Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 170;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var x_ice = 30, x_asp = 30, v_ice = 3.2, v_asp = 3.2, t15 = 0;
|
||
function fr15() {
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
var mid = H / 2;
|
||
// Ice track
|
||
ctx.fillStyle = dk ? 'rgba(186,230,253,.12)' : 'rgba(224,242,254,.7)';
|
||
ctx.fillRect(0, 4, W, mid - 8);
|
||
ctx.beginPath(); ctx.moveTo(0, mid - 2); ctx.lineTo(W, mid - 2);
|
||
ctx.strokeStyle = '#7dd3fc'; ctx.lineWidth = 2; ctx.stroke();
|
||
// Asphalt track
|
||
ctx.fillStyle = dk ? 'rgba(120,113,108,.15)' : 'rgba(231,229,228,.65)';
|
||
ctx.fillRect(0, mid + 4, W, H - mid - 8);
|
||
ctx.strokeStyle = dk ? '#78716c' : '#a8a29e'; ctx.lineWidth = 1;
|
||
for (var bx = 8; bx < W; bx += 20) {
|
||
ctx.beginPath(); ctx.arc(bx, H - 12, 3, 0, Math.PI); ctx.stroke();
|
||
}
|
||
// Track labels
|
||
ctx.font = 'bold 10px Inter,sans-serif';
|
||
ctx.fillStyle = '#0284c7'; ctx.fillText('❄️ Лёд — без трения', 8, 18);
|
||
ctx.fillStyle = '#78716c'; ctx.fillText('🛣️ Асфальт — трение', 8, mid + 18);
|
||
// Physics
|
||
x_ice += v_ice;
|
||
if (x_ice > W - 18) { x_ice = W - 18; v_ice = -Math.abs(v_ice); }
|
||
if (x_ice < 18) { x_ice = 18; v_ice = Math.abs(v_ice); }
|
||
if (v_asp > 0) v_asp = Math.max(0, v_asp - 0.038);
|
||
x_asp += v_asp;
|
||
if (x_asp > W - 18) x_asp = W - 18;
|
||
// Ice ball (blue)
|
||
var yIce = mid / 2;
|
||
ctx.beginPath(); ctx.arc(x_ice, yIce, 13, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#38bdf8'; ctx.fill();
|
||
ctx.strokeStyle = '#0284c7'; ctx.lineWidth = 2; ctx.stroke();
|
||
if (Math.abs(v_ice) > 0.3) {
|
||
var d = v_ice > 0 ? 1 : -1;
|
||
ctx.beginPath(); ctx.moveTo(x_ice + d*14, yIce); ctx.lineTo(x_ice + d*28, yIce);
|
||
ctx.strokeStyle = '#0284c7'; ctx.lineWidth = 2; ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(x_ice+d*28, yIce); ctx.lineTo(x_ice+d*21,yIce-5); ctx.lineTo(x_ice+d*21,yIce+5);
|
||
ctx.fillStyle = '#0284c7'; ctx.fill();
|
||
}
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#0284c7';
|
||
ctx.fillText('v=' + Math.abs(v_ice).toFixed(1), x_ice - 12, yIce + 24);
|
||
// Asphalt ball (orange)
|
||
var yAsp = mid + (H - mid) / 2;
|
||
ctx.beginPath(); ctx.arc(x_asp, yAsp, 13, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#fb923c'; ctx.fill();
|
||
ctx.strokeStyle = '#ea580c'; ctx.lineWidth = 2; ctx.stroke();
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#ea580c';
|
||
if (v_asp > 0.3) {
|
||
ctx.beginPath(); ctx.moveTo(x_asp+14,yAsp); ctx.lineTo(x_asp+28,yAsp);
|
||
ctx.strokeStyle = '#ea580c'; ctx.lineWidth = 2; ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(x_asp+28,yAsp); ctx.lineTo(x_asp+21,yAsp-5); ctx.lineTo(x_asp+21,yAsp+5);
|
||
ctx.fillStyle = '#ea580c'; ctx.fill();
|
||
ctx.fillText('v=' + v_asp.toFixed(1), x_asp - 12, yAsp - 17);
|
||
} else {
|
||
ctx.fillText('⛔ СТОИТ', x_asp - 18, yAsp - 17);
|
||
}
|
||
t15++;
|
||
if (t15 < 420) anim15Id = requestAnimationFrame(fr15);
|
||
}
|
||
x_ice = 30; x_asp = 30; v_ice = 3.2; v_asp = 3.2; t15 = 0; fr15();
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §16 — ПЛАНЕТНАЯ СЕТКА
|
||
// ══════════════════════════════════════════════
|
||
function initPlanetGrid16() {
|
||
var grid = document.getElementById('planetGrid16');
|
||
if (!grid) return;
|
||
var planets = [
|
||
{ name: 'Земля', icon: '🌍', g: 9.8, color: '#3b82f6' },
|
||
{ name: 'Луна', icon: '🌕', g: 1.6, color: '#94a3b8' },
|
||
{ name: 'Марс', icon: '🔴', g: 3.7, color: '#ef4444' },
|
||
{ name: 'Юпитер', icon: '🪐', g: 25.0, color: '#f59e0b' },
|
||
{ name: 'Венера', icon: '💫', g: 8.9, color: '#fbbf24' }
|
||
];
|
||
var m = 60;
|
||
var html = '';
|
||
for (var i = 0; i < planets.length; i++) {
|
||
var p = planets[i];
|
||
var F = (m * p.g).toFixed(0);
|
||
var pct = Math.min(100, (p.g / 25 * 100)).toFixed(0);
|
||
html += '<div style="background:var(--card);border:1.5px solid var(--border);border-radius:12px;padding:10px 8px;text-align:center">' +
|
||
'<div style="font-size:1.5rem;margin-bottom:4px">' + p.icon + '</div>' +
|
||
'<div style="font-weight:800;font-size:.82rem">' + p.name + '</div>' +
|
||
'<div style="font-size:.74rem;color:var(--muted);margin:2px 0">g = ' + p.g + ' м/с²</div>' +
|
||
'<div style="font-weight:700;font-size:.95rem;color:' + p.color + '">' + F + ' Н</div>' +
|
||
'<div style="margin-top:5px;height:5px;background:var(--border);border-radius:3px;overflow:hidden">' +
|
||
'<div style="height:100%;width:' + pct + '%;background:' + p.color + ';border-radius:3px"></div></div>' +
|
||
'</div>';
|
||
}
|
||
grid.innerHTML = html;
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §17 — АНИМАЦИЯ F=ma
|
||
// ══════════════════════════════════════════════
|
||
var anim17Id = null;
|
||
function startAnim17() {
|
||
var cv = document.getElementById('cv17');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
if (anim17Id) { cancelAnimationFrame(anim17Id); anim17Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 120;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var F17 = +document.getElementById('sl17f').value;
|
||
var m17 = +document.getElementById('sl17m').value;
|
||
var a17 = F17 / m17;
|
||
var x17 = 20, v17 = 0, t17 = 0;
|
||
function fr17() {
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
// Ground
|
||
ctx.fillStyle = dk ? '#334155' : '#e2e8f0';
|
||
ctx.fillRect(0, H * 0.72, W, H - H * 0.72);
|
||
ctx.strokeStyle = dk ? '#64748b' : '#94a3b8'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(0, H * 0.72); ctx.lineTo(W, H * 0.72); ctx.stroke();
|
||
var bW = 42, bH = 30, by = H * 0.72 - bH;
|
||
// Block
|
||
ctx.fillStyle = '#6366f1';
|
||
ctx.fillRect(x17, by, bW, bH);
|
||
ctx.strokeStyle = '#4338ca'; ctx.lineWidth = 2; ctx.stroke();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(m17 + ' кг', x17 + bW / 2, by + bH / 2 + 4); ctx.textAlign = 'left';
|
||
// Force arrow
|
||
var aLen = Math.min(55, F17 * 1.1);
|
||
ctx.beginPath(); ctx.moveTo(x17 + bW, by + bH / 2); ctx.lineTo(x17 + bW + aLen, by + bH / 2);
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 3; ctx.stroke();
|
||
ctx.beginPath(); var ax = x17 + bW + aLen;
|
||
ctx.moveTo(ax, by+bH/2); ctx.lineTo(ax-11,by+bH/2-5); ctx.lineTo(ax-11,by+bH/2+5);
|
||
ctx.fillStyle = '#ef4444'; ctx.fill();
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#ef4444';
|
||
ctx.fillText('F=' + F17 + 'Н', x17 + bW + 2, by - 4);
|
||
// Velocity
|
||
if (v17 > 0.5) {
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = dk ? '#818cf8' : '#4338ca';
|
||
ctx.fillText('v = ' + v17.toFixed(1) + ' м/с →', x17, by - 16);
|
||
}
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#10b981';
|
||
ctx.fillText('a = ' + a17.toFixed(1) + ' м/с²', 6, 14);
|
||
// Physics
|
||
v17 += a17 * 0.06; x17 += v17 * 0.7; t17++;
|
||
if (x17 < W - 70 && t17 < 280) {
|
||
anim17Id = requestAnimationFrame(fr17);
|
||
} else {
|
||
ctx.font = 'bold 12px Inter'; ctx.fillStyle = '#10b981'; ctx.textAlign = 'center';
|
||
ctx.fillText('🏁 v = ' + v17.toFixed(0) + ' м/с | a = ' + a17.toFixed(1) + ' м/с²', W/2, H/2 - 5);
|
||
ctx.font = '10px Inter'; ctx.fillStyle = dk?'#94a3b8':'#64748b';
|
||
ctx.fillText('Поменяй ползунки и нажми «Запустить снова»', W/2, H/2 + 12);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
}
|
||
x17 = 20; v17 = 0; t17 = 0; fr17();
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §18 — АНИМАЦИЯ ОТДАЧИ (3-й закон)
|
||
// ══════════════════════════════════════════════
|
||
var anim18Id = null;
|
||
function startAnim18() {
|
||
var cv = document.getElementById('cv18');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
if (anim18Id) { cancelAnimationFrame(anim18Id); anim18Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 120;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var cx18 = W / 2;
|
||
var x1 = cx18 - 18, x2 = cx18 + 18; // inner edges
|
||
var v1 = 0, v2 = 0, phase18 = 0, pt18 = 0, t18 = 0;
|
||
var m18a = 3, m18b = 9; // masses
|
||
function fr18() {
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
// Ground
|
||
ctx.fillStyle = dk ? '#334155' : '#e2e8f0'; ctx.fillRect(0, H * 0.75, W, H * 0.25);
|
||
ctx.strokeStyle = dk ? '#64748b' : '#94a3b8'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(0, H * 0.75); ctx.lineTo(W, H * 0.75); ctx.stroke();
|
||
var bH = 34, y = H * 0.75 - bH;
|
||
if (phase18 === 0) {
|
||
// Static with spring
|
||
ctx.fillStyle = '#6366f1'; ctx.fillRect(x1 - 34, y, 34, bH);
|
||
ctx.fillStyle = '#f97316'; ctx.fillRect(x2, y, 44, bH);
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(m18a + ' кг', x1 - 17, y + bH/2 + 4);
|
||
ctx.fillText(m18b + ' кг', x2 + 22, y + bH/2 + 4); ctx.textAlign = 'left';
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2; ctx.beginPath();
|
||
for (var ss = x1; ss < x2; ss += 4) {
|
||
ctx.lineTo(ss, y + (ss % 8 < 4 ? bH * 0.25 : bH * 0.75));
|
||
}
|
||
ctx.stroke();
|
||
ctx.font = 'bold 10px Inter'; ctx.fillStyle = dk ? '#e2e8f0' : '#1e293b';
|
||
ctx.textAlign = 'center'; ctx.fillText('Сжатая пружина — сейчас разожмётся!', W/2, 16); ctx.textAlign = 'left';
|
||
pt18++;
|
||
if (pt18 > 55) { phase18 = 1; pt18 = 0; }
|
||
} else {
|
||
// Flying
|
||
var a1 = 40 / m18a, a2 = 40 / m18b;
|
||
if (phase18 === 1 && pt18 < 18) {
|
||
v1 -= a1 * 0.06; v2 += a2 * 0.06;
|
||
pt18++;
|
||
if (pt18 >= 18) phase18 = 2;
|
||
}
|
||
x1 += v1; x2 += v2;
|
||
ctx.fillStyle = '#6366f1'; ctx.fillRect(x1 - 34, y, 34, bH);
|
||
ctx.fillStyle = '#f97316'; ctx.fillRect(x2, y, 44, bH);
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(m18a + ' кг', x1 - 17, y + bH/2 + 4);
|
||
ctx.fillText(m18b + ' кг', x2 + 22, y + bH/2 + 4); ctx.textAlign = 'left';
|
||
ctx.font = 'bold 9px Inter';
|
||
ctx.fillStyle = '#818cf8';
|
||
ctx.fillText('← v₁=' + Math.abs(v1).toFixed(1), x1 - 60, y - 5);
|
||
ctx.fillStyle = '#fb923c';
|
||
ctx.fillText('v₂=' + v2.toFixed(1) + ' →', x2 + 50, y - 5);
|
||
ctx.font = '9px Inter'; ctx.fillStyle = dk ? '#94a3b8' : '#64748b';
|
||
ctx.textAlign = 'center';
|
||
ctx.fillText('F₁₂ = F₂₁, но m₁ < m₂ → |v₁| > |v₂|', W/2, H - 6);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
t18++;
|
||
if (x1 > -70 && x2 < W + 50 && t18 < 380) anim18Id = requestAnimationFrame(fr18);
|
||
}
|
||
cx18 = W/2; x1 = cx18-18; x2 = cx18+18; v1 = 0; v2 = 0; phase18 = 0; pt18 = 0; t18 = 0; fr18();
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §19 — ПРУЖИНА (рисуется при движении слайдеров)
|
||
// ══════════════════════════════════════════════
|
||
function drawSpring19() {
|
||
var cv = document.getElementById('cv19');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 160;
|
||
if (cv.width !== Math.round(W * dpr) || cv.height !== Math.round(H * dpr)) {
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
}
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
var k = +document.getElementById('sl19k').value;
|
||
var xcm = +document.getElementById('sl19x').value;
|
||
var xm = xcm / 100;
|
||
var F = k * xm;
|
||
// Wall
|
||
ctx.fillStyle = dk ? '#334155' : '#cbd5e1'; ctx.fillRect(4, 18, 14, H - 28);
|
||
ctx.strokeStyle = dk ? '#475569' : '#94a3b8'; ctx.lineWidth = 1;
|
||
for (var hy = 22; hy < H - 18; hy += 12) {
|
||
ctx.beginPath(); ctx.moveTo(4, hy); ctx.lineTo(17, hy + 7); ctx.stroke();
|
||
}
|
||
// Spring coils
|
||
var sx0 = 18, sx1 = 18 + 80 + xcm * 1.4;
|
||
var sy = H / 2, coils = 8;
|
||
var cW = (sx1 - sx0) / coils, cH = 17;
|
||
var springCol = xcm > 30 ? '#ef4444' : xcm > 12 ? '#f59e0b' : '#10b981';
|
||
ctx.beginPath(); ctx.moveTo(sx0, sy);
|
||
for (var ci = 0; ci < coils; ci++) {
|
||
var px = sx0 + ci * cW;
|
||
ctx.lineTo(px + cW * 0.25, sy - cH);
|
||
ctx.lineTo(px + cW * 0.75, sy + cH);
|
||
ctx.lineTo(px + cW, sy);
|
||
}
|
||
ctx.strokeStyle = springCol; ctx.lineWidth = 2.5; ctx.stroke();
|
||
// Block
|
||
var bX = sx1, bW = 38, bH = 38;
|
||
ctx.fillStyle = '#6366f1'; ctx.fillRect(bX, sy - bH/2, bW, bH);
|
||
ctx.strokeStyle = '#4338ca'; ctx.lineWidth = 2; ctx.stroke();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('груз', bX + bW/2, sy + 2);
|
||
ctx.fillText(xcm + ' см', bX + bW/2, sy + 13); ctx.textAlign = 'left';
|
||
// F arrow (back toward wall)
|
||
var arLen = Math.min(65, F * 0.55);
|
||
if (arLen > 4) {
|
||
ctx.beginPath(); ctx.moveTo(bX, sy); ctx.lineTo(bX - arLen, sy);
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5; ctx.stroke();
|
||
ctx.beginPath();
|
||
ctx.moveTo(bX - arLen, sy); ctx.lineTo(bX - arLen + 11, sy - 5); ctx.lineTo(bX - arLen + 11, sy + 5);
|
||
ctx.fillStyle = '#ef4444'; ctx.fill();
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#ef4444';
|
||
ctx.fillText('F = ' + F.toFixed(1) + ' Н', bX - arLen - 2, sy + 15);
|
||
}
|
||
ctx.font = '9px Inter'; ctx.fillStyle = dk ? '#94a3b8' : '#64748b';
|
||
ctx.fillText('∆l = ' + xcm + ' см', sx0 + 2, sy - cH - 5);
|
||
ctx.fillText('k = ' + k + ' Н/м', sx0 + 2, 14);
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §20 — ДИАГРАММА СИЛ ТРЕНИЯ
|
||
// ══════════════════════════════════════════════
|
||
function drawFriction20() {
|
||
var cv = document.getElementById('cv20');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 150;
|
||
if (cv.width !== Math.round(W * dpr) || cv.height !== Math.round(H * dpr)) {
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
}
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#f0f9ff'; ctx.fillRect(0, 0, W, H);
|
||
var muInt = +document.getElementById('sl20mu').value;
|
||
var m20 = +document.getElementById('sl20m').value;
|
||
var mu = muInt / 100, N20 = m20 * 10, Ftr = mu * N20;
|
||
// Ground
|
||
ctx.fillStyle = dk ? '#334155' : '#e2e8f0'; ctx.fillRect(0, H * 0.73, W, H * 0.27);
|
||
ctx.strokeStyle = dk ? '#64748b' : '#94a3b8'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(0, H * 0.73); ctx.lineTo(W, H * 0.73); ctx.stroke();
|
||
ctx.strokeStyle = dk ? '#475569' : '#b0b0b0'; ctx.lineWidth = 1;
|
||
for (var tx = 18; tx < W; tx += 22) {
|
||
ctx.beginPath(); ctx.moveTo(tx, H * 0.73); ctx.lineTo(tx - 9, H * 0.73 + 11); ctx.stroke();
|
||
}
|
||
var bW = 58, bH = 38, cx20 = W / 2;
|
||
var bx20 = cx20 - bW/2, by20 = H * 0.73 - bH;
|
||
ctx.fillStyle = '#6366f1'; ctx.fillRect(bx20, by20, bW, bH);
|
||
ctx.strokeStyle = '#4338ca'; ctx.lineWidth = 2; ctx.stroke();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 9px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(m20 + ' кг', cx20, by20 + bH/2 + 4); ctx.textAlign = 'left';
|
||
function arr(x1, y1, x2, y2, col, lbl, side) {
|
||
var dx = x2-x1, dy = y2-y1, len = Math.sqrt(dx*dx+dy*dy);
|
||
if (len < 4) return;
|
||
var ux = dx/len, uy = dy/len;
|
||
ctx.beginPath(); ctx.moveTo(x1,y1); ctx.lineTo(x2,y2);
|
||
ctx.strokeStyle = col; ctx.lineWidth = 2.5; ctx.stroke();
|
||
var hw = 5;
|
||
ctx.beginPath(); ctx.moveTo(x2,y2);
|
||
ctx.lineTo(x2-ux*11-uy*hw, y2-uy*11+ux*hw);
|
||
ctx.lineTo(x2-ux*11+uy*hw, y2-uy*11-ux*hw);
|
||
ctx.fillStyle = col; ctx.fill();
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = col;
|
||
if (side==='r') ctx.fillText(lbl, x2+4, y2+4);
|
||
else if (side==='l') { ctx.textAlign='right'; ctx.fillText(lbl, x2-4, y2+4); ctx.textAlign='left'; }
|
||
else if (side==='t') { ctx.textAlign='center'; ctx.fillText(lbl,(x1+x2)/2,Math.min(y1,y2)-4); ctx.textAlign='left'; }
|
||
else if (side==='b') { ctx.textAlign='center'; ctx.fillText(lbl,(x1+x2)/2,Math.max(y1,y2)+12); ctx.textAlign='left'; }
|
||
}
|
||
var midX20 = cx20, midY20 = by20 + bH/2;
|
||
var sc = 0.45;
|
||
var mgLen = Math.min(52, N20 * sc);
|
||
arr(midX20, by20+bH, midX20, by20+bH+mgLen, '#ef4444', 'mg='+N20+'Н', 'r');
|
||
arr(midX20, by20, midX20, by20-mgLen, '#10b981', 'N='+N20+'Н', 'r');
|
||
var fLen = Math.max(8, Math.min(60, Ftr * sc));
|
||
arr(cx20+bW/2, midY20, cx20+bW/2+fLen, midY20, '#3b82f6', 'F тяги', 'r');
|
||
if (Ftr > 0) arr(cx20-bW/2, midY20, cx20-bW/2-fLen, midY20, '#f59e0b', 'Fтр='+Ftr.toFixed(0)+'Н', 'l');
|
||
ctx.font = 'bold 10px Inter'; ctx.fillStyle = dk ? '#e2e8f0' : '#1e293b';
|
||
ctx.fillText('μ = ' + mu.toFixed(2), 7, 14);
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §21 — АНИМАЦИЯ ГОРИЗОНТАЛЬНОГО БРОСКА
|
||
// ══════════════════════════════════════════════
|
||
var anim21Id = null;
|
||
function startAnim21() {
|
||
var cv = document.getElementById('cv21');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
if (anim21Id) { cancelAnimationFrame(anim21Id); anim21Id = null; }
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 220;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var h21 = +document.getElementById('sl21h').value;
|
||
var g21 = 10, v0_21 = 18;
|
||
var tTotal = Math.sqrt(2 * h21 / g21);
|
||
var frames21 = 110, t21 = 0;
|
||
var margin21 = 22;
|
||
var groundY21 = H - margin21;
|
||
var scaleY21 = (groundY21 - margin21) / h21;
|
||
var startX21 = 28;
|
||
var scaleX21 = (W - startX21 - 22) / (v0_21 * tTotal);
|
||
var trail21 = [], landed21 = false;
|
||
function fr21() {
|
||
ctx.clearRect(0, 0, W, H);
|
||
var dk = document.body.classList.contains('dark');
|
||
ctx.fillStyle = dk ? '#1e293b' : '#e0f2fe'; ctx.fillRect(0, 0, W, groundY21);
|
||
// Ground
|
||
ctx.fillStyle = dk ? '#14532d' : '#bbf7d0'; ctx.fillRect(0, groundY21, W, H - groundY21);
|
||
ctx.strokeStyle = dk ? '#166534' : '#16a34a'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(0, groundY21); ctx.lineTo(W, groundY21); ctx.stroke();
|
||
// Height dashed line
|
||
ctx.setLineDash([4, 4]); ctx.strokeStyle = dk ? '#475569' : '#94a3b8'; ctx.lineWidth = 1;
|
||
ctx.beginPath(); ctx.moveTo(startX21 - 4, margin21); ctx.lineTo(startX21 - 4, groundY21); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
ctx.font = '9px Inter'; ctx.fillStyle = dk ? '#94a3b8' : '#64748b'; ctx.textAlign = 'center';
|
||
ctx.fillText('h=' + h21 + 'м', startX21 - 14, (margin21 + groundY21) / 2); ctx.textAlign = 'left';
|
||
var frac21 = t21 / frames21;
|
||
var simT21 = frac21 * tTotal;
|
||
var fallY_m = 0.5 * g21 * simT21 * simT21;
|
||
var fallY_px = margin21 + fallY_m * scaleY21;
|
||
if (fallY_px > groundY21) fallY_px = groundY21;
|
||
var thrX_px = startX21 + v0_21 * simT21 * scaleX21;
|
||
var thrY_px = margin21 + fallY_m * scaleY21;
|
||
if (thrY_px > groundY21) thrY_px = groundY21;
|
||
if (thrX_px > W - 12) thrX_px = W - 12;
|
||
if (t21 % 2 === 0 && thrY_px < groundY21) trail21.push({ x: thrX_px, y: thrY_px });
|
||
// Parabola trail
|
||
if (trail21.length > 1) {
|
||
ctx.beginPath(); ctx.moveTo(trail21[0].x, trail21[0].y);
|
||
for (var ti = 1; ti < trail21.length; ti++) ctx.lineTo(trail21[ti].x, trail21[ti].y);
|
||
ctx.strokeStyle = 'rgba(56,189,248,0.55)'; ctx.lineWidth = 2; ctx.setLineDash([3,2]); ctx.stroke(); ctx.setLineDash([]);
|
||
}
|
||
// Drop ball (orange)
|
||
ctx.beginPath(); ctx.arc(startX21, fallY_px, 11, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#fb923c'; ctx.fill(); ctx.strokeStyle = '#ea580c'; ctx.lineWidth = 2; ctx.stroke();
|
||
// Thrown ball (blue)
|
||
ctx.beginPath(); ctx.arc(thrX_px, thrY_px, 11, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#38bdf8'; ctx.fill(); ctx.strokeStyle = '#0284c7'; ctx.lineWidth = 2; ctx.stroke();
|
||
// Labels (first frame only)
|
||
if (t21 < 4) {
|
||
ctx.font = 'bold 9px Inter'; ctx.fillStyle = '#ea580c';
|
||
ctx.fillText('🟠 падение', startX21 + 14, fallY_px);
|
||
ctx.fillStyle = '#0284c7';
|
||
ctx.fillText('🔵 бросок →', thrX_px + 14, thrY_px - 4);
|
||
}
|
||
// Velocity components on thrown ball
|
||
if (thrY_px < groundY21 - 8 && t21 > 3) {
|
||
var vxL = Math.min(22, v0_21 * scaleX21 * 0.3);
|
||
var vyL = Math.min(22, g21 * simT21 * scaleY21 * 0.3);
|
||
ctx.beginPath(); ctx.moveTo(thrX_px+12, thrY_px); ctx.lineTo(thrX_px+12+vxL, thrY_px);
|
||
ctx.strokeStyle = '#0284c7'; ctx.lineWidth = 1.5; ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(thrX_px, thrY_px+12); ctx.lineTo(thrX_px, thrY_px+12+vyL);
|
||
ctx.strokeStyle = '#7c3aed'; ctx.lineWidth = 1.5; ctx.stroke();
|
||
}
|
||
if (frac21 >= 1.0) landed21 = true;
|
||
if (landed21) {
|
||
ctx.fillStyle = '#10b981'; ctx.font = 'bold 13px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('🎯 Упали ОДНОВРЕМЕННО! t = ' + tTotal.toFixed(1) + ' с', W/2, groundY21 - 16);
|
||
ctx.font = '10px Inter'; ctx.fillStyle = dk ? '#94a3b8' : '#475569';
|
||
ctx.fillText('Горизонтальная скорость не влияет на время падения!', W/2, groundY21 - 3);
|
||
ctx.textAlign = 'left';
|
||
} else {
|
||
ctx.font = '9px Inter'; ctx.fillStyle = dk ? '#94a3b8' : '#475569';
|
||
ctx.fillText('t = ' + simT21.toFixed(2) + ' с', W - 68, 13);
|
||
}
|
||
t21++;
|
||
if (t21 <= frames21 + 50) anim21Id = requestAnimationFrame(fr21);
|
||
}
|
||
trail21 = []; landed21 = false; t21 = 0; fr21();
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §28 — ВИДЫ РАВНОВЕСИЯ: ИНТЕРАКТИВ
|
||
// ══════════════════════════════════════════════
|
||
function upd28() {
|
||
var typeIdx = +document.getElementById('sl28type').value;
|
||
var ang = +document.getElementById('sl28angle').value;
|
||
var types = ['Устойчивое', 'Неустойчивое', 'Безразличное'];
|
||
document.getElementById('v28type').textContent = types[typeIdx];
|
||
document.getElementById('v28angle').textContent = ang + '°';
|
||
var msg = typeIdx === 0 ? 'Устойчивое: тело вернётся в исходное положение!'
|
||
: typeIdx === 1 ? (Math.abs(ang) > 5 ? '⚠️ Неустойчивое: тело УПАДЁТ!' : 'Неустойчивое: малейшее отклонение — и тело упадёт')
|
||
: 'Безразличное: тело останется в новом положении';
|
||
var el = document.getElementById('res28');
|
||
if (el) el.textContent = msg;
|
||
drawEquilibrium28(typeIdx, ang);
|
||
}
|
||
function drawEquilibrium28(typeIdx, ang) {
|
||
var cv = document.getElementById('cv28');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 220;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.clearRect(0, 0, W, H);
|
||
var rad = ang * Math.PI / 180;
|
||
// Ground
|
||
ctx.strokeStyle = dark ? '#334155' : '#cbd5e1'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(20, H - 30); ctx.lineTo(W - 20, H - 30); ctx.stroke();
|
||
// Draw depending on type
|
||
if (typeIdx === 0) {
|
||
// Stable: pendulum from top pivot, CG below
|
||
var px = W / 2, pivY = 60, rodLen = 100;
|
||
var bx = px + rodLen * Math.sin(rad), by = pivY + rodLen * Math.cos(rad);
|
||
ctx.strokeStyle = dark ? '#475569' : '#94a3b8'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(px, pivY); ctx.lineTo(bx, by); ctx.stroke();
|
||
ctx.beginPath(); ctx.arc(px, pivY, 6, 0, Math.PI * 2);
|
||
ctx.fillStyle = dark ? '#64748b' : '#94a3b8'; ctx.fill();
|
||
ctx.beginPath(); ctx.arc(bx, by, 18, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#1d4ed8'; ctx.fill();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 10px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('ЦТ', bx, by + 4);
|
||
// Restore arrow
|
||
if (Math.abs(ang) > 5) {
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.arc(px, pivY, rodLen + 15, Math.PI/2, Math.PI/2 - rad * 0.5, rad > 0);
|
||
ctx.stroke();
|
||
}
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#64748b'; ctx.font = '12px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('Устойчивое: ЦТ ниже опоры', W / 2, H - 5);
|
||
} else if (typeIdx === 1) {
|
||
// Unstable: inverted pendulum, CG above
|
||
var px2 = W / 2, pivY2 = H - 80, rodLen2 = 100;
|
||
var bx2 = px2 + rodLen2 * Math.sin(rad), by2 = pivY2 - rodLen2 * Math.cos(rad);
|
||
ctx.strokeStyle = dark ? '#475569' : '#94a3b8'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(px2, pivY2); ctx.lineTo(bx2, by2); ctx.stroke();
|
||
ctx.beginPath(); ctx.arc(px2, pivY2, 6, 0, Math.PI * 2);
|
||
ctx.fillStyle = dark ? '#64748b' : '#94a3b8'; ctx.fill();
|
||
ctx.beginPath(); ctx.arc(bx2, by2, 18, 0, Math.PI * 2);
|
||
var falling = Math.abs(ang) > 5;
|
||
ctx.fillStyle = falling ? '#ef4444' : '#f97316'; ctx.fill();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 10px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('ЦТ', bx2, by2 + 4);
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#64748b'; ctx.font = '12px Inter';
|
||
ctx.fillText('Неустойчивое: ЦТ выше опоры', W / 2, H - 5);
|
||
} else {
|
||
// Neutral: ball on flat surface
|
||
var ballX = W / 2 + ang * 3, ballY = H - 30 - 22;
|
||
ctx.beginPath(); ctx.arc(ballX, ballY, 22, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#0ea5e9'; ctx.fill();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 10px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('ЦТ', ballX, ballY + 4);
|
||
ctx.fillStyle = dark ? '#94a3b8' : '#64748b'; ctx.font = '12px Inter';
|
||
ctx.fillText('Безразличное: ЦТ = ось вращения', W / 2, H - 5);
|
||
}
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §29 — АРХИМЕДОВА СИЛА: ИНТЕРАКТИВ
|
||
// ══════════════════════════════════════════════
|
||
function upd29() {
|
||
var rhoT = +document.getElementById('sl29rho').value;
|
||
var Vdm = +document.getElementById('sl29v').value;
|
||
document.getElementById('v29rho').textContent = rhoT + ' кг/м³';
|
||
document.getElementById('v29v').textContent = Vdm + ' дм³';
|
||
var rhoW = 1000, g = 10;
|
||
var V = Vdm * 1e-3; // m^3
|
||
var Fout = rhoT * g * V;
|
||
var Farch = rhoW * g * V;
|
||
var el = document.getElementById('res29');
|
||
if (el) {
|
||
var status = rhoT < rhoW ? '⬆️ ПЛАВАЕТ' : (rhoT > rhoW ? '⬇️ ТОНЕТ' : '⇔ нейтральная плавучесть');
|
||
el.textContent = 'F_выт = ' + Farch.toFixed(1) + ' Н | F_т = ' + Fout.toFixed(1) + ' Н — ' + status;
|
||
}
|
||
drawArchimedes29(rhoT, V, Fout, Farch);
|
||
}
|
||
function drawArchimedes29(rhoT, V, Ft, Farch) {
|
||
var cv = document.getElementById('cv29');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 200;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.clearRect(0, 0, W, H);
|
||
var rhoW = 1000;
|
||
// Water fill
|
||
var waterY = H * 0.45;
|
||
ctx.fillStyle = dark ? 'rgba(30,100,180,0.25)' : 'rgba(186,230,253,0.6)';
|
||
ctx.fillRect(30, waterY, W - 60, H - waterY - 20);
|
||
ctx.strokeStyle = dark ? '#0369a1' : '#0ea5e9'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(30, waterY); ctx.lineTo(W - 30, waterY); ctx.stroke();
|
||
ctx.fillStyle = dark ? '#38bdf8' : '#0284c7'; ctx.font = '11px Inter'; ctx.textAlign = 'left';
|
||
ctx.fillText('вода ρ = 1000 кг/м³', 36, waterY - 5);
|
||
// Block
|
||
var cx = W / 2;
|
||
var blockSize = 40;
|
||
var subFrac = Math.min(1, rhoT / rhoW);
|
||
var subH = blockSize * subFrac;
|
||
var aboveH = blockSize - subH;
|
||
var blockTopY = waterY - aboveH;
|
||
var blockY = blockTopY;
|
||
ctx.fillStyle = rhoT < rhoW ? '#1d4ed8' : (rhoT > rhoW ? '#ef4444' : '#10b981');
|
||
ctx.fillRect(cx - blockSize / 2, blockY, blockSize, blockSize);
|
||
ctx.strokeStyle = '#fff'; ctx.lineWidth = 1;
|
||
ctx.strokeRect(cx - blockSize / 2, blockY, blockSize, blockSize);
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 10px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(rhoT, cx, blockY + blockSize / 2 + 4);
|
||
// Archimedes arrow (up, green)
|
||
var sc = Math.max(10, Math.min(60, Farch / 10));
|
||
ctx.strokeStyle = '#10b981'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(cx + 35, blockY + blockSize); ctx.lineTo(cx + 35, blockY + blockSize - sc); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(cx + 32, blockY + blockSize - sc + 6); ctx.lineTo(cx + 35, blockY + blockSize - sc - 4); ctx.lineTo(cx + 38, blockY + blockSize - sc + 6);
|
||
ctx.fillStyle = '#10b981'; ctx.fill();
|
||
ctx.font = '10px Inter'; ctx.textAlign = 'left';
|
||
ctx.fillText('F_выт=' + Farch.toFixed(0) + 'Н', cx + 40, blockY + blockSize - sc / 2 + 4);
|
||
// Weight arrow (down, red)
|
||
var scFt = Math.max(10, Math.min(60, Ft / 10));
|
||
ctx.strokeStyle = '#ef4444'; ctx.lineWidth = 2.5;
|
||
ctx.beginPath(); ctx.moveTo(cx - 35, blockY); ctx.lineTo(cx - 35, blockY + scFt); ctx.stroke();
|
||
ctx.beginPath(); ctx.moveTo(cx - 38, blockY + scFt - 6); ctx.lineTo(cx - 35, blockY + scFt + 4); ctx.lineTo(cx - 32, blockY + scFt - 6);
|
||
ctx.fillStyle = '#ef4444'; ctx.fill();
|
||
ctx.font = '10px Inter'; ctx.textAlign = 'right';
|
||
ctx.fillText('F_т=' + Ft.toFixed(0) + 'Н', cx - 40, blockY + scFt / 2 + 4);
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// §30 — КОРАБЛЬ С ГРУЗОМ: ИНТЕРАКТИВ
|
||
// ══════════════════════════════════════════════
|
||
function upd30() {
|
||
var ms = +document.getElementById('sl30ms').value; // tons
|
||
var mg = +document.getElementById('sl30mg').value; // tons
|
||
var Vc = +document.getElementById('sl30v').value; // m^3
|
||
document.getElementById('v30ms').textContent = ms + ' т';
|
||
document.getElementById('v30mg').textContent = mg + ' т';
|
||
document.getElementById('v30v').textContent = Vc + ' м³';
|
||
var rhoW = 1000, g = 10;
|
||
var totalMass = (ms + mg) * 1000; // kg
|
||
var rhoAvg = totalMass / Vc;
|
||
var Vpogr = totalMass / rhoW; // m^3 submerged (for floating)
|
||
var el = document.getElementById('res30');
|
||
if (el) {
|
||
var status = rhoAvg < rhoW ? ('⚓ Плавает | осадка ≈ ' + (Vpogr / Vc * 100).toFixed(0) + '% корпуса') : '⚠️ ТОНЕТ! Перегружен!';
|
||
el.textContent = 'ρ_ср = ' + rhoAvg.toFixed(0) + ' кг/м³ — ' + status;
|
||
}
|
||
drawShip30(ms, mg, Vc, rhoAvg);
|
||
}
|
||
function drawShip30(ms, mg, Vc, rhoAvg) {
|
||
var cv = document.getElementById('cv30');
|
||
if (!cv || cv.offsetWidth === 0) return;
|
||
var dpr = window.devicePixelRatio || 1;
|
||
var W = cv.offsetWidth, H = cv.offsetHeight || 200;
|
||
cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr);
|
||
var ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
||
var dark = document.body.classList.contains('dark');
|
||
ctx.clearRect(0, 0, W, H);
|
||
var rhoW = 1000;
|
||
var sinking = rhoAvg >= rhoW;
|
||
// Water
|
||
var waterY = H * 0.5;
|
||
ctx.fillStyle = dark ? 'rgba(30,100,180,0.3)' : 'rgba(186,230,253,0.7)';
|
||
ctx.fillRect(0, waterY, W, H - waterY);
|
||
ctx.strokeStyle = dark ? '#0369a1' : '#0ea5e9'; ctx.lineWidth = 1.5;
|
||
ctx.beginPath(); ctx.moveTo(0, waterY); ctx.lineTo(W, waterY); ctx.stroke();
|
||
// Ship hull
|
||
var subFrac = sinking ? 1.0 : Math.min(0.95, rhoAvg / rhoW);
|
||
var shipH = 60, shipW = 160;
|
||
var cx = W / 2;
|
||
var shipTop = waterY - shipH * (1 - subFrac);
|
||
ctx.beginPath();
|
||
ctx.moveTo(cx - shipW / 2, shipTop);
|
||
ctx.lineTo(cx + shipW / 2, shipTop);
|
||
ctx.lineTo(cx + shipW / 2 - 10, shipTop + shipH);
|
||
ctx.lineTo(cx - shipW / 2 + 10, shipTop + shipH);
|
||
ctx.closePath();
|
||
ctx.fillStyle = sinking ? '#ef4444' : (dark ? '#334155' : '#94a3b8'); ctx.fill();
|
||
ctx.strokeStyle = sinking ? '#b91c1c' : (dark ? '#475569' : '#64748b'); ctx.lineWidth = 2; ctx.stroke();
|
||
// Cabin/superstructure (only if not sinking)
|
||
if (!sinking) {
|
||
ctx.fillStyle = dark ? '#1e293b' : '#e2e8f0';
|
||
ctx.fillRect(cx - 30, shipTop - 28, 60, 28);
|
||
ctx.strokeStyle = dark ? '#475569' : '#94a3b8'; ctx.lineWidth = 1.5;
|
||
ctx.strokeRect(cx - 30, shipTop - 28, 60, 28);
|
||
}
|
||
// Waterline label
|
||
ctx.fillStyle = dark ? '#38bdf8' : '#0284c7'; ctx.font = '11px Inter'; ctx.textAlign = 'right';
|
||
ctx.fillText('ватерлиния', W - 35, waterY - 4);
|
||
// Status
|
||
ctx.fillStyle = sinking ? '#ef4444' : '#065f46'; ctx.font = 'bold 13px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText(sinking ? '⚠️ ТОНЕТ! ρ_ср = ' + rhoAvg.toFixed(0) + ' > 1000' : '⚓ ρ_ср = ' + rhoAvg.toFixed(0) + ' кг/м³', cx, H - 5);
|
||
// Waves
|
||
ctx.strokeStyle = dark ? 'rgba(56,189,248,0.3)' : 'rgba(14,165,233,0.3)'; ctx.lineWidth = 1.5;
|
||
for (var wx = 20; wx < W - 20; wx += 40) {
|
||
ctx.beginPath(); ctx.arc(wx, waterY, 10, Math.PI, 0); ctx.stroke();
|
||
}
|
||
ctx.textAlign = 'left';
|
||
}
|
||
|
||
// §31 — p = mv
|
||
function upd31() {
|
||
const m = +document.getElementById('sl31m').value;
|
||
const v = +document.getElementById('sl31v').value;
|
||
document.getElementById('v31m').textContent = m + ' кг';
|
||
document.getElementById('v31v').textContent = v + ' м/с';
|
||
const p = m * v;
|
||
document.getElementById('res31').innerHTML =
|
||
'p = ' + m + ' × ' + v + ' = <b style="font-size:1.1em;color:var(--pri)">' + p + '</b> кг·м/с';
|
||
const w = Math.max(8, Math.min(374, (p / 600) * 374));
|
||
document.getElementById('bar31').setAttribute('width', w);
|
||
document.getElementById('barlbl31').textContent = p + ' кг·м/с';
|
||
}
|
||
|
||
// §33 — угол α и работа
|
||
function upd33() {
|
||
const a = +document.getElementById('sl33a').value;
|
||
document.getElementById('v33a').textContent = a + '°';
|
||
document.getElementById('aval33').textContent = a;
|
||
const rad = a * Math.PI / 180;
|
||
const cosA = Math.cos(rad);
|
||
document.getElementById('cosval33').textContent = cosA.toFixed(2);
|
||
|
||
// F vector: origin = body centre (80, 75), length 40
|
||
const ox = 80, oy = 75, len = 40;
|
||
const fx2 = ox + len * Math.cos(rad);
|
||
const fy2 = oy - len * Math.sin(rad); // SVG y is inverted
|
||
|
||
document.getElementById('fline33').setAttribute('x2', fx2.toFixed(1));
|
||
document.getElementById('fline33').setAttribute('y2', fy2.toFixed(1));
|
||
|
||
// arrowhead
|
||
const dx = fx2 - ox, dy = fy2 - oy;
|
||
const ll = Math.sqrt(dx * dx + dy * dy);
|
||
const ux = dx / ll, uy = dy / ll;
|
||
const bx = fx2 - ux * 12, by = fy2 - uy * 12;
|
||
const nx = -uy * 5, ny = ux * 5;
|
||
document.getElementById('farrow33').setAttribute('points',
|
||
fx2.toFixed(1) + ',' + fy2.toFixed(1) + ' ' +
|
||
(bx + nx).toFixed(1) + ',' + (by + ny).toFixed(1) + ' ' +
|
||
(bx - nx).toFixed(1) + ',' + (by - ny).toFixed(1));
|
||
|
||
document.getElementById('ftxt33').setAttribute('x', (fx2 + 4).toFixed(1));
|
||
document.getElementById('ftxt33').setAttribute('y', (fy2 - 3).toFixed(1));
|
||
|
||
// α label position
|
||
const mid = rad / 2;
|
||
document.getElementById('albl33').setAttribute('x', (ox + 22 * Math.cos(mid)).toFixed(1));
|
||
document.getElementById('albl33').setAttribute('y', (oy - 22 * Math.sin(mid) + 4).toFixed(1));
|
||
|
||
// color
|
||
const color = cosA > 0.02 ? '#10b981' : cosA > -0.02 ? '#f59e0b' : '#ef4444';
|
||
['fline33', 'farrow33', 'ftxt33'].forEach(id => {
|
||
const el = document.getElementById(id);
|
||
if (el) { el.setAttribute('stroke', color); el.setAttribute('fill', color); }
|
||
});
|
||
document.getElementById('fline33').setAttribute('stroke', color);
|
||
|
||
// work sign
|
||
let sign = '', cls = '', desc = '';
|
||
if (cosA > 0.02) { sign = 'A > 0 — положительная'; cls = 'work-pos'; desc = 'Сила «помогает» движению'; }
|
||
else if (cosA > -0.02) { sign = 'A = 0 — равна нулю'; cls = 'work-zero'; desc = 'Сила ⊥ перемещению, работы нет'; }
|
||
else { sign = 'A < 0 — отрицательная'; cls = 'work-neg'; desc = 'Сила «тормозит» движение'; }
|
||
document.getElementById('worksign33').innerHTML = '<span class="' + cls + '">' + sign + '</span>';
|
||
document.getElementById('workdesc33').textContent = desc;
|
||
}
|
||
|
||
// §34 — нулевой уровень
|
||
// 1 м = 22px. Реальный пол = 0 м → y=196. Земля (улица) = -1 м → y=218.
|
||
// Шар А реальная высота 2 м → cy=140 (фиксировано). Шар Б 5 м → cy=74.
|
||
function upd34zero() {
|
||
const z = +document.getElementById('sl34zero').value; // 0–6 м
|
||
const m = 2, g = 10;
|
||
// реальные высоты шаров
|
||
const hA_real = 2, hB_real = 5;
|
||
// высоты относительно нулевого уровня
|
||
const h1 = +(hA_real - z).toFixed(1);
|
||
const h2 = +(hB_real - z).toFixed(1);
|
||
const Ep1 = +(m * g * h1).toFixed(0);
|
||
const Ep2 = +(m * g * h2).toFixed(0);
|
||
const dEp = +(m * g * (hB_real - hA_real)).toFixed(0); // всегда 600
|
||
|
||
document.getElementById('h1val').textContent = h1;
|
||
document.getElementById('h2val').textContent = h2;
|
||
document.getElementById('ep1val').textContent = Ep1;
|
||
document.getElementById('ep2val').textContent = Ep2;
|
||
document.getElementById('depval').textContent = dEp;
|
||
document.getElementById('dep_note').textContent =
|
||
'= ' + m + ' × ' + g + ' × ' + (hB_real - hA_real) + ' = не меняется!';
|
||
|
||
// Метка слайдера
|
||
const names = {0:'пол (0 м)',1:'1 м над полом',2:'2 м (нижняя полка)',
|
||
3:'3 м',4:'4 м',5:'5 м (верхняя полка)',6:'6 м (потолок)'};
|
||
document.getElementById('v34zero').textContent = names[z] || z + ' м';
|
||
|
||
// Позиция зелёной линии в SVG: y = 196 - z*22
|
||
const zy = 196 - z * 22;
|
||
document.getElementById('zline34').setAttribute('y1', zy);
|
||
document.getElementById('zline34').setAttribute('y2', zy);
|
||
document.getElementById('zlbl34').setAttribute('y', zy - 4);
|
||
|
||
// Стрелки h₁: от zy до cy=140 (шар А)
|
||
const cyA = 140;
|
||
document.getElementById('za_line').setAttribute('y1', zy);
|
||
document.getElementById('za_line').setAttribute('y2', cyA);
|
||
// наконечники
|
||
if (zy > cyA) {
|
||
document.getElementById('za_arr1').setAttribute('points', `22,${cyA} 18,${cyA+11} 26,${cyA+11}`);
|
||
document.getElementById('za_arr2').setAttribute('points', `22,${zy} 18,${zy-11} 26,${zy-11}`);
|
||
} else {
|
||
document.getElementById('za_arr1').setAttribute('points', `22,${cyA} 18,${cyA-11} 26,${cyA-11}`);
|
||
document.getElementById('za_arr2').setAttribute('points', `22,${zy} 18,${zy+11} 26,${zy+11}`);
|
||
}
|
||
document.getElementById('za_lbl').setAttribute('y', ((zy + cyA) / 2 + 3).toFixed(0));
|
||
document.getElementById('za_lbl').setAttribute('fill', h1 < 0 ? '#ef4444' : '#1d4ed8');
|
||
document.getElementById('za_lbl').textContent = h1 >= 0 ? 'h₁' : 'h₁<0';
|
||
|
||
// Стрелки h₂: от zy до cy=74 (шар Б)
|
||
const cyB = 74;
|
||
document.getElementById('zb_line').setAttribute('y1', zy);
|
||
document.getElementById('zb_line').setAttribute('y2', cyB);
|
||
if (zy > cyB) {
|
||
document.getElementById('zb_arr1').setAttribute('points', `33,${cyB} 29,${cyB+11} 37,${cyB+11}`);
|
||
document.getElementById('zb_arr2').setAttribute('points', `33,${zy} 29,${zy-11} 37,${zy-11}`);
|
||
} else {
|
||
document.getElementById('zb_arr1').setAttribute('points', `33,${cyB} 29,${cyB-11} 37,${cyB-11}`);
|
||
document.getElementById('zb_arr2').setAttribute('points', `33,${zy} 29,${zy+11} 37,${zy+11}`);
|
||
}
|
||
document.getElementById('zb_lbl').setAttribute('y', ((zy + cyB) / 2 + 3).toFixed(0));
|
||
document.getElementById('zb_lbl').setAttribute('fill', h2 < 0 ? '#ef4444' : '#7c3aed');
|
||
document.getElementById('zb_lbl').textContent = h2 >= 0 ? 'h₂' : 'h₂<0';
|
||
|
||
// Цвет Eп₁ и Eп₂ — красный если отрицательная
|
||
document.getElementById('ep1val').style.color = Ep1 < 0 ? '#ef4444' : '#1d4ed8';
|
||
document.getElementById('ep2val').style.color = Ep2 < 0 ? '#ef4444' : '#7c3aed';
|
||
}
|
||
|
||
// §34 — Eп = mgh
|
||
function upd34() {
|
||
const m = +document.getElementById('sl34m').value;
|
||
const h = +document.getElementById('sl34h').value;
|
||
document.getElementById('v34m').textContent = m + ' кг';
|
||
document.getElementById('v34h').textContent = h + ' м';
|
||
const Ep = m * 10 * h;
|
||
document.getElementById('res34').innerHTML =
|
||
'Eп = ' + m + ' × 10 × ' + h + ' = <b style="font-size:1.1em;color:var(--pri)">' + Ep + '</b> Дж';
|
||
const maxEp = 4000;
|
||
const barH = Math.max(2, Math.min(96, (Ep / maxEp) * 96));
|
||
const barY = 101 - barH;
|
||
document.getElementById('liftbar34').setAttribute('height', barH);
|
||
document.getElementById('liftbar34').setAttribute('y', barY);
|
||
const ballY = Math.max(15, barY - 11);
|
||
document.getElementById('liftball34').setAttribute('cy', ballY);
|
||
const txt = document.getElementById('liftballtxt');
|
||
if (txt) txt.setAttribute('y', ballY + 4);
|
||
}
|
||
|
||
// §35 — Eк = mv²/2
|
||
function upd35() {
|
||
const m = +document.getElementById('sl35m').value;
|
||
const v = +document.getElementById('sl35v').value;
|
||
document.getElementById('v35m').textContent = m + ' кг';
|
||
document.getElementById('v35v').textContent = v + ' м/с';
|
||
const Ek = m * v * v / 2;
|
||
document.getElementById('res35').innerHTML =
|
||
'Eк = ' + m + ' × ' + v + '² / 2 = <b style="font-size:1.1em;color:var(--pri)">' + Ek + '</b> Дж';
|
||
const maxEk = 4500;
|
||
const w = Math.max(2, Math.min(100, (Ek / maxEk) * 100));
|
||
document.getElementById('bar35').style.width = w + '%';
|
||
}
|
||
|
||
// §36 — маятник анимация
|
||
let pend36Timer = null;
|
||
let pend36Angle = Math.PI / 4; // начальный угол (рад)
|
||
let pend36Phase = 0;
|
||
const PEND36_AMP = Math.PI / 4; // 45°
|
||
const PEND36_L = 151; // длина нити (px, от y=14 до cy=165)
|
||
|
||
function pend36Frame() {
|
||
pend36Phase += 0.04;
|
||
const angle = PEND36_AMP * Math.cos(pend36Phase);
|
||
const cx = 100 + PEND36_L * Math.sin(angle);
|
||
const cy = 14 + PEND36_L * Math.cos(angle);
|
||
|
||
const rope = document.getElementById('pend-rope');
|
||
const ball = document.getElementById('pend-ball');
|
||
const ekBar = document.getElementById('bar-ek36');
|
||
const epBar = document.getElementById('bar-ep36');
|
||
const pendEk = document.getElementById('pend-ek');
|
||
const pendEp = document.getElementById('pend-ep');
|
||
if (!rope || !ball) return;
|
||
|
||
rope.setAttribute('x2', cx.toFixed(1));
|
||
rope.setAttribute('y2', cy.toFixed(1));
|
||
ball.setAttribute('cx', cx.toFixed(1));
|
||
ball.setAttribute('cy', cy.toFixed(1));
|
||
|
||
// высота над нижней точкой (cy_bottom = 14 + PEND36_L = 165)
|
||
const h = 165 - cy;
|
||
// h_max = 165 - (14 + PEND36_L*(1-cos(AMP))) ≈ PEND36_L*(1-cos(AMP))
|
||
const h_max = PEND36_L * (1 - Math.cos(PEND36_AMP));
|
||
const epFrac = Math.max(0, Math.min(1, h / h_max));
|
||
const ekFrac = 1 - epFrac;
|
||
|
||
ekBar.style.width = (ekFrac * 100).toFixed(1) + '%';
|
||
epBar.style.width = (epFrac * 100).toFixed(1) + '%';
|
||
pendEk.textContent = 'Eк = ' + (ekFrac * 100).toFixed(0) + '%';
|
||
pendEp.textContent = 'Eп = ' + (epFrac * 100).toFixed(0) + '%';
|
||
|
||
// Velocity arrow at ball
|
||
const vline = document.getElementById('pend-vline');
|
||
const varr = document.getElementById('pend-varr');
|
||
if (vline && varr) {
|
||
const v = ekFrac;
|
||
const ex = cx - Math.sin(angle) * 30 * v;
|
||
const ey = cy + Math.cos(angle) * 30 * v;
|
||
const sign = Math.sin(pend36Phase) > 0 ? 1 : -1;
|
||
const vex = cx + (-Math.cos(angle)) * 25 * v * sign;
|
||
const vey = cy + (-Math.sin(angle)) * 25 * v * sign;
|
||
vline.setAttribute('x1', cx.toFixed(1)); vline.setAttribute('y1', cy.toFixed(1));
|
||
vline.setAttribute('x2', vex.toFixed(1)); vline.setAttribute('y2', vey.toFixed(1));
|
||
vline.setAttribute('stroke', ekFrac > 0.05 ? '#6d28d9' : 'transparent');
|
||
varr.setAttribute('fill', ekFrac > 0.05 ? '#6d28d9' : 'transparent');
|
||
// arrowhead
|
||
const dx = vex - cx, dy = vey - cy;
|
||
const ll = Math.sqrt(dx*dx+dy*dy) || 1;
|
||
const ux = dx/ll, uy = dy/ll;
|
||
const bx = vex - ux*9, by = vey - uy*9;
|
||
const nx = -uy*4, ny = ux*4;
|
||
varr.setAttribute('points',
|
||
vex.toFixed(1)+','+vey.toFixed(1)+' '+(bx+nx).toFixed(1)+','+(by+ny).toFixed(1)+' '+(bx-nx).toFixed(1)+','+(by-ny).toFixed(1));
|
||
}
|
||
// h-line
|
||
const hline = document.getElementById('pend-hline');
|
||
const hlbl = document.getElementById('pend-hlbl');
|
||
if (hline && h > 2) {
|
||
hline.setAttribute('x1', (cx+5).toFixed(1)); hline.setAttribute('y1', cy.toFixed(1));
|
||
hline.setAttribute('x2', (cx+5).toFixed(1)); hline.setAttribute('y2', '165');
|
||
hlbl.setAttribute('x', (cx+9).toFixed(1));
|
||
hlbl.setAttribute('y', ((cy+165)/2+4).toFixed(1));
|
||
hlbl.textContent = 'h';
|
||
} else if (hline) {
|
||
hline.setAttribute('x1','0'); hline.setAttribute('y1','0');
|
||
hline.setAttribute('x2','0'); hline.setAttribute('y2','0');
|
||
if (hlbl) hlbl.textContent = '';
|
||
}
|
||
}
|
||
|
||
function togglePend36() {
|
||
const btn = document.getElementById('pendBtn36');
|
||
if (pend36Timer) {
|
||
clearInterval(pend36Timer);
|
||
pend36Timer = null;
|
||
if (btn) btn.innerHTML = '<i class="fas fa-play"></i> Запустить';
|
||
} else {
|
||
pend36Timer = setInterval(pend36Frame, 30);
|
||
if (btn) btn.innerHTML = '<i class="fas fa-pause"></i> Стоп';
|
||
}
|
||
}
|
||
|
||
function nextTask(sec) {
|
||
const pool = POOLS[sec];
|
||
const s = STATE[sec];
|
||
let next = -1;
|
||
for (let i = s.idx + 1; i < pool.length; i++) {
|
||
if (s.results[i] === null) { next = i; break; }
|
||
}
|
||
if (next === -1) {
|
||
for (let i = 0; i < s.idx; i++) {
|
||
if (s.results[i] === null) { next = i; break; }
|
||
}
|
||
}
|
||
if (next === -1) { showSummary(sec); return; }
|
||
s.idx = next;
|
||
s.answered = false;
|
||
renderTask(sec);
|
||
}
|
||
|
||
function resetTasks(sec) {
|
||
STATE[sec] = mkState(POOLS[sec]);
|
||
document.getElementById('sum' + sec).classList.remove('show');
|
||
renderTask(sec);
|
||
}
|
||
|
||
function updateScoreBar(sec) {
|
||
const pool = POOLS[sec];
|
||
const s = STATE[sec];
|
||
const okCnt = s.results.filter(r => r === true).length;
|
||
const doneCnt = s.results.filter(r => r !== null).length;
|
||
document.getElementById('ok' + sec).textContent = okCnt;
|
||
document.getElementById('cur' + sec).textContent = doneCnt;
|
||
document.getElementById('max' + sec).textContent = pool.length;
|
||
document.getElementById('prog' + sec).style.width = (doneCnt / pool.length * 100) + '%';
|
||
}
|
||
|
||
function showSummary(sec) {
|
||
const pool = POOLS[sec];
|
||
const s = STATE[sec];
|
||
document.getElementById('prog' + sec).style.width = '100%';
|
||
document.getElementById('sum' + sec).classList.add('show');
|
||
const okCnt = s.results.filter(r => r === true).length;
|
||
document.getElementById('sumScore' + sec).textContent = `${okCnt} / ${pool.length}`;
|
||
const p = okCnt / pool.length;
|
||
document.getElementById('sumGrade' + sec).textContent =
|
||
p >= .9 ? '🏆 Отлично — тема освоена!' :
|
||
p >= .75 ? '⭐ Хорошо! Разбери пропущенные задачи.' :
|
||
p >= .5 ? '👍 Неплохо. Повтори формулы и попробуй ещё раз.' :
|
||
'📖 Прочитай теорию и реши снова.';
|
||
}
|
||
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ЛАБ. РАБОТА №11 — Проверка ЗСИ
|
||
// ══════════════════════════════════════════════
|
||
const L11 = { rows: [], g: 9.81, H: 0.15 };
|
||
|
||
function l11ph() {
|
||
const m1 = +document.getElementById('l11m1').value / 1000;
|
||
const m2 = +document.getElementById('l11m2').value / 1000;
|
||
const h = +document.getElementById('l11h').value / 100;
|
||
const v0 = Math.sqrt(2 * L11.g * h);
|
||
const tF = Math.sqrt(2 * L11.H / L11.g);
|
||
const v1p = (m1 - m2) / (m1 + m2) * v0;
|
||
const v2p = 2 * m1 / (m1 + m2) * v0;
|
||
return { m1, m2, h, v0, v1p, v2p, tF,
|
||
l1: v0 * tF, l1p: v1p * tF, l2p: v2p * tF };
|
||
}
|
||
|
||
function updLab11() {
|
||
const p = l11ph();
|
||
document.getElementById('l11m1v').textContent = (+document.getElementById('l11m1').value);
|
||
document.getElementById('l11m2v').textContent = (+document.getElementById('l11m2').value);
|
||
document.getElementById('l11hv').textContent = (+document.getElementById('l11h').value);
|
||
document.getElementById('l11r1').textContent = p.l1.toFixed(3);
|
||
document.getElementById('l11r1p').textContent = Math.abs(p.l1p).toFixed(3);
|
||
document.getElementById('l11r2p').textContent = p.l2p.toFixed(3);
|
||
drawLab11();
|
||
}
|
||
|
||
function drawLab11() {
|
||
const cv = document.getElementById('cvLab11');
|
||
if (!cv) return;
|
||
|
||
// ── HiDPI: resize canvas to physical pixels ──────────────────
|
||
const dpr = window.devicePixelRatio || 1;
|
||
const cssW = cv.clientWidth || 540;
|
||
const cssH = 195; // logical CSS height (canvas keeps aspect via style)
|
||
if (cv.width !== Math.round(cssW * dpr) ||
|
||
cv.height !== Math.round(cssH * dpr)) {
|
||
cv.width = Math.round(cssW * dpr);
|
||
cv.height = Math.round(cssH * dpr);
|
||
cv.style.height = cssH + 'px';
|
||
}
|
||
|
||
const ctx = cv.getContext('2d');
|
||
ctx.setTransform(dpr, 0, 0, dpr, 0, 0); // draw in CSS-pixel space
|
||
|
||
const W = cssW, Hc = cssH;
|
||
const dark = document.body.classList.contains('dark');
|
||
const p = l11ph();
|
||
|
||
// ── Layout (CSS px) ───────────────────────────────────────────
|
||
const FVH = 52; // floor-to-table vertical px (= H = 0.15m)
|
||
const FY = Hc - 20; // floor baseline (room below for labels)
|
||
const TY = FY - FVH; // table surface
|
||
const EX_F = 0.27; // table-edge x as fraction of W
|
||
const EX = Math.round(W * EX_F);
|
||
const SV = FVH / L11.H; // px / m (vertical)
|
||
const BR = 8;
|
||
|
||
// ── Auto-scale SH so all marks stay within canvas ─────────────
|
||
const rDist = Math.max(p.l1, Math.max(0, p.l1p), p.l2p, 0.05);
|
||
const lDist = Math.max(0, -p.l1p);
|
||
const rightAvail = W - EX - 14;
|
||
const leftAvail = EX - 46; // 46 px reserved for h-label on left
|
||
const SH = Math.min(
|
||
rightAvail / rDist,
|
||
lDist > 0.001 ? leftAvail / lDist : Infinity
|
||
) * 0.96;
|
||
|
||
// ── Colours ───────────────────────────────────────────────────
|
||
const cFloor = dark ? '#334155' : '#e2e8f0';
|
||
const cTab = dark ? '#1e3a5f' : '#dbeafe';
|
||
const cStr = dark ? '#475569' : '#94a3b8';
|
||
const cTxt = dark ? '#94a3b8' : '#475569';
|
||
const cRamp = dark ? '#93c5fd' : '#3b82f6';
|
||
const cL1 = '#818cf8'; // reference (indigo, faint)
|
||
const cL1p = '#3b82f6'; // ball 1 after (blue)
|
||
const cL2p = '#f97316'; // ball 2 after (orange)
|
||
|
||
ctx.clearRect(0, 0, W, Hc);
|
||
|
||
// ── Floor fill ────────────────────────────────────────────────
|
||
ctx.fillStyle = cFloor;
|
||
ctx.fillRect(EX - 3, FY, W - EX + 3, Hc - FY);
|
||
ctx.fillStyle = dark ? '#64748b' : '#94a3b8';
|
||
ctx.fillRect(EX - 3, FY, W - EX + 3, 1.5);
|
||
|
||
// ── Table legs ────────────────────────────────────────────────
|
||
ctx.fillStyle = cStr;
|
||
ctx.fillRect(32, TY + 4, 6, FY - TY - 4);
|
||
ctx.fillRect(EX - 15, TY + 4, 6, FY - TY - 4);
|
||
|
||
// ── Table surface ─────────────────────────────────────────────
|
||
ctx.fillStyle = cTab;
|
||
ctx.fillRect(28, TY, EX - 28, 5);
|
||
ctx.strokeStyle = dark ? '#93c5fd' : '#2563eb';
|
||
ctx.lineWidth = 1.5; ctx.setLineDash([]);
|
||
ctx.strokeRect(28, TY, EX - 28, 5);
|
||
|
||
// ── H dimension (right of edge) ───────────────────────────────
|
||
const hx = EX + 9;
|
||
ctx.strokeStyle = cTxt; ctx.lineWidth = 1; ctx.setLineDash([2.5, 2.5]);
|
||
ctx.beginPath(); ctx.moveTo(hx, TY); ctx.lineTo(hx, FY); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
const _arrowV = (x, y, dir) => {
|
||
ctx.beginPath();
|
||
ctx.moveTo(x-3, y+dir*5); ctx.lineTo(x, y); ctx.lineTo(x+3, y+dir*5);
|
||
ctx.stroke();
|
||
};
|
||
_arrowV(hx, TY, 1); _arrowV(hx, FY, -1);
|
||
ctx.fillStyle = cTxt; ctx.font = '9px Inter'; ctx.textAlign = 'left';
|
||
ctx.fillText('H=15 см', hx + 4, (TY + FY) / 2 + 4);
|
||
|
||
// ── Ramp ──────────────────────────────────────────────────────
|
||
const hPx = p.h * SV * 0.70;
|
||
const RW = Math.round(W * 0.20); // ramp horizontal extent
|
||
const RTX = EX - RW;
|
||
const RTY = TY - hPx;
|
||
|
||
ctx.beginPath();
|
||
ctx.moveTo(RTX, RTY); ctx.lineTo(EX, TY);
|
||
ctx.lineTo(EX, RTY + 6); ctx.lineTo(RTX, RTY + 6);
|
||
ctx.closePath();
|
||
ctx.fillStyle = cTab; ctx.fill();
|
||
ctx.strokeStyle = dark ? '#93c5fd' : '#2563eb'; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(RTX, RTY); ctx.lineTo(EX, TY); ctx.stroke();
|
||
|
||
// ── h dimension (left of ramp) ────────────────────────────────
|
||
const hax = RTX - 12;
|
||
ctx.strokeStyle = cTxt; ctx.lineWidth = 1; ctx.setLineDash([2.5, 2.5]);
|
||
ctx.beginPath(); ctx.moveTo(hax, RTY); ctx.lineTo(hax, TY); ctx.stroke();
|
||
ctx.setLineDash([]);
|
||
_arrowV(hax, RTY, 1); _arrowV(hax, TY, -1);
|
||
ctx.fillStyle = cTxt; ctx.font = '9px Inter'; ctx.textAlign = 'right';
|
||
const hVal = +document.getElementById('l11h').value;
|
||
ctx.fillText('h=' + hVal + 'см', hax - 3, (RTY + TY) / 2 + 4);
|
||
|
||
// ── Ball 1 on ramp ────────────────────────────────────────────
|
||
const ang = Math.atan2(TY - RTY, EX - RTX);
|
||
const bpx = RTX + (EX - RTX) * 0.28;
|
||
const bpy = RTY + (TY - RTY) * 0.28;
|
||
const b1x = bpx - Math.sin(ang) * (BR + 1);
|
||
const b1y = bpy + Math.cos(ang) * (BR + 1);
|
||
ctx.beginPath(); ctx.arc(b1x, b1y, BR, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#2563eb'; ctx.fill();
|
||
ctx.strokeStyle = '#93c5fd'; ctx.lineWidth = 1.5; ctx.stroke();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 8px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('1', b1x, b1y + 3);
|
||
|
||
// ── Ball 2 at edge ────────────────────────────────────────────
|
||
const b2x = EX + BR + 2, b2y = TY - BR;
|
||
ctx.beginPath(); ctx.arc(b2x, b2y, BR, 0, Math.PI * 2);
|
||
ctx.fillStyle = '#ea580c'; ctx.fill();
|
||
ctx.strokeStyle = '#fbbf24'; ctx.lineWidth = 1.5; ctx.stroke();
|
||
ctx.fillStyle = '#fff'; ctx.font = 'bold 8px Inter'; ctx.textAlign = 'center';
|
||
ctx.fillText('2', b2x, b2y + 3);
|
||
|
||
// ── Clip canvas so trajectories don't bleed outside ───────────
|
||
ctx.save();
|
||
ctx.beginPath();
|
||
ctx.rect(0, 0, W, Hc);
|
||
ctx.clip();
|
||
|
||
// ── Draw parabola + landing mark ──────────────────────────────
|
||
function parab(vx, col, lbl, alpha) {
|
||
if (!isFinite(vx) || isNaN(vx)) return;
|
||
ctx.globalAlpha = alpha || 1;
|
||
const landPx = EX + vx * p.tF * SH; // unclamped x of landing
|
||
const clampX = Math.max(6, Math.min(W - 6, landPx));
|
||
|
||
// Parabolic curve
|
||
ctx.strokeStyle = col; ctx.lineWidth = 1.8; ctx.setLineDash([5, 3.5]);
|
||
ctx.beginPath();
|
||
if (Math.abs(vx) < 0.001) {
|
||
// Falls straight down from edge
|
||
ctx.moveTo(EX, TY); ctx.lineTo(EX, FY);
|
||
} else {
|
||
const steps = 36;
|
||
for (let i = 0; i <= steps; i++) {
|
||
const t = i / steps * p.tF;
|
||
const cx = EX + vx * t * SH;
|
||
const cy = TY + 0.5 * L11.g * t * t * SV;
|
||
i === 0 ? ctx.moveTo(cx, cy) : ctx.lineTo(cx, cy);
|
||
}
|
||
}
|
||
ctx.stroke(); ctx.setLineDash([]);
|
||
|
||
// Landing tick mark
|
||
ctx.strokeStyle = col; ctx.lineWidth = 2;
|
||
ctx.beginPath(); ctx.moveTo(clampX, FY - 8); ctx.lineTo(clampX, FY + 1); ctx.stroke();
|
||
// Triangle pointer
|
||
ctx.beginPath();
|
||
ctx.moveTo(clampX - 4, FY - 3);
|
||
ctx.lineTo(clampX, FY + 4);
|
||
ctx.lineTo(clampX + 4, FY - 3);
|
||
ctx.fillStyle = col; ctx.fill();
|
||
// Label (stays within canvas)
|
||
ctx.globalAlpha = 1;
|
||
ctx.fillStyle = col;
|
||
ctx.font = 'bold 9.5px Inter'; ctx.textAlign = 'center';
|
||
const lblX = Math.max(14, Math.min(W - 14, clampX));
|
||
ctx.fillText(lbl, lblX, FY + 14);
|
||
ctx.globalAlpha = 1;
|
||
}
|
||
|
||
parab(p.v0, cL1, 'l₁', 0.40);
|
||
parab(p.v1p, cL1p, "l₁'", 1);
|
||
parab(p.v2p, cL2p, "l₂'", 1);
|
||
|
||
ctx.restore(); // remove clip
|
||
|
||
// ── Legend (top-right, outside clip so always visible) ────────
|
||
const lgX = W - 102, lgY = 7;
|
||
[[cL1,"l₁ (без м₂)",0.40],[cL1p,"l₁' (шар 1)",1],[cL2p,"l₂' (шар 2)",1]]
|
||
.forEach(([col, lbl, a], i) => {
|
||
const y = lgY + i * 15;
|
||
ctx.globalAlpha = a;
|
||
ctx.fillStyle = col;
|
||
ctx.fillRect(lgX, y + 3, 16, 3);
|
||
ctx.globalAlpha = 1;
|
||
ctx.fillStyle = cTxt;
|
||
ctx.font = '8.5px Inter'; ctx.textAlign = 'left';
|
||
ctx.fillText(lbl, lgX + 20, y + 8);
|
||
});
|
||
}
|
||
function l11noise() { return 1 + (Math.random()*0.04 - 0.02); }
|
||
|
||
function lab11add() {
|
||
if (L11.rows.length >= 5) return;
|
||
const p = l11ph();
|
||
L11.rows.push({
|
||
m1: p.m1, m2: p.m2,
|
||
l1: p.l1 * l11noise(),
|
||
l1p: Math.abs(p.l1p) * l11noise(),
|
||
l2p: p.l2p * l11noise()
|
||
});
|
||
l11tbl();
|
||
if (L11.rows.length >= 5) {
|
||
document.getElementById('lab11b1').disabled = true;
|
||
l11verif();
|
||
}
|
||
}
|
||
|
||
function lab11all() { while (L11.rows.length < 5) lab11add(); }
|
||
function lab11reset() {
|
||
L11.rows = [];
|
||
document.getElementById('lab11b1').disabled = false;
|
||
document.getElementById('lab11vrf').style.display = 'none';
|
||
l11tbl();
|
||
}
|
||
|
||
function l11tbl() {
|
||
const mn = k => L11.rows.length ? L11.rows.reduce((s,r)=>s+r[k],0)/L11.rows.length : 0;
|
||
let h = '';
|
||
for (let i=0; i<5; i++) {
|
||
const r = L11.rows[i];
|
||
h += r
|
||
? `<tr><td>${i+1}</td><td>${r.m1.toFixed(3)}</td><td>${r.m2.toFixed(3)}</td><td>${r.l1.toFixed(3)}</td><td>${r.l1p.toFixed(3)}</td><td>${r.l2p.toFixed(3)}</td></tr>`
|
||
: `<tr><td>${i+1}</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td></tr>`;
|
||
}
|
||
if (L11.rows.length)
|
||
h += `<tr class="lab11-avg"><td>⟨⟩</td><td>${mn('m1').toFixed(3)}</td><td>${mn('m2').toFixed(3)}</td><td>${mn('l1').toFixed(3)}</td><td>${mn('l1p').toFixed(3)}</td><td>${mn('l2p').toFixed(3)}</td></tr>`;
|
||
document.getElementById('lab11tb').innerHTML = h;
|
||
}
|
||
|
||
|
||
function l11verif() {
|
||
document.getElementById('lab11vrf').style.display = 'block';
|
||
|
||
var avg = function(k) { return L11.rows.reduce(function(s,r){ return s + r[k]; }, 0) / 5; };
|
||
var m1 = avg('m1'), m2 = avg('m2');
|
||
var al1 = avg('l1'), al1p = avg('l1p'), al2p = avg('l2p');
|
||
var lhs = m1 * al1;
|
||
var rhs = m1 * al1p + m2 * al2p;
|
||
var dP = Math.abs(lhs - rhs);
|
||
var eps = dP / lhs * 100;
|
||
var l1arr = L11.rows.map(function(r){ return r.l1; });
|
||
var dL1 = Math.max.apply(null, l1arr.map(function(v){ return Math.abs(v - al1); }));
|
||
var ok = eps < 5;
|
||
|
||
function f3(v){ return '<span class="nb-v">' + v.toFixed(3) + '</span>'; }
|
||
function f4(v){ return '<span class="nb-v">' + v.toFixed(4) + '</span>'; }
|
||
function bx(s){ return '<span class="nb-box">' + s + '</span>'; }
|
||
|
||
var devRows = l1arr.map(function(v, i) {
|
||
var dev = Math.abs(v - al1);
|
||
return '<span class="nb-i">l<sub>' + (i+1) + '</sub>: |' +
|
||
v.toFixed(3) + ' − ' + al1.toFixed(3) + '| = ' +
|
||
f3(dev) + ' \u043c</span>';
|
||
}).join('');
|
||
|
||
var nb = [
|
||
'<div class="nb-wrap">',
|
||
'<div class="nb-hdr">\uD83D\uDCCB \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f (\u043a\u0430\u043a \u0432 \u0442\u0435\u0442\u0440\u0430\u0434\u0438)</div>',
|
||
'<div class="nb-dado">',
|
||
'<div><span class="nb-clbl">\u0414\u0430\u043d\u043e:</span><br>',
|
||
'm\u2081 = ' + f3(m1) + ' \u043a\u0433<br>',
|
||
'm\u2082 = ' + f3(m2) + ' \u043a\u0433<br>',
|
||
'\u27E8l\u2081\u27E9 = ' + f3(al1) + ' \u043c<br>',
|
||
'\u27E8l\u2081\u2019\u27E9 = ' + f3(al1p) + ' \u043c<br>',
|
||
'\u27E8l\u2082\u2019\u27E9 = ' + f3(al2p) + ' \u043c</div>',
|
||
'<div><span class="nb-clbl">\u041d\u0430\u0439\u0442\u0438:</span><br>',
|
||
'p\u2081 = m\u2081\u27E8l\u2081\u27E9 \u2014 ?<br>',
|
||
'p\u2081\u2032 + p\u2082\u2032 \u2014 ?<br>',
|
||
'\u03B5 \u2014 ?<br>',
|
||
'\u0394l\u2081, \u03B4l\u2081 \u2014 ?</div>',
|
||
'</div>',
|
||
'<hr class="nb-div">',
|
||
'<div class="nb-sh">\u0420\u0435\u0448\u0435\u043d\u0438\u0435:</div>',
|
||
'<div class="nb-step">',
|
||
'<b>1. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0417\u0421\u0418:</b><br>',
|
||
'<span class="nb-i"><em>\u041b\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c:</em></span>',
|
||
'<span class="nb-i">p\u2081 = m\u2081·\u27E8l\u2081\u27E9 = ' +
|
||
m1.toFixed(3) + ' · ' + al1.toFixed(3) + ' = ' + bx(lhs.toFixed(4) + ' \u043a\u0433·\u043c') + '</span>',
|
||
'<span class="nb-i"><em>\u041f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c:</em></span>',
|
||
'<span class="nb-i">p\u2081\u2032 + p\u2082\u2032 = m\u2081·\u27E8l\u2081\u2032\u27E9 + m\u2082·\u27E8l\u2082\u2032\u27E9</span>',
|
||
'<span class="nb-i"> = ' +
|
||
m1.toFixed(3) + '·' + al1p.toFixed(3) + ' + ' + m2.toFixed(3) + '·' + al2p.toFixed(3) + '</span>',
|
||
'<span class="nb-i"> = ' +
|
||
(m1*al1p).toFixed(4) + ' + ' + (m2*al2p).toFixed(4) + '</span>',
|
||
'<span class="nb-i"> = ' + bx(rhs.toFixed(4) + ' \u043a\u0433·\u043c') + '</span>',
|
||
'</div>',
|
||
'<div class="nb-step">',
|
||
'<b>2. \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435:</b><br>',
|
||
'<span class="nb-i">\u03B5 = |p\u2081 − (p\u2081\u2032+p\u2082\u2032)| / p\u2081 · 100%</span>',
|
||
'<span class="nb-i"> = |' + lhs.toFixed(4) + ' − ' + rhs.toFixed(4) + '| / ' + lhs.toFixed(4) + ' · 100%</span>',
|
||
'<span class="nb-i"> = ' + dP.toFixed(4) + ' / ' + lhs.toFixed(4) + ' · 100% = ' +
|
||
bx(eps.toFixed(1) + '%') + ' <span class="' + (ok ? 'nb-ok' : 'nb-bad') + '">' +
|
||
(ok ? '< 5% \u2713' : '> 5% \u2717') + '</span></span>',
|
||
'</div>',
|
||
'<div class="nb-step">',
|
||
'<b>3. \u041f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u044f\u043c\u044b\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 l\u2081:</b><br>',
|
||
devRows,
|
||
'<span class="nb-i">\u0394l\u2081 = max|l<sub>i</sub> − \u27E8l\u2081\u27E9| = ' + bx(dL1.toFixed(4) + ' \u043c') + '</span>',
|
||
'<span class="nb-i">\u03B4l\u2081 = ' + dL1.toFixed(4) + ' / ' + al1.toFixed(3) +
|
||
' · 100% = ' + bx((dL1/al1*100).toFixed(1) + '%') + '</span>',
|
||
'</div>',
|
||
'<div class="nb-ans">',
|
||
'\u041e\u0442\u0432\u0435\u0442: l\u2081 = (' + al1.toFixed(3) + ' ± ' + dL1.toFixed(3) + ') \u043c, ' +
|
||
'\u03B4l\u2081 = ' + (dL1/al1*100).toFixed(1) + '% ' +
|
||
'<span class="' + (ok ? 'nb-ok' : 'nb-bad') + '">' +
|
||
(ok ? '\u0417\u0421\u0418 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d \u2713' : '\u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u043b\u0438\u043a\u043e \u2717') + '</span>',
|
||
'</div>',
|
||
'</div>'
|
||
].join('\n');
|
||
|
||
document.getElementById('lab11nb').innerHTML = nb;
|
||
|
||
var cn = document.getElementById('lab11cn');
|
||
cn.style.cssText = 'padding:14px 18px;border-radius:12px;font-size:.88rem;font-weight:700;line-height:1.7;background:' +
|
||
(ok ? 'var(--ok-bg);color:#065f46' : 'var(--warn-bg);color:#92400e');
|
||
cn.textContent = ok
|
||
? '\u2705 \u0417\u0430\u043a\u043e\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d: \u03B5 = ' + eps.toFixed(1) + '% < 5% \u2014 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438.'
|
||
: '\u26A0\uFE0F \u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u03B5 = ' + eps.toFixed(1) + '% > 5%. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u044b \u0448\u0430\u0440\u043e\u0432 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043e\u043f\u044b\u0442.';
|
||
}
|
||
function toggleSuperAns() {
|
||
var el = document.getElementById('superAns');
|
||
var btn = document.getElementById('superAnsBtn');
|
||
if (el.style.display === 'none') {
|
||
el.style.display = 'block';
|
||
btn.innerHTML = '<i class="fas fa-eye-slash"></i> Скрыть решение';
|
||
} else {
|
||
el.style.display = 'none';
|
||
btn.innerHTML = '<i class="fas fa-lightbulb"></i> Показать решение';
|
||
}
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ТЕМА (день/ночь)
|
||
// ══════════════════════════════════════════════
|
||
const themeBtn = document.getElementById('themeBtn');
|
||
themeBtn.addEventListener('click', () => {
|
||
const d = document.body.classList.toggle('dark');
|
||
themeBtn.innerHTML = d ? '<i class="fas fa-sun"></i>' : '<i class="fas fa-moon"></i>';
|
||
localStorage.setItem('phys9_theme', d ? '1' : '');
|
||
});
|
||
if (localStorage.getItem('phys9_theme') === '1') {
|
||
document.body.classList.add('dark');
|
||
themeBtn.innerHTML = '<i class="fas fa-sun"></i>';
|
||
}
|
||
|
||
// ══════════════════════════════════════════════
|
||
// СПРАВОЧНИК (плавающий)
|
||
// ══════════════════════════════════════════════
|
||
const refToggle = document.getElementById('refToggle');
|
||
const refPanel = document.getElementById('refPanel');
|
||
refToggle.addEventListener('click', e => { e.stopPropagation(); refPanel.classList.toggle('show'); });
|
||
document.addEventListener('click', e => {
|
||
if (!refPanel.contains(e.target) && e.target !== refToggle) refPanel.classList.remove('show');
|
||
});
|
||
|
||
// ══════════════════════════════════════════════
|
||
// ИНИЦИАЛИЗАЦИЯ
|
||
// ══════════════════════════════════════════════
|
||
['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10','p11','p12','p13','p14','p15','p16','p17','p18','p19','p20','p21','p22','p23','p24','p25','p26','p27','p28','p29','p30','p31','p32','p33','p34','p35','p36','hard'].forEach(sec => renderTask(sec));
|
||
setParaTab('p1');
|
||
upd2(); upd3(); upd4(); upd5(); upd6(); upd7(); upd8(); upd10(); upd11(); upd12();
|
||
upd16(); upd17(); upd19(); upd20(); upd21();
|
||
upd22(); upd23(); upd24();
|
||
upd25(); upd26(); upd27(); upd27mu();
|
||
upd28(); upd29(); upd30();
|
||
upd31(); upd33(); upd34zero(); upd34(); upd35(); updLab11();
|
||
// §15–§21 init: planet grid + canvas draws for active tab
|
||
initPlanetGrid16();
|
||
startAnim1();
|
||
startAnim15();
|
||
// §9, §13, §14 are animation loops — deferred to tab click (hidden at load)
|
||
// §19 and §20 canvas draw is deferred: the tabs are hidden at load,
|
||
// drawSpring19/drawFriction20 are called via tab-click handler and upd* functions
|
||
// Redraw lab11 canvas when its tab becomes visible
|
||
if (window.ResizeObserver) {
|
||
const _ro11 = new ResizeObserver(entries => {
|
||
if (entries[0].contentRect.width > 0) drawLab11();
|
||
});
|
||
const _cv11 = document.getElementById('cvLab11');
|
||
if (_cv11) _ro11.observe(_cv11);
|
||
}
|
||
</script>
|
||
</main>
|
||
</div><!-- /.page-layout -->
|
||
<script src="/js/api.js"></script>
|
||
<script src="/js/textbook-tracker.js"></script>
|
||
</body>
|
||
</html>
|