This repo is a collection of Generative Art scripts.
Simplex Noise (Code)
Open Simplex noise provides random, but smooth noise in up to 4 dimensions. We can create perfectly looping randomness without directional artifacts (appearance of stopping and reversing) by traversing a 4D hyper-circle.
High resolution sampling is powered by this optimized version using jit compilation via Numba.
Circle Packing (Code)
To densely pack circles, this algorithm stores a grid of points. At each point a the minimum distance to another circle is stored. When plotting a circle, the canvas grid is updated at each point that is closer to the current circle than what is already stored at that point.
After some random seed iterations, other circles are added the maximum distance stored in the canvas grid with the maximum allotted radius.
Pixel Sorting (Code)
Randomly select a 'seed' pixel on each row. Increase the sorting range to the left and right so long as the left and right pixels are within a prescribed tolerance of the seed pixel, then sort the selection.
Pixel Clustering (Code)
This method is inspired by Sherrie Levine's piece titled Meltdown.
Randomly select 12 'palette' pixels from an image. Select another larger set of 'training' pixels. Match each pixel in the training set with a pixel in the palette by closest Manhattan distance. Nudge the palette pixel a small step towards each paired pixel.
The maximum pair distance converges when this process is repeated over many iterations.
After some more learning, K means clustering is a faster alternative to this method. Instead of nudging each point a small distance, just set each point to the mean of all matching points. It converges much faster.