- biochem-core.js dual-export (browser window.BIO + Node module.exports), без дублей
- BIO.valency: подробные подсказки валентности (2.4), общие для редактора и сервера
- services/chem.js: серверный анализ поверх того же ядра (analyze/validate)
- POST /api/biochem/analyze (2.2); /validate переведён на ядро (+фикс формата связей)
- api.js: LS.biochemAnalyze
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
В biochem-core.js добавлен расчёт химии из структуры (client-side, для всех
страниц): partialCharges (по разнице электроотрицательностей на связях),
dipole (векторная сумма q·r по 3D-координатам VSEPR), polarity (классификация
по дипольному моменту), massFractions, functionalGroups, analyze (единая точка).
chargeColor + поддержка opts.charges в render2D/render3D + стрелка диполя.
biochem.html: крудные эвристики _detectFG/_polarity/ATOMIC_MASS заменены на
BIO.analyze (−95 строк дублей); в панель свойств добавлен дипольный момент;
тумблер δ± — тепловая карта частичных зарядов (синий δ+/красный δ−) в 2D и 3D
плюс стрелка диполя.
Проверено: H2O O=−0.52/H=+0.26; CO2/CH4/CCl4 диполь 0 (неполярны);
H2O/CHCl3 полярны — симметрия гасит вектора за счёт настоящей 3D-геометрии.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Два дефекта, из-за которых 3D читался как плоская диаграмма:
- painter-сортировка была по возрастанию z (ближние первыми) — дальние
атомы рисовались поверх ближних. Теперь единый список примитивов
(атомы + половинки связей) сортируется по убыванию z (дальние первыми).
- связи были тонкими плоскими линиями. Теперь — затенённые «цилиндры»:
толстый штрих с поперечным градиентом (центр светлее, края темнее),
двухцветные (каждая половина под цвет своего атома) — фирменный вид
ball-and-stick. Ширина зависит от перспективы (ближе — толще).
- усилена перспектива (fov 900→700), добавлен тёмный ободок сфер для объёма.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Фаза 0 (фундамент) + Фаза 1 (3D) плана BIOCHEM_UPGRADE:
- Новый общий модуль frontend/js/biochem-core.js (window.BIO): реестр
элементов (CPK, масса, валентность, электроотрицательность, ковалентный/
ван-дер-ваальсов радиусы), hillFormula/molarMass/parseFormula/dbe,
нормализация связей (bF/bT/bO — чинит расхождение полей f/from, o/order),
render2D, vsepr (генератор 3D по ОЭПВО), render3D (ball-and-stick с
глубиной и затенением), safe (обёртка API с тостом), RING_TEMPLATES.
- biochem.html: подключён core; фейковый 3D (плоская проекция a.z||0)
заменён на честную VSEPR-геометрию через BIO.render3D; в панель свойств
добавлены форма молекулы, гибридизация и валентный угол; фикс бага
порядка связи в getBondSum.
VSEPR проверен: вода — угловая, метан — тетраэдр 109.5°, CO2 — линейная
180°, NH3 — пирамидальная; sp/sp2/sp3 верно.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>