Compartir a través de


Mecánica de inercia

La inercia se usa para realizar cálculos para animar el movimiento de objetos y para permitir la compatibilidad con la facilidad de uso genérica en las aplicaciones que incorporan Windows Touch. En esta sección se muestran las siguientes características habilitadas por inercia.

  • Una breve visión general de la física de inercia.
  • Animación de objeto suave mediante las propiedades de velocidad y desaceleración.
  • Animación de objeto suave mediante una propiedad de desplazamiento.
  • Rebotando desde los bordes de la pantalla mediante límites elásticos.

Información general sobre la física de inercia

El procesador de inercia usa un modelo de física simple que incorpora una posición, un valor de desaceleración y una velocidad inicial. El tiempo se usa como entrada dinámica para el modelo para determinar la posición actual de un objeto desplazado. En el gráfico y la fórmula siguientes se describe el modelo físico que se usa para calcular las posiciones de los objetos.

Ilustración en la que se muestra el gráfico y la fórmula usadas para calcular las posiciones del objeto

En la fórmula utilizada para calcular la posición actual (x), la velocidad inicial (v) se multiplica por el tiempo transcurrido (t) y se reduce mediante el factor de desaceleración (d) veces al cuadrado. Esto da como resultado una desaceleración del objeto suave. En la ilustración anterior de la parte inicial (situada más a la izquierda) de la curva, el objeto se mueve rápidamente porque su velocidad actual es la velocidad inicial. En la parte final (situada más a la derecha) de la curva, el objeto se ha detenido completamente porque su velocidad es 0. Los cálculos de velocidad de objetos para la velocidad x, la velocidad Y y la velocidad rotacional usan esta fórmula para los cálculos.

Toda la distancia utilizada para el procesador de inercia es relativa. Si desea usar coordenadas de pantalla, pase las coordenadas de pantalla al procesador de manipulación (o inercia); si desea usar coordenadas absolutas, las pasa al procesador que está usando. Independientemente de los valores que use, el procesador de manipulación usará tics de reloj en milisegundos para procesar el tiempo. Estos valores se pueden pasar directamente al procesador de inercia mediante el método ProcessTime o mediante la marca de tiempo predeterminada mediante llamadas a Process.

Animación de objetos suaves mediante las propiedades De velocidad y desaceleración

Puede habilitar la animación suave interactuando directamente con el modelo de física estableciendo los valores de velocidad y desaceleración en la interfaz del procesador de inercia y, a continuación, llamando a Process. El proceso de llamada desencadenará manipulaciones de objetos que, a su vez, deben provocar actualizaciones de la interfaz de usuario. Los valores de velocidad de objeto pasados al procesador de inercia normalmente se toman del procesador de manipulación tras la finalización. El valor de desaceleración dependerá del tiempo que desee que se anime el objeto y de las unidades que usa para los cálculos. Dado que los valores dependen, a veces debe escalar la velocidad de entrada desde el procesador de maniplación y usar valores arbitrarios para la desaceleración. Los siguientes valores son típicos para varios escenarios en los que se pasan valores centipixel de las propiedades x e y de la estructura TOUCHINPUT al procesador de manipulación.

Escenario Conjunto de propiedades Valor de desaceleración Escalado de entrada de velocidad típico Notas
Traducción DesiredDeceleration 0.003f Ninguno. El uso de este valor dará lugar a animaciones de mayor distancia al usar la entrada táctil.
Traducción DesiredDeceleration 0.001f Velocidad inicial del 1/20 para las entradas táctiles, ninguna para las entradas del mouse El uso de este valor se animará durante unos segundos entradas de velocidad típicas.
Traducción DesiredDeceleration 0.5f None El uso de este valor ofrece una sensación natural de animación en pantallas táctiles de Windows grandes.
Rotación DesiredAngularDeceleration 0.000015f Radianes convertidos en grados. El uso de este valor da como resultado animaciones de rotación más largas al usar la entrada táctil.
Rotación DesiredAngularDeceleration 0.00001f Delta de rotación 1/40 para entradas táctiles, ninguna para las entradas del mouse Este valor está en radianes, por lo que debe usar valores de velocidad y desaceleración muy pequeños.
Rotación DesiredAngularDeceleration 0.000005f None Este valor tiene una sensación natural en pantallas táctiles grandes de Windows.

 

Animación de objeto suave mediante la propiedad desplazamiento deseado

En algunos casos, no quiere usar la entrada del usuario para el desplazamiento de objetos, pero desea que un objeto se anime sin problemas a través de la pantalla. En este caso, puede usar propiedades de desplazamiento en el procesador de inercia para que el procesador calcule la velocidad inicial para mover un objeto a través de la pantalla.

Controlar la posición del objeto mediante límites elásticos

Después de tener un objeto que se mueve a través de la pantalla, normalmente querrá que se detenga antes de salir del punto de vista del usuario. El procesador de inercia habilita esta funcionalidad a través de las propiedades de límite y margen elástico. En la imagen siguiente se muestran las distintas propiedades de límite y margen en una aplicación típica.

captura de pantalla que muestra las propiedades de límite y margen elástico

Establezca los límites izquierdo, superior, derecho e inferior y los márgenes elásticos de la aplicación, y el procesador de inercia controlará mantener los elementos de la interfaz de usuario dentro de los límites. Cuando un objeto alcanza un margen elástico, se ralentizará hasta que alcance el límite. Nunca dejará ese margen de nuevo durante la inercia, pero se moverá hasta que el componente de inercia perpendicular del objeto se decelera a 0. En la ilustración, un círculo se desplaza hacia el límite elástico izquierdo. La flecha sólida muestra la dirección de la manipulación; el círculo sólido es la posición inicial del objeto; la flecha sólida es los cambios realizados antes de que el círculo alcance el margen elástico; la flecha discontinua muestra dónde el procesador de inercia manipula el círculo después de que alcance el margen; y los círculos discontinuos muestran dónde se detiene el objeto.

Nota

Si se establecen las propiedades de margen, los límites se moverán hacia fuera. Por ejemplo, si el límite superior se establece en 50 y, a continuación, establece el margen elástico superior en 10, el límite superior se convertirá efectivamente en 40.

 

Controlar la inercia en código no administrado

Inercia

Manipulaciones