feat(phys9 flagships): F10 аквариум + F12 горки (Wave C+D пилоты)
F10. Виртуальный аквариум (§29 в ch3): - Canvas 640×380 с переключателем жидкости (вода/масло/ртуть) - Палитра 7 материалов: дерево, пенопласт, пластик, лёд, алюминий, железо, золото (с указанием ρ) - Клик по материалу → бросает кубик в аквариум - Реальная физика плавания: F_Архимеда vs F_тяжести - Тела плавают/тонут/висят согласно ρ_тела vs ρ_жидкости - При смене жидкости тела перераспределяются - Феномен: «золото плавает в ртути!» - Контекстный feedback по последнему уложенному телу F12. Американские горки (§35 в ch4): - Canvas 700×360 — рисуй мышкой профиль горки слева направо - Шаблоны: «горка» (V-образная), «петля» (волнистая) - Slider'ы: μ трения (0..0.5), масса шарика (0.1..5 кг) - Кнопки: Старт/Сброс/Очистить - Реальная физика по сегментам: a = g·sinα - μg·cosα·sign(v) - Real-time stats: Ep, Ek, E_total, v - Зелёная пунктир E₀ на canvas — начальная энергия - Красная пунктир — диссипация при трении (растёт со временем) - ЗСМЭ виден визуально: без трения линии совпадают Подключение: - ch3: phys9-flagships.css + base + F10 + хук на p29 - ch4: phys9-flagships.css + base + F12 + хук на p35 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
|
||||
<link rel="stylesheet" href="/css/phys-textbook-widgets.css">
|
||||
<link rel="stylesheet" href="/css/phys9-flagships.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:true},{left:'$',right:'$',display:false},{left:'\\[',right:'\\]',display:true},{left:'\\(',right:'\\)',display:false}],throwOnError:false})"></script>
|
||||
@@ -773,7 +774,7 @@ function _injectTasks(id){
|
||||
var body = document.getElementById(id + '-body');
|
||||
if(!body || body.querySelector('.legacy-tasks')) return;
|
||||
body.insertAdjacentHTML('beforeend', _makeTaskBlock(id));
|
||||
setTimeout(function(){ try { if(window.renderTask) window.renderTask(id); if(window.renderNav) window.renderNav(id); } catch(e){} try { if(window.PHYS9_FINALS_INIT && /^final\d+$/.test(id)) window.PHYS9_FINALS_INIT(id); } catch(e){ console.warn("phys9 final init:", e.message); } try { if(window.PHYS9_CH3_WIDGETS && window.PHYS9_CH3_WIDGETS[id]) window.PHYS9_CH3_WIDGETS[id](); } catch(e){ console.warn('phys9 widget init:', e.message); } }, 60);
|
||||
setTimeout(function(){ try { if(window.renderTask) window.renderTask(id); if(window.renderNav) window.renderNav(id); } catch(e){} try { if(window.PHYS9_FINALS_INIT && /^final\d+$/.test(id)) window.PHYS9_FINALS_INIT(id); } catch(e){ console.warn("phys9 final init:", e.message); } try { if(window.PHYS9_CH3_WIDGETS && window.PHYS9_CH3_WIDGETS[id]) window.PHYS9_CH3_WIDGETS[id](); } catch(e){ console.warn('phys9 widget init:', e.message); } try { if(window.PHYS9_FLAG_BASE){ if(id==='p29') window.PHYS9_FLAG_BASE.mount('F10','p29'); } } catch(e){ console.warn('phys9 flag init:', e.message); } }, 60);
|
||||
}
|
||||
var _origEnsureBuilt = ensureBuilt;
|
||||
ensureBuilt = function(id){ _origEnsureBuilt(id); _injectTasks(id); };
|
||||
|
||||
Reference in New Issue
Block a user