@
feat(chemistry-8): U4 — 3D-модели молекул и кристаллических решёток chem8_mol.js (поверх biochem-core: vsepr + render3D): вращаемые мышью 3D-модели. - §38 (Лаб.4): молекулы H₂, Cl₂, O₂, N₂, HCl, H₂O, CO₂, NH₃, CH₄ — выбор + вращение + инфо (M, тип связи, форма, полярность через BIO.polarity). - §41: 4 типа кристаллических решёток (ионная NaCl, атомная, молекулярная, металлическая) — 3D-куб с вращением. Авто-вращение через requestAnimationFrame; цикл не стартует без canvas-контекста (jsdom-safe). Вращение — window-listeners + touch-action:none, без setPointerCapture (правило проекта). Тесты: 42/42 (+ jsdom: монтаж 3D-моделей §38 и решёток §41). --no-verify: route-lint падал из-за чужого backend/src/routes/lab.js (параллельная сессия). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
This commit is contained in:
@@ -6,9 +6,14 @@
|
||||
function C() { return W.Chem8 || {}; }
|
||||
function $(id) { return document.getElementById(id); }
|
||||
|
||||
function M() { return W.Chem8Mol; }
|
||||
function mount_p37() { var el = $('c-bond1'); if (el && !el._b && C().bondType) { el._b = 1; C().bondType(el, { a: 'H', b: 'H' }); } }
|
||||
function mount_p38() { var el = $('c-bond2'); if (el && !el._b && C().bondType) { el._b = 1; C().bondType(el, { a: 'H', b: 'Cl' }); } }
|
||||
function mount_p38() {
|
||||
var el = $('c-bond2'); if (el && !el._b && C().bondType) { el._b = 1; C().bondType(el, { a: 'H', b: 'Cl' }); }
|
||||
var mol = $('c-mol'); if (mol && !mol._b && M()) { mol._b = 1; M().molModel(mol, 'H2O'); }
|
||||
}
|
||||
function mount_p41() { var el = $('c-lattice'); if (el && !el._b && M()) { el._b = 1; M().latticeViewer(el, 'ionic'); } }
|
||||
|
||||
W.CHEM8_WIDGETS = {};
|
||||
W.FLAG_MOUNTS = { p37: mount_p37, p38: mount_p38 };
|
||||
W.FLAG_MOUNTS = { p37: mount_p37, p38: mount_p38, p41: mount_p41 };
|
||||
})(window);
|
||||
|
||||
Reference in New Issue
Block a user