Поделиться через


Механика инерции

Инерция используется для выполнения вычислений для анимации перемещения объектов и обеспечения поддержки универсальной удобства использования в приложениях, включающих Windows Touch. В этом разделе показаны следующие функции, включенные по инерции.

  • Краткий обзор физики инерции.
  • Плавное анимация объектов с использованием свойств скорости и замедления.
  • Плавное анимация объектов с помощью свойства смещения.
  • Отскакивание от краев экрана с использованием эластичных границ.

Общие сведения о физике инерции

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

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

В формуле, используемой для вычисления текущей позиции (x), начальная скорость (v) умножается на прошедшее время (t) и уменьшается на коэффициент замедления (d) время в квадрате. Это приводит к плавному замедлению объекта. На предыдущем рисунке в начальной (крайней левой) части кривой объект движется быстро, так как его текущая скорость является начальной. В последней (крайней правой) части кривой объект полностью остановился, так как его скорость составляет 0. Вычисления скорости объектов для скорости X, Y и скорости вращения используют эту формулу для вычислений.

Все расстояния, используемые для процессора инерции, являются относительными. Если вы хотите использовать экранные координаты, передайте экранные координаты обработчику манипуляции (или инерции); если вы хотите использовать абсолютные координаты, передайте их в процессор, который вы используете. Независимо от используемых значений обработчик манипуляций будет использовать тактовые миллисекунды для обработки времени. Эти значения можно передать непосредственно обработчику инерции с помощью метода ProcessTime или с помощью метки времени по умолчанию через вызовы Process.

Анимация объектов Smooth с использованием свойств скорости и замедления

Вы можете включить плавную анимацию, напрямую взаимодействуя с физической моделью, задав значения скорости и замедления в интерфейсе процессора инерции, а затем вызвав Process. Вызов процесса активирует манипуляции с объектами, что, в свою очередь, приведет к обновлению пользовательского интерфейса. Значения скорости объекта, передаваемые обработчику инерции, обычно берутся из обработчика манипуляций после завершения. Значение замедления будет зависеть от того, как долго вы хотите анимировать объект, и от единиц, которые используются для вычислений. Поскольку значения являются зависимыми, иногда необходимо масштабировать скорость ввода от обработчика манипляции и использовать произвольные значения для замедления. Следующие значения являются типичными для различных сценариев, в которых значения centipixel передаются из свойств x и y структуры TOUCHINPUT в обработчик манипуляций.

Сценарий Property Set Значение замедления Типичное масштабирование входных данных скорости Примечания
Перевод DesiredDeceleration 0.003f Нет. Использование этого значения приведет к анимации на большее расстояние при использовании сенсорного ввода.
Перевод DesiredDeceleration 0.001f 1/20 начальная скорость для сенсорных входов, нет для ввода с помощью мыши Использование этого значения будет анимировать около секунды с учетом типичных входных данных скорости.
Перевод DesiredDeceleration 0.5f Нет Использование этого значения дает естественное ощущение анимации на больших сенсорных дисплеях Windows.
Поворот DesiredAngularDeceleration 0.000015f Радианы, преобразованные в градусы. Использование этого значения приводит к более длительным анимациям поворота при использовании сенсорного ввода.
Поворот DesiredAngularDeceleration 0.00001f 1/40-й разности поворота для сенсорных входов, нет для ввода с помощью мыши Это значение находится в радианах, поэтому необходимо использовать очень небольшие значения замедления и скорости.
Поворот DesiredAngularDeceleration 0,000005f Нет Это значение имеет естественное ощущение на больших сенсорных дисплеях Windows.

 

Анимация объектов Smooth с использованием свойства требуемого смещения

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

Управление положением объекта с помощью эластичных границ

Когда у вас есть объект, который перемещается по экрану, обычно требуется, чтобы он остановился, прежде чем он выйдет за пределы точки зрения пользователя. Обработчик инерции включает эту функцию через свойства границы и эластичных полей. На следующем рисунке показаны различные свойства границ и полей в типичном приложении.

Снимок экрана со свойствами границ и эластичных полей

Вы устанавливаете левую, верхнюю, правую и нижнюю границы и эластичные поля для приложения, а обработчик инерции будет обрабатывать сохранение элементов пользовательского интерфейса в пределах границ. Когда объект достигает эластичного поля, он замедляется, пока не достигнет границы. Он никогда не оставит это поле снова во время инерции, но будет по-прежнему двигаться до тех пор, пока перпендикулярный компонент инерции объекта не уменьшится до 0. На рисунке круг смещается к левой эластичной границе. Сплошная стрелка показывает направление манипуляции; сплошной круг — это начальное положение объекта; Сплошная стрелка — это изменения, внесенные до попадания круга в эластичное поле; пунктирная стрелка показывает, где обработчик инерции управляет кругом после попадания в поле; и пунктирные круги показывают, где останавливается объект.

Примечание

Установка свойств полей приведет к перемещению границ наружу. Например, если для верхней границы задано значение 50, а для верхнего эластичного поля задано значение 10, верхняя граница фактически станет 40.

 

Обработка инерции в неуправляемом коде

Инерция

Манипуляции