Thursday, March 27, 2008

Self-Organised Phyllotaxis

Like Mr Smith, I'm being a bad host, but trust me, there's some good stuff in the works. Meantime, like Smith, here's something else entirely. In this case it's a little generative sketch I recently dusted off, some source code, and a side observation about Processing culture on the web.

While at CEMA last year I was working on a project with spirals as a kind of required element. I was talking to Jon McCormack about this, when he said something like "Oh, anyone can code up a spiral. What you want to do is make a system where spirals emerge." This is a classic a-life approach, of course, but also for me seemed technically daunting. Jon pointed me to Ball's The Self-Made Tapestry as well as to the literature on spiral phyllotaxis, a fundamental structure in plant morphogenesis. Douady and Couder published a brilliant paper on this topic in 1995 [pdf], so I set about implementing their model.

It's a beautiful thing - buds, or "primordia", are spawned by a central ring of "base" points. Douady and Couder show that you can create phylotactic spirals with a model where primordia inhibit the budding process in their neighbourhood; the result is that when a primordium forms, the next one to emerge will pop out some distance away. By simply changing the growth rate and the inhibition threshhold, you get a variety of self-organised spirals, but also other less predictable complex systems traits.

As it turned out I didn't use this for the "spiral" project - more on that soon - but rediscovered it recently when I was asked to reproduce an old drawing of a sort of abstract lotus-flower structure. In the image above the bases are invisible, and the primordia are drawn as circles that expand over time - instant lotus generator (more images).

Have a play with the applet, or just grab the Processing source. Let me know if you use it, too.

Which leads me to a side point. What's become of the applets-on-the-web side of the Processing community? Maybe it's just me, but it seems to be diminishing; instead there's tons of (web-compressed) video, with relatively sparse documentation and source. Is it because of the increased interest in using Processing for generative motion graphics (and other exotic, large scale, non-applet-friendly things)? Maybe I'm over-reliant on ProcessingBlogs, which now seems to be all Vimeo, all the time. Any thoughts?

1 comment:

Mitchell said...

Quick update, I recently posted another implementation (one that looks more like the image) over on OpenProcessing.