Механика инерции
Инерция используется для выполнения вычислений для анимации перемещения объектов и обеспечения универсальной удобства использования в приложениях, включающих Windows Touch. В этом разделе показаны следующие функции, включенные инерцией.
- Краткий обзор физики инерции.
- Анимация гладкого объекта с помощью свойств скорости и замедления.
- Анимация гладкого объекта с помощью свойства смещения.
- Отскочивание от краев экрана с помощью эластичных границ.
Обзор физики инерции
Обработчик инерции использует простую модель физики, которая включает позицию, значение замедления и начальную скорость. Время используется в качестве динамических входных данных модели для определения текущей позиции перемещаемого объекта. На следующем графе и формуле описана модель физики, используемая для вычисления позиций объектов.
В формуле, используемой для вычисления текущей позиции (x), начальная скорость (v) умножается на время истекшего времени (t) и уменьшается на коэффициент замедления (d) тайм-квадрат. Это приводит к замедлению гладкого объекта. На предыдущем рисунке на начальной (левой) части кривой объект перемещается быстро, так как его текущая скорость является начальной скоростью. В последней (правой) части кривой объект полностью остановился, потому что его скорость составляет 0. Вычисления скорости объекта для вычислений x-скорости, скорости y и скорости поворота используют эту формулу для вычислений.
Все расстояние, используемое для процессора инерции, является относительным. Если вы хотите использовать координаты экрана, передайте координаты экрана обработчику манипуляции (или инерции); Если вы хотите использовать абсолютные координаты, передайте их в используемый процессор. Независимо от используемых значений обработчик манипуляций будет использовать часы миллисекунда для обработки времени. Эти значения можно передать непосредственно обработчику инерции с помощью метода ProcessTime или с помощью метки времени по умолчанию с помощью вызовов Process.
Анимация гладкого объекта с помощью свойств скорости и замедления
Вы можете включить плавную анимацию, напрямую взаимодействуя с моделью физики, установив значения скорости и замедления в интерфейсе обработчика инерции, а затем вызовите Process. Вызов процесса активирует манипуляции с объектами, которые, в свою очередь, должны вызывать обновления пользовательского интерфейса. Значения скорости объекта, передаваемые процессору инерции, обычно принимаются от обработчика манипуляций после завершения. Значение замедления будет зависеть от времени, в течение которого объект будет анимирован и единиц, которые вы используете для вычислений. Поскольку значения зависят, иногда необходимо масштабировать скорость ввода из обработчика манипляции и использовать произвольные значения для замедления. Следующие значения являются типичными для различных сценариев, когда вы передаете значения centipixel из свойств x и y структуры TOUCHINPUT обработчику манипуляций.
Сценарий | Набор свойств | Значение замедления | Типичное масштабирование входных данных скорости | Примечания |
---|---|---|---|---|
Перевод | DesiredDeceleration | 0.003f | Никакой. | Использование этого значения приведет к более длительным анимациям расстояния при использовании сенсорного ввода. |
Перевод | DesiredDeceleration | 0.001f | 1/20-я начальная скорость для сенсорных входных данных, ни для входных данных мыши | Использование этого значения будет анимировать около секунды с заданными типичными входными данными скорости. |
Перевод | DesiredDeceleration | 0.5f | Никакой | Использование этого значения дает естественное ощущение анимации на больших дисплеях Windows Touch. |
Вращение | DesiredAngularDeceleration | 0.000015f | Радианы преобразуются в градусы. | Использование этого значения приводит к более длинным анимациям поворота при использовании сенсорного ввода. |
Вращение | DesiredAngularDeceleration | 0.00001f | 1/40-й разностный поворот для сенсорных входных данных, ни для ввода мыши | Это значение находится в радианах, поэтому необходимо использовать очень небольшие значения замедления и скорости. |
Вращение | DesiredAngularDeceleration | 0.000005f | Никакой | Это значение имеет естественное ощущение на больших дисплеях Windows Touch. |
Анимация гладкого объекта с помощью свойства требуемого смещения
В некоторых случаях не требуется использовать входные данные пользователя для смещения объектов, но объект по-прежнему будет плавно анимироваться на экране. В этом случае можно использовать свойства смещения в обработчике инерции, чтобы процессор вычислял начальную скорость перемещения объекта по экрану.
Управление положением объекта с помощью эластичных границ
После того как у вас есть объект, перемещающийся по экрану, вы, как правило, хотите, чтобы он остановился, прежде чем он выходит за пределы точки зрения пользователя. Обработчик инерции обеспечивает эту функциональность через границу и свойства эластичных полей. На следующем рисунке показаны различные свойства границ и полей в типичном приложении.
снимок экрана
Вы задаете левые, верхние, правые и нижние границы и эластичные поля для приложения, а обработчик инерции будет обрабатывать элементы пользовательского интерфейса в пределах границ. Когда объект достигает эластичного поля, он замедлится, пока не достигнет границы. Он никогда не будет оставить это поле снова во время инерции, но по-прежнему будет двигаться, пока перпендикулярный компонент инерции объекта уменьшается до 0. На рисунке круг перемещается к левой эластичной границе. Сплошная стрелка показывает направление манипуляции; сплошной круг является начальной позицией объекта; сплошная стрелка — это изменения, внесенные до того, как круг попадает в эластичное поле; Пунктирная стрелка показывает, где обработчик инерции управляет кругом после того, как он ударит по полям; и тиреные круги показывают, где останавливается объект.
Заметка
Задание свойств поля перемещает границы наружу. Например, если для верхней границы задано значение 50, а затем для верхней эластичной границы задано значение 10, то верхняя граница будет эффективно 40.
Связанные разделы