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.