ANIMATION VIA LES ÉQUATIONS DE ROBERT PENNER

Signaler
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013
-
Messages postés
262
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47120-animation-via-les-equations-de-robert-penner

Messages postés
262
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

ok , j'ai regardé a koi il correspondait, le a correspond a l étirement maximum, le p a l'élasticité

Cependant ma fonction permet de gérer les va et viens et la tension meme si les valeur doivent etre precise pour un resultat satisfaisant

J ai modifié la fonction de ROBERT PENNER pour kel prenne en compte le nbr de va et viens.
J'ai ajouté une fonction classic d'élasticité et de rebond.

voici le code a modifié
pour le select:

<option value="elasticKimjoa">elasticKimjoa</option>elasticClassic
<option value="elasticBounce">elasticBounce</option>
<option value="elasticClassic">elasticClassic</option>

pour l'objet transition

elasticClassic : function(t,b,c,d){
return c*(((1-Math.cos((t/=d) * Math.PI * 4)) * (1 - t)) + t)+b;
},
elasticKimjoa : function(t,b,c,d,te,bo,r){
// te=tension ,r=resistance, bo=rebont formule test
return c*(((1-Math.cos(Math.pow((t/=d),(1/(te || 1.5))) * Math.PI * (bo || 4))) * (1 - Math.pow(t,1/(t*(r || 10))))) + Math.pow(t,1/(t*(r || 10))))+b;
},
elastic: function (t,b,c,d,a,p){
t/=d;
if (!a)a=c*3;
//p=nbr de va et viens a etirement max reste tension
p=(p)?(p>1)?(c*10)/((p-1)/(d/1000)):(c*10)/(1/(d/1000)):(c*10)/(3/(d/1000));
if (a < Math.abs(c))
var s=p/4;
else
var s = p/(2*Math.PI) * Math.asin (c/a);
return (a*Math.pow(2,-10*(t)) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b);
},
elasticBounce: function (t,b,c,d,a,p){//p=bounce
var value=transitions.elastic(t,b,c,d,a,p);
if(Math.abs((value-b))>Math.abs(c))
return b+c-(value-c-b);
else return value;
}

je sais pas encore kel fonction je vais mettre dans ma librairie , j'aimerait bien pouvoir géré la tension

voila, a+
Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
Slt,

Pour l'équation 'élastique', tu as deux paramètres supplémentaires qui servent à gérer l'effet de l'animation.

function (t,b,c,d,a /!\ ,p /!\){
Messages postés
262
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

salut , je connais bien ses formules , pour les avoir utilisé dans mon propre script d'animation que je sortirais avec ma bibliothèques, qui me prend plus de temps que prévu. J'ai créer une formule d'élasticité en 'tatonant' pour permettre d'y inclure des options de résistance, nombre de va et viens, et de tension , je suis pas bon en math, et cette formule est sans doute fausse mais l'effet est pas mal , voici la fonction

elasticDown : function(t,s,e,obj){
return (e-s)*(((1-Math.cos(Math.pow(t,(1/obj.tension)) * Math.PI * obj.bounce)) * (1 - Math.pow(t,1/(t*obj.resistance)))) + Math.pow(t,1/(t*obj.resistance)))+s;
}
concernant les variables
t est le temp (compris entre 0 et 1)
s est la valeur de départ
e est la valeur d'arrivé
obj est l'objet avec les options

si un matheu pouvais me dire se kil en pense .

Pour les curieux http://www.dblog.free.fr/?act=article&art=64

bye
Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
"j'ai été obligé de rajouter un Singleton Fx.Listener"

Je ne connais pas ce singleton mais d'après son nom, c'est exactement ça. Faut créer un pseudo gestionnaire d'effets afin de supprimer les effets qui sont déjà en application.

"Animation est bien une classe vu que je l'utilise comme un constructeur."

Effectivement, j'ai lu en diagonale, toutes mes confuses.

"Le problème de gestion des timers dont tu parles est également présent dans la source que tu présentes ici."

Comme dis plus haut, ce n'est qu'une base pour l'utilisation des équations.
Afficher les 11 commentaires