Voir le flux RSS

Blog de Gilles Vasseur - Pascal et compagnie

[Actualité] Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques

Noter ce billet
par , 24/01/2019 à 16h50 (1454 Affichages)
Continuons à explorer quelques fonctions utiles pour les fonctions d'easing que nous cherchons à implémenter.

Les fonctions à base de fonctions sinusoïdales font appel, selon le besoin, au sinus ou au cosinus de la valeur en cours à appliquer au point d'arrivée. Le cosinus sera utilisé pour l'accélération positive alors que le sinus le sera pour la décélération.

En fait, ce qui est intéressant dans ces fonctions, c'est qu'elles sont périodiques (T = 2 * Pi). Dans l'intervalle entre - Pi et + Pi, elles prennent toutes les deux, avec un décalage de Pi / 2, des valeurs situées entre -1 et +1, ce qui correspond aux valeurs que nous cherchons pour nos interpolations !

Voici les fonctions telles que nous les définirons :

Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
function TMainForm.EaseInSine(AStart, AChange, AStep: Single): Single;
// *** INSINE ***
begin
  Result := - AChange * cos(AStep / fDuration * Pi / 2) + AChange + AStart;
end;
 
function TMainForm.EaseOutSine(AStart, AChange, AStep: Single): Single;
// *** OUTSINE ***
begin
  Result := AChange * sin(AStep / fDuration * Pi / 2) + AStart;
end;
 
function TMainForm.EaseInOutSine(AStart, AChange, AStep: Single): Single;
// *** INOUTSINE ***
begin
  Result := - AChange / 2 * (cos(AStep / fDuration * Pi) - 1) + AStart;
end;
 
function TMainForm.EaseOutInSine(AStart, AChange, AStep: Single): Single;
// *** OUTINSINE ***
begin
  if AStep < fDuration / 2 then
    Result := EaseOutSine(AStart, AChange / 2, AStep * 2)
  else
    Result := EaseInSine(AStart + AChange / 2, AChange / 2, AStep * 2 - fDuration);
end;

Comme précédemment avec les fonctions à base de degrés de polynômes, nous n'avons prévu que trois paramètres en entrée, laissant la durée (fDuration) être gérée par l'application appelante.

Finalement, ces fonctions ne diffèrent guère dans leur forme des fonctions déjà implémentées : les puissances ont cédé la place aux fonctions trigonométriques, voilà tout ! Nous verrons, à quelques détails près qui tiennent à des valeurs exclues pour certaines fonctions ou à certaines singularités des effets désirés, que notre schéma de départ est applicable la plupart du temps.

Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog Viadeo Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog Twitter Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog Google Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog Facebook Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog Digg Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog Delicious Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog MySpace Envoyer le billet « Les interpolations et fonctions d'easing avec Lazarus VI - Les fonctions à base de fonctions trigonométriques » dans le blog Yahoo

Mis à jour 25/01/2019 à 07h44 par gvasseur58

Catégories
Free Pascal , Lazarus , Graphisme

Commentaires