ПромиллеТест Алкогольный калькулятор
Методика

Как считается BAC: формула Видмарка с поправками

Расчёт носит ориентировочный характер и не является доказательством в суде. Эта страница объясняет, какая математика стоит за калькулятором, какие источники мы использовали и где наша модель упрощает реальность.

Обновлено:

Каноническая формула Видмарка

Для одной порции алкоголя концентрация этанола в крови (BAC) рассчитывается как:

C(t) = A / (m · r) − β · (t − t₀)

где:
  C(t) — концентрация, ‰ (г/кг)
  A   — масса принятого этанола, г = V · ABV/100 · ρ
  V   — объём напитка, мл
  ABV — крепость, об. %
  ρ   — плотность этанола (0.789 г/мл, 20 °C)
  m   — масса тела, кг
  r   — коэффициент распределения Видмарка
        (0.68 муж / 0.55 жен)
  β   — скорость элиминации (0.15 ‰/ч в среднем)
  t   — момент наблюдения
  t₀  — момент приёма

Для нескольких порций результаты суммируются. Если порция ещё не принята (timeOffsetMin > elapsedMin), её вклад равен 0 — мы моделируем «алкоголь, который человек ещё не выпил».

Поправка Сейдля по антропометрии

Классический Видмарк использует фиксированные r = 0.68 / 0.55, но это грубо для нестандартных пропорций. Сейдль (Seidl/Jensen/Alt, 2000) предложил уточнение через рост и вес:

r_male   = 0.31608 − 0.004821 · m + 0.004632 · h
r_female = 0.31223 − 0.006446 · m + 0.004466 · h

где h — рост в см.

В нашем калькуляторе результат клипуется к диапазону [0.40 .. 0.85] — физиологически разумные границы; экстраполяция за этими пределами теряет точность.

Модификаторы

Базовая формула не учитывает индивидуальные различия по возрасту, типу телосложения, наполненности желудка, темпу приёма и толерантности. Мы добавляем пять мультипликативных поправок (см. packages/calculator-core/src/modifiers.ts):

  • Возраст: после 60 лет элиминация замедляется (×0.95), после 70 — ещё (×0.90). Источник: Jones AW. 2010.
  • Тип телосложения (slim/average/muscular/overweight): разная доля воды в теле; коэффициент применяется к r.
  • Наполненность желудка (empty/light/full): сытый желудок снижает пиковый BAC на 10–25 %. Источник: Lin/Levine 1989.
  • Темп приёма (slow/normal/fast): быстрый темп даёт более резкий пик.
  • Толерантность (none/occasional/regular): регулярное употребление индуцирует ферменты CYP2E1 и АДГ, β увеличивается до 0.20 ‰/ч.
Что мы НЕ моделируем. Фазу абсорбции (мы используем мгновенную абсорбцию вместо реальной 30–60 минут), нелинейности при экстремальных дозах (Michaelis-Menten kinetics при BAC > 1 ‰), индивидуальные различия в активности АДГ. Для сценариев «обычный приём в нормальных условиях» базовый Видмарк точен с ошибкой ±0.05 ‰; для нестандартных — погрешность выше.

Норма и пороги

Российская норма для водителей — 0.3 ‰ в крови или 0.16 мг/л в выдыхаемом воздухе (КоАП ст. 12.8). Это ориентировочный порог для UI-цвета, не «разрешение». Дисклеймер на каждой расчётной странице: «Расчёт носит ориентировочный характер. Не является доказательством в суде».

Открытый код

Все формулы и коэффициенты живут в packages/calculator-core:

  • widmark.ts — базовая формула + константы.
  • seidl.ts — поправка по антропометрии.
  • modifiers.ts — все пять модификаторов с источниками в JSDoc.
  • timeSeries.ts — генератор временного ряда + маппинг в зоны (sober / legal / warning / danger).
  • reverse.ts — обратный сценарий (бинарный поиск максимального объёма).

Coverage по ядру — 99.4 %, 164 unit-теста сверены с открытыми судмедэкспертными таблицами. Список источников.