Параметры stiffness и damping

В основе пружинных анимаций лежит классическая модель гармонического осциллятора, где движение элемента описывается балансом между упругой силой и сопротивлением среды. В контексте Motion One эти свойства задаются через параметры stiffness и damping, определяющие характер перехода от начального состояния к целевому.

Пружинная анимация отличается от линейных или кубических easing-функций тем, что не опирается на фиксированное время интерполяции. Вместо этого движение определяется физической моделью, что позволяет получать более естественные и динамичные переходы.


stiffness — жёсткость пружины

Параметр stiffness задаёт силу, с которой система стремится вернуть объект в целевое положение.

Чем выше значение stiffness:

  • тем быстрее ускорение в сторону цели
  • тем резче старт движения
  • тем выше частота колебаний при недостаточном демпфировании

Низкие значения stiffness приводят к:

  • мягкому, растянутому движению
  • плавному набору скорости
  • более «вязкой» динамике

В физической модели stiffness соответствует коэффициенту упругости пружины k в законе Гука:

[ F = -kx]

где:

  • F — возвращающая сила
  • k — stiffness
  • x — отклонение от равновесия

damping — коэффициент затухания

Параметр damping определяет, насколько быстро система теряет энергию колебаний.

Высокий damping:

  • подавляет колебания
  • приводит систему к апериодическому движению
  • делает анимацию «сухой» и контролируемой

Низкий damping:

  • допускает колебания вокруг целевого значения
  • создаёт эффект упругого отскока
  • увеличивает длительность стабилизации

В физике damping связан с силой сопротивления, пропорциональной скорости:

[ F_d = -c v]

где:

  • c — коэффициент демпфирования
  • v — скорость движения

Взаимодействие stiffness и damping

Эти параметры нельзя рассматривать изолированно, поскольку итоговое поведение системы определяется их соотношением.

Основные режимы поведения:

1. Перемедленное движение (overdamped) damping значительно выше критического уровня относительно stiffness:

  • отсутствие колебаний
  • медленное приближение к цели
  • предсказуемая траектория

2. Критическое демпфирование (critically damped) оптимальный баланс:

  • максимально быстрое достижение цели без колебаний
  • используется в большинстве UI-анимаций

3. Недодемпфированная система (underdamped) damping недостаточен:

  • появляются колебания
  • объект «перелетает» цель
  • наблюдается затухающая синусоида

Поведение spring-анимации в Motion One

Motion One интерпретирует stiffness и damping как параметры численного решения дифференциального уравнения движения пружины. Результат — непрерывная адаптация скорости и ускорения на каждом кадре.

Простейшая конфигурация анимации:

import { animate } from "motion";

animate(
  ".box",
  { x: 300 },
  {
    type: "spring",
    stiffness: 120,
    damping: 20
  }
);

В этом примере:

  • движение начинается резко из-за умеренного stiffness
  • система не переходит в режим колебаний благодаря достаточному damping
  • траектория стремится к плавному завершению без overshoot

Влияние stiffness на характер движения

При увеличении stiffness поведение системы изменяется по следующим закономерностям:

  • возрастает начальное ускорение
  • сокращается время достижения цели
  • увеличивается вероятность колебаний при фиксированном damping
  • повышается «реактивность» интерфейса

Пример высокой жёсткости:

animate(
  ".panel",
  { scale: 1.2 },
  {
    type: "spring",
    stiffness: 300,
    damping: 25
  }
);

Такая конфигурация характерна для микроинтеракций, где требуется мгновенный отклик интерфейса.


Влияние damping на стабильность системы

Damping регулирует энергорассеивание системы и напрямую влияет на визуальную устойчивость.

При увеличении damping:

  • исчезают колебательные эффекты
  • уменьшается амплитуда overshoot
  • траектория становится ближе к экспоненциальному затуханию
  • увеличивается субъективная «тяжесть» элемента

Пример высокого демпфирования:

animate(
  ".modal",
  { opacity: 1, y: 0 },
  {
    type: "spring",
    stiffness: 200,
    damping: 40
  }
);

Такое поведение характерно для интерфейсных модальных окон, где важна предсказуемость завершения анимации.


Баланс параметров и критическое состояние

Критическое демпфирование возникает при определённом соотношении stiffness и damping, при котором система достигает цели максимально быстро без колебаний.

Условно:

[ damping ]

Хотя Motion One не требует ручного вычисления этого значения, понимание зависимости позволяет предсказуемо формировать поведение анимаций.


Типичные паттерны настройки

Интерактивные элементы (кнопки, hover-состояния):

  • высокая stiffness
  • средний damping
  • быстрый отклик без заметной инерции
{
  stiffness: 400,
  damping: 30
}

Модальные окна и панели:

  • средняя stiffness
  • повышенный damping
  • отсутствие колебаний
{
  stiffness: 200,
  damping: 35
}

Декоративные анимации:

  • низкий damping
  • умеренная stiffness
  • допустим overshoot
{
  stiffness: 150,
  damping: 10
}

Нелинейность восприятия параметров

Физические параметры в Motion One не соответствуют линейному восприятию человеком. Увеличение stiffness в два раза не воспринимается как «в два раза быстрее». Визуальный эффект зависит от:

  • текущего масштаба движения
  • амплитуды изменения свойства
  • частоты кадров
  • начальной скорости системы

Поэтому настройка stiffness и damping рассматривается как процесс итеративной калибровки поведения, а не точного расчёта.


Ошибки при конфигурации spring-системы

Типовые проблемы возникают при дисбалансе параметров:

  • слишком высокий stiffness при низком damping приводит к неконтролируемым колебаниям
  • чрезмерный damping делает анимацию «застывшей»
  • слишком низкая stiffness создаёт ощущение инертности интерфейса
  • несогласованные параметры разных элементов приводят к визуальной асинхронности интерфейса

Поведение при сложных трансформациях

При анимации нескольких свойств одновременно (например, x, scale, opacity) spring-модель применяется к каждому параметру независимо, но визуальное восприятие зависит от их комбинации.

animate(
  ".card",
  {
    x: 100,
    scale: 1.1,
    opacity: 1
  },
  {
    type: "spring",
    stiffness: 180,
    damping: 22
  }
);

Согласованность stiffness и damping в таких случаях влияет на ощущение единого движения, а не набора отдельных трансформаций.