Processing > Assouplissement

1.  Vitesse fixe

1.1  Vitesse fixe pour une variable/1D

courantela valeur courante
ciblela valeur cible
vitessela vitesse du changement
float distance = abs(cible - courante);
if ( courante < cible ) {
        courante = courante + min(distance,vitesse);
} else {
        courante = courante - min(distance,vitesse);
}

1.2  Vitesse fixe 2D

xla position horizontale courante
yla position verticale courante
xCiblela position horizontale cible
yCiblela position verticale cible
vitessela vitesse du changement

float radians = atan2( yCible-y , xCible-x );
float distance = dist( xCible , yCible , x , y );
x = cos(radians) * min( vitesse , distance ) + x;
y = sin(radians) * min( vitesse , distance ) + y;

1.3  Inverser la direction

vitesse = vitesse * -1;

2.  Vitesse proportionnelle

2.1  Vitesse proportionnelle pour une variable/1D

courantela valeur courante
ciblela valeur cible
facteurle facteur d'assouplissement (float entre 0 et 1)
courante = (cible - courante) * facteur + courante;

2.2  Vitesse proportionnelle 2D

xla position horizontale courante
yla position verticale courante
xCiblela position horizontale cible
yCiblela position verticale cible
facteurle facteur d'assouplissement (float entre 0 et 1)
x = (xCible - x) * facteur + x;
y = (yCible - y) * facteur + y;

3.  Vitesse élastique

3.1  Vitesse élastique pour une variable/1D

courantela valeur courante
ciblela valeur cible
vitessela vitesse accumulée
kpremier paramètre de l'élasticité (entre 0 et 1)
ddeuxième paramètre de l'élasticité (entre 0 et 1)
vitesse = d * (vitesse + k * (cible - courante));
courante = courante + vitesse;

3.2  Vitesse élastique 2D

xla position horizontale courante
yla position verticale courante
xCiblela position horizontale cible
yCiblela position verticale cible
xVitessela vitesse accumulée
yVitessela vitesse accumulée
kpremier paramètre de l'élasticité (entre 0 et 1)
ddeuxième paramètre de l'élasticité (entre 0 et 1)
xVitesse = d * (xVitesse + k * (xCible - x));
x = x + xVitesse;

yVitesse = d * (yVitesse + k * (yCible - y));
y = y + yVitesse;

4.  Déplacement circulaire

radians = radians + vitesse;
x = cos(radians) * rayon + centreX;
y = sin(radians) * rayon + centreY;