Page 1 sur 1

Comparer 10 variables

Posté : 13 Fév 2018, 10:55
par Baptiste12
Bonjour, ma question peut paraître bête mais je ne trouve pas comment je peux comparer les valeur de 10 variables de façon "automatique" ( c'est-à-dire sans devoir toutes les comparer entre elles...).

Plus précisément et en application :

a = 2;
b = 1/5;
c = 8;
d = a*2;
e = 7.86;
[....]

Je veux maintenant qu'une variable "XMIN" soit égale à la valeur la plus petite proposée. :)
Auriez-vous une formule magique ? Merci à tous.

Re: Comparer 10 variables

Posté : 13 Fév 2018, 11:26
par Nicolas DAVID
Déclarer les variables puis utiliser la fonction Math.min dans les champs d'expression de la propriété :
a = 2;
b = 1/5;
c = 8;
d = a*2;
e = 7.86;
Math.min(a, b, c, d, e);

Cela va renvoyer la plus petite valeur de ta matrice, ici 0,2 (qui est égal à 1/5).

Espérant que cela a pu aider.


Nicolas.

Re: Comparer 10 variables

Posté : 13 Fév 2018, 11:38
par Baptiste12
Euh je me sens un peu bête de ne pas avoir trouvé tout seul...ça me semble facile maintenant...
Merci à toi !

Re: Comparer 10 variables

Posté : 13 Fév 2018, 12:10
par Baptiste12
J'ai une seconde question :

Actuellement, j'ai un calque CIBLE et une dizaine de calques qui s'appellent "SUIVEUR01", "SUIVEUR02", "SUIVEUR03", ...
Je souhaiterais connaitre la distance la plus petite entre la cible et un suiveur.
Je vais donc créer une variable pour chaque distance entre chaque SUIVEUR et CIBLE avec la syntaxe suivante : length (pos SUIVEUR[XX], pos CIBLE) et les comparer ensuite avec Math.min
Mais si demain, je rajoute 8 calques "SUIVEUR" supplémentaires, comment je peux automatiser ça sans créer d'autres variables et devoir les ajouter ensuite à ma fonction Math.min

N'y a t-il pas une fonction capable de rechercher des calques par leurs noms (tous les "SUIVEUR"), d'ensuite en extraire leur position et la distance avec le calque "CIBLE" pour enfin les comparer et ressortir la plus petite d'entre-elles ?

Re: Comparer 10 variables

Posté : 13 Fév 2018, 13:00
par Nicolas DAVID
Sans doute que oui mais dans ce cas s'adresser directement à Dan Ebberts ;-)

Nicolas.

Re: Comparer 10 variables

Posté : 13 Fév 2018, 13:35
par Baptiste12
Il doit bien y avoir quelqu'un ici qui sache comment faire ;)
J'en appelle à votre bon cœur ! :)

Re: Comparer 10 variables

Posté : 13 Fév 2018, 15:59
par kana
Je pense qu'il faut passer par une boucle pour tester le nom de tes layers, et à l'aide d'un split par exemple, tu regardes si le layer s'appelle Suiveur, et si oui alors tu extrais la position.

Par exemple tu appelles tes layer Suiveur#01, tu fais un name.split("#")[0] -> et tu testes s'il s'appelle bien suiveur, si oui, tu récupères sa position.

Bon pour ça il faut maitriser un peu les boucles, mais ça doit pas être bien compliqué.

Re: Comparer 10 variables

Posté : 13 Fév 2018, 16:05
par Baptiste12
Merci pour votre aide.
Pour information, j'ai contacté Dan Ebberts qui m'a envoyé ça :

Code : Tout sélectionner

myMin = 999999999;
p = thisComp.layer("CIBLE").position;
for (i = 1; i <= thisComp.numLayers; i++){
  if(thisComp.layer(i).name.indexOf("SUIVEUR") > -1){
    myMin = Math.min(myMin,length(thisComp.layer(i).position,p));
  }
}
myMin


Il va falloir maintenant que je me documente pour pouvoir comprendre ce code car il marche à la perfection !
Merci à vous !

Re: Comparer 10 variables

Posté : 13 Fév 2018, 16:22
par kana
bah en gros c'est plus ou moins ce que je t'expliquais, sauf qu'il fait pas de split du coup (et que dan est trop fort donc il t'a écris l'expression !!)
-> mais t'as fait comment pour le contacter ? Je savais pas qu'il répondait ^^

En gros il fait une boucle du coup, où il teste tous tes layers.
pour if(thisComp.layer(i).name.indexOf("SUIVEUR") > -1)
thisComp.layer(i).name.indexOf("SUIVEUR") retourne 0 si ton layer commence par "suiveur" (=0 ça veut dire qu'il est en 1ere position)

Du coup s'il commence par suiveur, c'est égal à 0, s'il contient le mot suiveur il sera supérieur à 0
Donc s'il contient le mot suiveur, ce sera superieur à -1,

exemple d'indexOf

Ensuite il calcule la distance avec le length, puis le compare à la précédente valeur de mymin, pour garder seulement la valeur mini

Re: Comparer 10 variables

Posté : 22 Fév 2018, 09:57
par Baptiste12
Ah merci pour l'explication !
Et bien je l'ai contacté sur son adresse email, tout simplement ;)
Après il suffit de speaker very well English ! ;)