Animer selon un cercle

Nous allons maintenant voir comment animer un élément selon un cercle.

C’est extrêmement simple, nous allons simplement utiliser time comme valeur d’angle : cette valeur s’incrémentant avec le temps, les coordonnées calculées correspondront à un point mouvant le long du cercle.

// rayon du cercle
var rayon = width / 3;

/* la vitesse désirée
   plus le nombre est bas
   plus c'est lent */
var vitesse = 0.5;

/* calcul des positions */
var x = position[0] + Math.cos( time * 2 * Math.PI * vitesse ) * rayon;
var y = position[1] + Math.sin( time * 2 * Math.PI * vitesse ) * rayon;

[x,y]

Pour aller plus loin

Comme nous l’avons vu, il existe différents paramètres : vitesse, rayon…

Mais il est possible d’aller plus loin en choisissant :

  • la position de départ (de 0 à 2π)
  • le sens de rotation
  • un nombre de tour à effectuer du début à la fin de la composition
// rayon du cercle
var rayon = width / 3;

/* nombre de tours à effectuer
sur la durée de la composition */
var nombre_tours = 2;

/* position de départ sur le cercle */
var position_de_depart = Math.PI/2;

/* situation temporelle dans la composition :
0 = première image, 1 = dernière image */
var position_ds_la_compo = time / thisComp.duration;

/* calcul de l'angle */
var angle = 2 * Math.PI * position_ds_la_compo * nombre_tours + position_de_depart;

/* calcul de la position
Le - devant l'angle du sinus permet
d'inverser la direction */
var x = position[0] + Math.cos( angle ) * rayon;
var y = position[1] + Math.sin( -angle ) * rayon;

[x,y]

En vidéo