feat(phys9 flagships): F3 тахометр+спидометр + F4 орбита (Wave A продолжение)
F3. Тахометр + спидометр + одометр (§11 в ch1): - Canvas 640×400 с 3 аналоговыми приборами вверху (тахометр a, спидометр v, одометр Δx mod 1000) - Графики v(t) и a(t) внизу с горизонтальной цель-линией - Кнопки «Газ»/«Тормоз» удержанием, «Отпустить» — coast-режим (лёгкое торможение от трения) - Slider'ы: a_газа, |a_тормоз|, цель скорости (по умолчанию 16.7 м/с) - Рекорд скорости в localStorage - Feedback при достижении цели F4. Орбитальный конструктор (§17 в ch2): - Canvas 640×480 (космос со звёздами) - Планета (Земля) в центре, спутник запускается с r=200 - Slider'ы: M, v₀, угол α - Кнопки: Запустить/Сброс/«Круговая орбита» (вычисляет v=√(M/r)) - Физика: F=GM/r² (G=1), Эйлер 8 шагов/кадр - Trail орбиты до 1500 точек - Классификация: падение/круговая/эллипс/убегание - Период T через переход через ось x - Feedback при крайних случаях Подключение: - ch1: phys9_flag_F3_dashboard.js + хук на p11 - ch2: phys9-flagships.css + base + F4 + хук на p17 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>
|
||||
@@ -789,7 +790,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_CH2_WIDGETS && window.PHYS9_CH2_WIDGETS[id]) window.PHYS9_CH2_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_CH2_WIDGETS && window.PHYS9_CH2_WIDGETS[id]) window.PHYS9_CH2_WIDGETS[id](); } catch(e){ console.warn('phys9 widget init:', e.message); } try { if(window.PHYS9_FLAG_BASE){ if(id==='p17') window.PHYS9_FLAG_BASE.mount('F4','p17'); } } 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