Числовые значения

В основе любой анимационной системы лежит работа с непрерывно изменяющимися числовыми значениями. Положение объекта на оси, прозрачность, масштаб, угол поворота, скорость движения — всё это сводится к числам, которые изменяются во времени по определённым законам.

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

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


Состояние числового значения

Базовая единица управления в Popmotion — объект состояния, содержащий числовое значение и метаданные о его изменении. Это состояние включает:

  • текущее значение
  • начальную точку
  • конечную точку
  • скорость изменения
  • флаги активности

Число в такой модели не является статичной величиной. Оно представляет собой точку на временной шкале, которая непрерывно обновляется.

При этом числовое значение может существовать как:

  • абсолютная величина (например, 300)
  • относительная величина (например, +20 от текущего состояния)
  • интерполированное значение между двумя границами

Интерполяция как основа движения

Интерполяция в числовых системах — это процесс вычисления промежуточных значений между начальной и конечной точками.

В Popmotion числовая интерполяция строится на функции нормализации времени:

  • вход: прогресс от 0 до 1
  • выход: число в заданном диапазоне

Формально базовая интерполяция выражается как:

  • value = start + (end - start) * progress

Где progress изменяется во времени.

Линейная интерполяция

Линейная модель используется как базовый случай:

  • равномерное изменение значения
  • отсутствие ускорения и замедления
  • постоянная скорость

Такая модель часто применяется для:

  • перемещения по координате
  • изменения прозрачности
  • равномерного масштабирования

Ограничение диапазонов

Числовые значения в анимации редко существуют без границ. Ограничение диапазона предотвращает выход за допустимые пределы и обеспечивает стабильность визуального результата.

В Popmotion используются несколько стратегий:

Clamp (ограничение)

Clamp фиксирует значение в пределах диапазона:

  • если значение меньше минимума — оно становится равным минимуму
  • если больше максимума — становится максимумом

Это обеспечивает:

  • защиту интерфейса от некорректных значений
  • предсказуемость поведения

Wrap (зацикливание)

Wrap позволяет числам переходить через границу и возвращаться с другой стороны диапазона:

  • при превышении максимума значение переходит к минимуму
  • при уходе ниже минимума — к максимуму

Такой подход применяется в:

  • круговых анимациях
  • бесконечных каруселях
  • угловых значениях (0–360)

Mirror (отражение)

Значение отражается от границы диапазона:

  • при достижении предела движение разворачивается

Используется в симметричных физических моделях.


Нормализация и денормализация

Часто числовые значения переводятся между различными шкалами.

Нормализация приводит любое число к диапазону 0–1:

  • используется для управления прогрессом анимации
  • упрощает применение easing-функций

Денормализация возвращает число в исходный диапазон:

  • применяется после обработки прогресса
  • позволяет работать с любыми диапазонами одинаково

Скорость как числовая производная

Скорость в Popmotion рассматривается как изменение числового значения во времени.

Она вычисляется как:

  • velocity = (current - previous) / deltaTime

Скорость используется для:

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

Высокая скорость означает быстрое изменение значения, низкая — плавное движение.


Физическая модель чисел

Числовые значения могут подчиняться физическим законам, что позволяет создавать реалистичные анимации.

Упругие системы

В spring-модели значение рассматривается как масса, соединённая с точкой равновесия.

Основные числовые параметры:

  • stiffness — жёсткость
  • damping — затухание
  • mass — масса

Поведение числа определяется уравнением:

  • ускорение зависит от отклонения от цели
  • скорость уменьшается из-за сопротивления

Такая модель создаёт:

  • колебания
  • пружинящие эффекты
  • затухающие движения

Числовые ключевые кадры

Ключевые кадры представляют дискретные числовые состояния во времени.

В системе ключевых кадров:

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

Числовая траектория строится как функция:

  • времени → значение

При этом допускаются:

  • повторения значений
  • произвольные временные интервалы
  • вложенные сегменты интерполяции

Easing как преобразование чисел

Easing-функции изменяют линейный числовой прогресс, создавая нелинейные кривые движения.

Базовый вход:

  • t ∈ [0, 1]

Выход:

  • модифицированное значение прогресса

Типы числовых преобразований:

  • ускорение в начале
  • замедление в конце
  • симметричные кривые
  • резкие переходы

Easing фактически является функцией преобразования числового пространства, изменяющей плотность распределения значений во времени.


Преобразование диапазонов

Часто одно числовое пространство отображается в другое.

Типичная задача:

  • вход: диапазон 0–1
  • выход: диапазон 100–500

Формула преобразования:

  • value = targetMin + (sourceValue - sourceMin) * (targetMax - targetMin) / (sourceMax - sourceMin)

Такие преобразования используются для:

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

Числовые единицы и представления

Числа в Popmotion могут быть связаны с визуальными единицами, но остаются абстрактными величинами.

Типичные интерпретации:

  • пиксели
  • проценты
  • градусы
  • относительные коэффициенты

Внутренне система работает с числами без единиц, а преобразование происходит на уровне применения к стилям.

Такой подход позволяет:

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

Композиция числовых трансформаций

Числовые преобразования могут комбинироваться в цепочки:

  • нормализация
  • easing
  • масштабирование
  • ограничение диапазона

Каждый этап изменяет числовое представление, формируя итоговое значение.

Композиция позволяет:

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

Инкрементальные изменения

Некоторые числовые системы работают не с абсолютными значениями, а с приращениями.

Инкрементальная модель:

  • value += delta

Используется для:

  • обработки жестов
  • drag-событий
  • инерционного движения

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


Числовая стабильность и дискретизация

При вычислениях с плавающей точкой возникает проблема накопления ошибок.

В анимационных системах это проявляется как:

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

Решения включают:

  • округление значений
  • фиксацию конечных состояний
  • ограничение минимальных изменений

Дискретизация также используется для синхронизации с кадровой частотой.


Прогресс как универсальная числовая абстракция

Прогресс анимации является центральной числовой метрикой, описывающей текущее состояние движения.

Он выражается в диапазоне:

  • 0 — начало
  • 1 — завершение

Все преобразования строятся вокруг этой шкалы:

  • интерполяция
  • easing
  • физические модели
  • ключевые кадры

Прогресс служит связующим звеном между временем и значением, превращая временную ось в числовую функцию.