Algorithmic worlds










Search blog posts



Next posts

2009-12-31 Jim Soliven

2009-12-29 An animation

2009-12-28 New comment engine

2009-12-20 A new type of piling

2009-12-18 Jonathan McCabe

2009-12-13 Fractalish photography

2009-12-12 Aerial tilt-shift photography

2009-12-11 Janet Waters

2009-12-10 Digital patina

2009-12-08 Pattern piling with feedback

Previous posts



December 20th 2009

A new type of piling

I mentioned in the previous post that I wanted to speak a bit more about Jonathan McCabe's Flickr set Relax Implode. Look at the picture below.

Digital image by Jonathan McCabe

Jonathan McCabe, Relax Implode 257 (2009), digital image.

First, it is clear that it is constituted of a pattern repeated at various scales. The basic pattern looks roughly like what you obtain from Perlin noise, when you color in black the regions where Perlin noise is negative and in white the regions where it is positive, see the picture below.

Perlin noise

Perlin noise. The region where the Perlin noise function returns a negative value have been colored in black, while the regions where it is positive have been colored in white.

What is interesting is how the smaller patterns are arranged. Though they display roughly the same shapes as the large scale pattern, they are such that they fill the regions left uniform by the larger pattern.

I though a bit about how to draw something similar with my algorithms, and here is what I came up with. Suppose that the "patterns" are continuous real functions defined on the plane, returning an "index" value between -1 and 1. Suppose that i1 is the value of the index returned by the largest pattern, and i2 is the value of the index returned by the second largest pattern. How can we merge them so that we can draw something like McCabe's picture? Roughly, the idea is that when the large pattern returns a value close to zero, we want the effect of the small pattern to be negligible. One way to achieve this is to pile the pattern 2 on the pattern 1 as follows: i = i1 + i1*i2, where i is the index obtained by piling the two patterns. Once we have piled a few copies pattern of the pattern (apparently McCabe uses only three copies), we can again color black the regions where the index is negative and white the regions where it is positive. The smaller patterns will fill the regions left uniform by the larger patterns.

Of course, the simple formula I sketched above doesn't really work as it stands, you have to tweak it by including some factors and powers to get aesthetically pleasant results, and they actually depend on which pattern you're trying to pile. But it really provides a new way of piling patterns. Here is an example.

Algorithmic work by Samuel Monnier


Unlike what you may think, this image has only two colors. The gray parts come only from the antialiasing of small scale patterns. Arguably, it doesn't look very much like McCabe's pictures: his patterns are more densely packed, and my image use many more scaled patterns. But copying is not the aim here. Thanks to the object oriented programming available since Ultra Fractal 5, I can now easily use this type of piling with any of my pattern generator. That's a lot to explore... 20091218-1 and 20091219-1 also use this new piling technique.

comments powered by Disqus
Copyright S.Monnier 2009-2016. Bookmark or share