Механика инерции
Инерция используется для выполнения вычислений для анимации перемещения объектов и обеспечения поддержки универсальной удобства использования в приложениях, включающих 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.
Связанные темы