Maxim Dolgolyov
7bf15d449a
@
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>
@
2026-05-30 16:34:37 +03:00
..
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-30 11:53:17 +03:00
2026-05-30 11:53:17 +03:00
2026-05-30 11:53:17 +03:00
2026-05-29 21:46:13 +03:00
2026-05-30 16:21:01 +03:00
2026-05-30 16:17:02 +03:00
2026-05-30 16:17:02 +03:00
2026-05-30 16:34:37 +03:00
2026-05-30 16:17:02 +03:00
2026-05-30 16:21:01 +03:00
2026-05-30 16:17:02 +03:00
2026-05-30 16:17:02 +03:00
2026-05-27 16:36:43 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 11:53:17 +03:00
2026-05-30 11:53:17 +03:00
2026-05-30 11:53:17 +03:00
2026-05-30 11:53:17 +03:00
2026-05-29 19:43:24 +03:00
2026-05-27 17:21:06 +03:00
2026-05-27 17:21:06 +03:00
2026-05-27 17:21:06 +03:00
2026-05-30 10:41:27 +03:00
2026-05-30 10:41:27 +03:00
2026-05-30 10:41:27 +03:00
2026-05-30 10:41:27 +03:00
2026-05-30 10:41:27 +03:00
2026-05-30 12:01:50 +03:00
2026-05-30 11:53:51 +03:00
2026-05-30 10:12:29 +03:00
2026-05-30 10:20:49 +03:00
2026-05-30 10:26:17 +03:00
2026-05-30 10:31:05 +03:00
2026-05-30 10:29:50 +03:00
2026-05-27 17:00:36 +03:00
2026-05-30 10:10:33 +03:00
2026-05-30 10:23:57 +03:00
2026-05-30 10:19:55 +03:00
2026-05-30 10:23:57 +03:00
2026-05-30 10:29:42 +03:00
2026-05-30 09:16:24 +03:00
2026-05-27 16:36:43 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-30 09:51:04 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 19:43:24 +03:00
2026-05-29 17:42:36 +03:00