home/ atoms/ noise-radius-perturbation

Adding Perlin noise to a spiral's radius each step produces organic, irregular loop shapes

A clean spiral is drawn by iterating an angle from 0 to a large value (e.g. 1440° for four turns) and growing the radius smoothly on each step. To make it organic, add a Perlin-noise offset to the radius at each step: thisRadius = radius + (noise(radiusNoise) * amplitude) - halfAmplitude, advancing the noise coordinate by a small increment (e.g. radiusNoise += 0.05) per iteration. Because the noise coordinate moves only a little each step, the perturbation is smooth rather than jagged; centering the offset (noise() * range - range/2) keeps it symmetric around the base radius so the spiral wobbles without drifting or breaking its overall structure. Raising the noise increment (e.g. 0.05 → 0.5) samples the noise field in larger jumps, making the wobble faster and rougher. Wrapping this single parameterized procedure in an outer loop that draws ~100 spirals with randomized parameters yields a dense, cloud-like, biological-looking composition — a worked example of the ‘deconstruct, add variance, multiply’ generative workflow.

Examples

Core substitution: float thisRadius = radius + (noise(radiusNoise) * 200) - 100; with radiusNoise += 0.05 per step. Outer loop for(int i=0; i<100; i++){ float radiusNoise = random(10); ... } drawing 100 spirals, each randomizing stroke color, start angle (0–360), end angle (1440 + 0–1440), and angle step (5 + 0–3). Result: dense overlapping spirals resembling a biological texture.

Assessment

Write the inner loop (angle iteration, radius noise, x/y calculation, line drawing) for one Perlin-noise spiral in Processing pseudocode. Explain how the outer-loop version produces a visually complex result from a single spiral-drawing procedure, and predict what changes if the noise increment is raised from 0.05 to 0.5.

“I hope you agree that by the time you've reached this stage, you're starting to see something interesting emerging—something you might call generative. These shapes have a basis in mathematical seeds you've programmed, but there is enough randomness about the way they're drawn that they're taking on a form of their own.”
corpus · generative-art-a-practical-guide-using-processing-matt-pears · chunk 21
“float thisRadius = radius + (noise(radiusNoise) * 200) -100;”
corpus · generative-art-code-examples-josephfiola-genart-processing-p · chunk 42
“for(int i=0; i<100; i++){ float lastx = -999; float lasty = -999; float radiusNoise = random(10);”
corpus · generative-art-code-examples-josephfiola-genart-processing-p · chunk 43