Sunday, May 1, 2016

Grand Unified Theory of Goop

I've been interested in systems that can generate 2D textures and fields in some aesthetically satisfying sense. My feeling is that a lot of these are similar if not isomorphic: they combine various flavors of propogation, differentiation, and smoothing which at some level are mathematically similar operations.

While I'm not sure I have the motivation (or the grad students!) to digest them all and synthesize a Grand Unified Theory of Goop, I'm going to linkdump them here for future taxonification and implementation.

Let's start with a grandaddy: Alan Turing who needs no introduction. He wrote one of the pioneering papers "The Chemical Basis of Morphogenesis" available at http://www.dna.caltech.edu/courses/cs191/paperscs191/turing.pdf

Later work looked at the mathematics behind the oscillating chemical reaction known as the Belousov-Zhabotinsky reaction, which inspired Nobelist Ilya Prigogine's pioneering research into chaos theory, as well as his quite readable book Order out of Chaos.

This work has been expanded to more general reaction-diffusion systems. A great overview of the Gray-Scott reaction-diffusion equation by @mrob_27 can be found here: http://mrob.com/pub/comp/xmorphia/index.html

Likely connected to this (but not immediately obvious how) are cellular automata (CA) invented in the late 1940s by Stanislaw Ulam and John von Neumann and later popularized by Steven Wolfram in his book A New Kind of Science. But before that Rudy Rucker, noted science fiction author and mathematician, was exploring conntinuous-valued CA in this great paper: Continuous-Valued Cellular Automata in Two Dimensions. Some CA patterns are quite similar to reaction-diffusion results, suggesting an underlying connection.

Other ways of generating interesting patterns include iterated systems, of which the Mandelbrot set is probably the most famous example. Spot Draves's Electric Sheep generative artwork shows the flxibility and beauty of this approach. His "fractal flame" algorithm is superbly documented at http://flam3.com/. Another entry in the iterated systems category can be found at https://generateme.wordpress.com/2016/04/24/drawing-vector-field/ where it is (somewhat misleadingly) entitled "vector field drawing". A generalization of this using conformal mapping in the complex domain would be straightforward.

Note Drave's "fractal flame" algorithm is quite different from the "simulated flame" effect commonly used in video games and music visualization. This efficiently creates a simulacrum of flames by smoothing and shifting a random 1D input. A decent implementation can be found here: http://www.pygame.org/pcr/numpy_flames/. Also in the category of smoothed noise is the classic Perlin Noise techniquire beloved of computer graphics nerds. A great rundown of Perlin Noise generation can be found here: http://flafla2.github.io/2014/08/09/perlinnoise.html. Update: here's an even better explanation from @eevee.

Tagged: tutorial


Archives:


Topics:


RSSicon.png  RSS feed