scientificware / FXStatic

https://play.google.com/store/apps/details?id=com.fxstatique&hl=fr&gl=US
Other
0 stars 0 forks source link

Centre et Axe de transformation. #2

Open scientificware opened 3 years ago

scientificware commented 3 years ago

JDK-8234712 #53 : Add pivot properties for scale and rotation in Node, ScaleTransition and RotateTransition

Définir un centre d'homothétie pour le zoom à partir du centre des points de contact sur l'écran ou de la position du pointeur de la souris.


La description

Les propriétés de rotation et de mise à l'échelle du nœud ne permettent pas d'utiliser un pivot non central comme cela est autorisé dans les transformations Rotation et Mise à l'échelle. Cela oblige l'utilisateur à définir une telle transformation et à l'ajouter à la liste de transformation du nœud au lieu des propriétés intégrées pratiques.

Par conséquent, ScaleTransition et RotateTransition, qui agissent directement sur les propriétés de Node, ne peuvent pas non plus définir un pivot. La solution de contournement consiste à nouveau à animer les propriétés des transformations une fois qu'elles ont été ajoutées à la liste des transformations.

L'ajout de ces propriétés de pivot à Node et aux transitions serait très pratique.

Les pivots peuvent être représentés soit par un Point3D, soit par un double pour chaque axe (pivotX, pivotY, pivotZ). Points à considérer:

  1. La transformation d'échelle utilise 3 doubles chacun pour la quantité d'échelle et le pivot. La transformation Rotate utilise 3 doubles pour le pivot et un Point3D pour l'axe. Cela semble incohérent.
  2. L'utilisation de Point3D est plus concise.
  3. L'utilisation de Point3D est moins performante (par exemple, l'interpolation sur un Point3D crée beaucoup de ces objets).
  4. Le contrôle d'un seul axe est plus difficile avec Point3D car il n'expose pas ses coordonnées en tant que propriétés.
  5. L'utilisation de Point3D permet à l'utilisateur de définir une valeur nulle pour la propriété. Cela provoque déjà un NPE pour rotationAxis (je pense que null devrait plutôt être interprété comme la valeur par défaut).