Comment peut-on faire tourner un chemin d'animation elliptique d'une certaine quantité de degrés?

J'utilise ce qui suit pour obtenir la position x et y d'une entité alors qu'elle se déplace le long d'un chemin elliptique au fil du temps:

x = Math.cos(time)*width/2 y = Math.sin(time)*height/2 

Existe-t-il un moyen simple de faire pivoter l'ensemble d'une certaine quantité de degrés, par exemple 45 ou 132 par exemple?

Vous pouvez utiliser une simple transformation de rotation:

 x1 = x*cos(a) - y*sin(a) y1 = x*sin(a) + y*cos(a) 

a – est l'angle à tourner.

Cet article de Wikipedia explique en détail

Pour chaque point (x, y) que vous avez calculé avec l'équation ci-dessus, vous pouvez faire pivoter le degré theta (dans le sens inverse des aiguilles d'une montre) par l'équation suivante

  • X '= x * cos (theta) – y * sin (theta);
  • Y '= x * sin (theta) + y * cos (theta);

Où x et y sont les coordonnées d'origine avant la rotation, x 'et y' sont les coordonnées après la rotation, theta est l'angle à tourner.

Rotation de coordonnées

Oui, il suffit de faire une rotation 2D sur les x et y pour faire pivoter votre ellipse:

 xrot = x * cos(A) - y * sin(A) yrot = x * sin(A) + y * cos(A) 

Et rappelez-vous que Radians = Degrees * PI / 180 .