This block experiments SimplexNoise (see also 1). More particularly, how to produce distincts noise values from the same coordinates.
Work initiated by this block from elenstar, Drawing Vector Field, and the outstanding Neonflames.
In this block, I use SimplexNoise to produce each tentacle’s path. The challenge was to compute distincts tentacles from one unique non-changing central point. It was challenging (for me) because all the others experiments I’ve done with SimplexNoise use x- and y- coords to produce distincts behaviours. The way I’ve used SimplexNoise doesn’t suit my needs because all tentacles start from the central point, wich eventually produces the same path again and again. To overcome this issue, I influence the noise production with each tentacle’s rank (see loc. /*0*/
, where the 3rd param.’s value depends on it). Conceptually speaking, I imagine that each tentacle has its own rank-based shift, which uses a particular region of the noise field. What is important is that the shift is high enought to use far enought regions of the noise field. If the shift is too small, then the noises/tentacles will still remain more or less the same.
Another thing I’ve learnt is that the produced noise values are not uniformaly distributed. This is obvious, but I missed it. The SimplexNoise is an efficient way to produce white noise, which, by definition, is centered on 0. This impacts the code at line /*1*/
, where I multiply by 2, and leads to an angle within the too large [-2PI, 2PI] interval. With this tweak, the noise field makes tentacles spreading in all directions. Without this tweak, the noise field tends to go the the right (around the 0° direction), and tentacles tend to spread only toward the right side of the root.