Mécanique d’inertie

L’inertie est utilisée pour effectuer des calculs pour l’animation du déplacement d’objets et pour activer la prise en charge de la facilité d’utilisation générique dans les applications incorporant Windows Touch. Cette section illustre les fonctionnalités suivantes activées par l’inertie.

  • Bref aperçu de la physique de l’inertie.
  • Animation d’objet lisse à l’aide des propriétés de vitesse et de décélération.
  • Animation d’objet lisse à l’aide d’une propriété de déplacement.
  • Rebond à partir des bords de l’écran à l’aide de limites élastiques.

Vue d’ensemble de la physique de l’inertie

Le processeur d’inertie utilise un modèle physique simple qui incorpore une position, une valeur de décélération et une vitesse initiale. Time est utilisé comme entrée dynamique dans le modèle pour déterminer la position actuelle d’un objet déplacé. Le graphique et la formule suivants décrivent le modèle physique utilisé pour calculer les positions des objets.

illustration montrant le graphique et la formule utilisés pour calculer les positions des objets

Dans la formule utilisée pour calculer la position actuelle (x), la vitesse initiale (v) est multipliée par le temps écoulé (t) et est réduite par le facteur de décélération (d) temps au carré. Il en résulte une décélération d’objet lisse. Dans l’illustration précédente, à la partie initiale (la plus à gauche) de la courbe, l’objet se déplace rapidement, car sa vitesse actuelle est la vitesse initiale. Dans la partie finale (la plus à droite) de la courbe, l’objet s’est complètement arrêté, car sa vitesse est 0. Les calculs de vitesse d’objet pour la vitesse x, la vitesse y et la vitesse de rotation utilisent tous cette formule pour les calculs.

Toute la distance utilisée pour le processeur d’inertie est relative. Si vous souhaitez utiliser des coordonnées d’écran, vous passez les coordonnées d’écran au processeur de manipulation (ou d’inertie) ; si vous souhaitez utiliser des coordonnées absolues, vous les transmettez au processeur que vous utilisez. Quelles que soient les valeurs que vous utilisez, le processeur de manipulation utilise des cycles d’horloge en millisecondes pour le traitement de l’heure. Ces valeurs peuvent être transmises directement au processeur d’inertie à l’aide de la méthode ProcessTime ou à l’aide de l’horodatage par défaut via des appels à Process.

Animation d’objet lisse à l’aide des propriétés de vitesse et de décélération

Vous pouvez activer l’animation fluide en interagissant directement avec le modèle physique en définissant les valeurs de vitesse et de décélération dans l’interface du processeur d’inertie, puis en appelant Process. L’appel du processus déclenche des manipulations d’objets qui, à leur tour, doivent provoquer des mises à jour de l’interface utilisateur. Les valeurs de vitesse d’objet transmises au processeur d’inertie sont généralement extraites du processeur de manipulation à l’achèvement. Votre valeur de décélération dépend de la durée pendant laquelle vous souhaitez que votre objet soit animé et des unités que vous utilisez pour vos calculs. Étant donné que les valeurs dépendent, vous devez parfois mettre à l’échelle la vitesse d’entrée à partir du processeur de maniplation et utiliser des valeurs arbitraires pour la décélération. Les valeurs suivantes sont typiques pour différents scénarios où vous transmettez des valeurs centipixel des propriétés x et y de la structure TOUCHINPUT au processeur de manipulation.

Scénario Jeu de propriétés Valeur de décélération Mise à l’échelle d’entrée de vitesse classique Notes
Traduction DesiredDeceleration 0,003f Aucun. L’utilisation de cette valeur entraîne des animations à plus longue distance lors de l’utilisation de l’entrée tactile.
Traduction DesiredDeceleration 0,001f Vitesse initiale 1/20e pour les entrées tactiles, aucune pour les entrées de souris L’utilisation de cette valeur s’animera pendant environ une seconde en fonction des entrées de vitesse typiques.
Traduction DesiredDeceleration 0,5f None L’utilisation de cette valeur donne une sensation naturelle à l’animation sur les grands écrans Windows Touch.
Rotation DesiredAngularDeceleration 0.000015f Radians convertis en degrés. L’utilisation de cette valeur entraîne des animations de rotation plus longues lors de l’utilisation de l’entrée tactile.
Rotation DesiredAngularDeceleration 0.00001f Delta de rotation 1/40e pour les entrées tactiles, aucun pour les entrées de souris Cette valeur étant en radians, vous devez utiliser de très petites valeurs de décélération et de vitesse.
Rotation DesiredAngularDeceleration 0.000005f None Cette valeur a une sensation naturelle sur les grands écrans Windows Touch.

 

Animation d’objet lisse à l’aide de la propriété Déplacement souhaité

Dans certains cas, vous ne souhaitez pas utiliser l’entrée de l’utilisateur pour le déplacement d’objet, mais vous souhaitez toujours qu’un objet s’anime en douceur sur l’écran. Dans ce cas, vous pouvez utiliser des propriétés de déplacement dans le processeur d’inertie pour que le processeur calcule la vitesse initiale de déplacement d’un objet sur l’écran.

Contrôle de la position de l’objet à l’aide de limites élastiques

Une fois que vous avez un objet qui se déplace sur l’écran, vous voudrez généralement qu’il s’arrête avant qu’il ne sorte du point de vue de l’utilisateur. Le processeur d’inertie active cette fonctionnalité via les propriétés de limite et de marge élastique. L’image suivante illustre les différentes propriétés de limite et de marge dans une application classique.

capture d’écran montrant les propriétés de limite et de marge élastique

Vous définissez les limites et les marges élastiques gauche, supérieure, droite et inférieure pour votre application, et le processeur d’inertie gère la conservation des éléments d’interface utilisateur dans les limites. Lorsqu’un objet atteint une marge élastique, il ralentit jusqu’à atteindre la limite. Il ne quittera plus jamais cette marge pendant l’inertie, mais se déplacera toujours jusqu’à ce que le composant d’inertie perpendiculaire de l’objet décélère à 0. Dans l’illustration, un cercle est déplacé vers la limite élastique gauche. La flèche pleine indique le sens de la manipulation ; le cercle plein est la position initiale de l’objet ; la flèche unie correspond aux modifications apportées avant que le cercle atteigne la marge élastique ; la flèche pointillée indique où le processeur d’inertie manipule le cercle après avoir atteint la marge ; et les cercles pointillés indiquent l’endroit où l’objet s’arrête.

Notes

La définition des propriétés de marge déplace les limites vers l’extérieur. Par exemple, si votre limite supérieure est définie sur 50 et que vous définissez la marge élastique supérieure sur 10, votre limite supérieure devient effectivement 40.

 

Gestion de l’inertie dans le code non managé

Inertie

Manipulations