Ici malgré les apparences, j'utilise toujours un bruit ou plutôt deux bruits à une dimension: un pour la position x de la bille et l'autre vous l'aurez deviné pour la position y. La nature du bruit étant sous forme de gradient, on peut directement interpreter ses valeurs comme valeur de position (il n'y aura pas de "saut" puisque le gradient est continue).
Pour gérer plusieurs billes à la fois, cela n'a rien de très compliqué: comme pour la première bille, on va placer notre position x ou y sur un endroit aléatoire de notre bruit 1D. Ainsi, les mouvements entre les billes semblent complètement différents même s'ils sont gérés sous les 2 même bruits.
Maintenant pour l'étape la plus mysterieuse pour vous j'imagine c'est celle du déplacement. Ça demande un peu plus d'abstraction mathematique mais rien de si compliqué, ça en est même eleguent: comme pour la démo "Nuages dynamique" dont le principe est complètement basé dessus, on va faire bouger notre bruit 1D dans un plan 2D. Pour être plus exacte, on génère un bruit 2D et on lit les coordonnée sur une ligne du plan dont un des axes varie dans le temps indépendement.
Certains d'entre vous pourraient penser qu'on pouvait s'en sortir avec un simple bruit 1D et un translation dans une des directions: c'est exacte. Toutefois, cela est valable seulement pour une boule. En effet, comme nous avons ici plusieurs billes placés sur le même bruit le mouvement de translation aurait créé un phénomène de periodicité entre les billes: chacune finirait par suivre le même mouvement à un moment donné.