Study: Curl Noise
2026 · 7×7 in · 0.5 mm pen

The flow direction at each step is derived from the mathematical curl of a scalar noise field — not from noise directly.

For scalar field f(x,y), the curl vector is estimated numerically:
curl_x = ∂f/∂y ≈ (f(x, y+ε) − f(x, y−ε)) / 2ε
curl_y = −∂f/∂x ≈ −(f(x+ε, y) − f(x−ε, y)) / 2ε

This vector field is divergence-free by construction — lines can never cross. Instead they naturally cluster together and separate, behaving like real incompressible fluid. The scalar field is computed with fBm, adding fractal detail to the streaming.

Key variables: noiseScale (stream scale), epsilon (gradient step — affects how sharply streams bend), octaves (1 = smooth streams, 5 = fine turbulent wisps).