formes de bruits
################
wiggle()
********
``wiggle( fréquence, amplitude )`` prend deux paramètres et renvoi un nombre non explicitement borné.
.. raw:: html
.. code-block:: javascript
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.
.. raw:: html
version courte
==============
.. code-block:: javascript
[transform.position[0]+random()*200-100,transform.position[1]+random()*200-100]
version longue
==============
.. code-block:: javascript
/* 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 :
.. image:: images/noise-time.png
.. raw:: html
version courte
==============
.. code-block:: javascript
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
==============
.. code-block:: javascript
/* 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::
.. image:: images/noise-vs-random.png