formes de bruits

wiggle()

wiggle( fréquence, amplitude ) prend deux paramètres et renvoi un nombre non explicitement borné.



transform.position.wiggle(1,20);

// ou simplement

// changement 1 fois par seconde
// amplitude 20
wiggle(1,20)

// changement 50 fois par seconde
// amplitude 20
wiggle(50,20);

random()

random() renvoie un nombre de 0 à 1.



version courte

[transform.position[0]+random()*200-100,transform.position[1]+random()*200-100]

version longue

/* on récupère la position en x et y
de notre élément avant l'exécution
de l'expression */
var x_au_depart = transform.position[0];
var y_au_depart = transform.position[1];

// on prend deux nombres entre **0 et 1**
var nombre_au_hasard_1 = random();
var nombre_au_hasard_2 = random();

var x_en_sortie = nombre_au_hasard_1 // 0 à 1
                  * 200 // 0 à 200
                  - 100 // -100 à 100
                  + x_au_depart;

var y_en_sortie = nombre_au_hasard_2 // 0 à 1
                  * 200 // 0 à 200
                  - 100 // -100 à 100
                  + y_au_depart;

// la position est un tableau [x,y]
// donc je termine mon expression par un tableau [x,y]
[x_en_sortie,y_en_sortie]

noise()

noise( n ) renvoie un nombre de -1 à 1.

Note

noise( n ) prend un paramètre n. L’idée est de passer un paramètre linéaire comme time. À cette courbe dont la progression est linéaire, correspondra une courbe horizontale présentant un bruit :

../_images/noise-time.png


version courte

var x = transform.position[0] + Math.sin ( index * Math.PI / 6 ) * ( index * 25 ) + noise ( time * 2 + index/25 ) * 50;
var y = transform.position[1] + Math.cos ( index * Math.PI / 6 ) * ( index * 25 ) + noise ( time * 2 + index/25 + 200 ) * 50;

[x,y]

version longue

/* on récupère la position en x et y
de notre élément avant l'exécution
de l'expression */
var x_au_depart = transform.position[0];
var y_au_depart = transform.position[1];

/* calcul du positionnement en spiral selon l'index du calque */
var x_spirale = Math.sin ( index * Math.PI / 6 ) * ( index * 25 );
var y_spirale = Math.cos ( index * Math.PI / 6 ) * ( index * 25 );

/* bruit
à noter qu'on utilise l'index que l'on divise pour conserver une proximité entre les différents éléments */
var bruit_x = noise ( time * 2 + index/25 ) * 50;
var bruit_y = noise ( time * 2 + index/25 + 200 ) * 50;

var x = x_au_depart
     + x_spirale
     + bruit_x;
var y = y_au_depart
      + y_spirale
      + bruit_y;

[x,y]

Note

../_images/noise-vs-random.png