Diffusion Limited Aggregation

My main Grasshopper development these days is Kangaroo, which is nearing a beta-release, but in the meantime here's another little bit of physics based messing around from a while back that I felt like sharing.
DLA is a simple algorithmic model of a type of fractal growth that produces dendritic forms which occur frequently in both living and non-living nature, introduced in 1981 by Witten and Sander in this paper(pdf).
It has become quite popular as a generative design tool in recent years.
The forms produced are similar to certain lichens, corals, crystals, brains, veins, rivers, tree roots, etc...
In its basic form it is remarkably simple - Starting with some seed points, particles are introduced one at a time, then they wander around randomly until touching part of the existing cluster, at which point they stick to it and the process repeats.
As growth this way can be rather slow I implemented a few features to speed things up, such as wrapping the boundaries of the space, having an adaptive boundary from which the particles start, and an optional gravity pulling particles in towards the cluster..
The script I wrote works in 2D or 3D, and you can grow your dendrites on whatever starting geometry you choose. There are also a few options for different physical forces to shape the growth.
Have fun!
DLA.ghx (download the one below for compatibility with the latest Grasshopper version)
**Update May 2013**
Due to changes in Grasshopper since the script above was first shared, it no longer runs in the current version. Here's an updated version of the script:
  • Vittorio Menna

    great... thanx daniel!
  • ddelgiu

    Daniel, it looks like awesome!!!
  • Andrea Graziano

    thx daniel!!
  • Tudor Cosmatu

    amazing! but still looking forward to test the kangoroo beta-release! :P thx!
  • taz

    Daniel, you've got to vein the letters!

    n-e-r-v-o-u-s

    Fun stuff!
  • Daniel Piker

    Thanks guys, glad you like it.
    Taz - Yeah, their work is really nice and was one of my inspirations for trying DLA in the first place. They have made several cool variations on the algorithm. I think something like this would be mainly a question of having the 'Proximity' setting become lower whenever the particle was inside the letter shape. Their venation stuff is apparently based on this paper
  • taz

    It's also interesting to see how with multiple seeds there's a boundary "seam" effect.
    Both example cases that you linked too (with multiple discrete proximity zones) are way cooler than just a regular typeface.
  • taz

    vein width looks fun too...

    From the paper:

    r^n_parent = r^n_child1 + r^n_child2

    In the original formulation of Murray’s law, n = 3
  • Arthur Mamou-Mani

    Thanks Daniel!
    Looking forward to the release.
  • Stuart Fingerhut

    awesome share
  • Hatice Dayıoğlu

    Hi,
    I am in the beginning of learning grasshopper and I was exploring your definition. I found it very interesting and I tried to change the things in it, but whatever I try the points move towards the origin. For example, even I define the points in another place, particles are trying to go towards origin. Is there a problem with that or I misunderstood the logic?
    Thanks in advance!

  • Muhammad Hissaan Awaiz

    Hey,

    I am having the same problem. The DLA starts from the origin. I cant control the seed points.

    Thank you for the beautiful DLA script.

    best,

    Hissaan.

  • Joyce Yang

    Hi,

     

    Thank you for the awesome DLA script. I am wondering how to set my own boundary / control the seed points instead of having it running from the origin ? Thanks!!

  • Aditya Patil

    hi..

    DLa dosent run with ghx 0.9xxx...

    can you update it plz ?

  • JW

    Hello, Can you please update this for ghx 0.9 Thank you!!

  • Sarah Shuttleworth

    Hi thanks for sharing this script, however I am trying to edit it so it will go towards an attractor (eg: food source) and as it grows the older parts die off (like slime mould) Any suggestions? Sorry I am quite new to ghopper. Thank you!

  • Andreas Schiffer

    Hi I'm new in working with Grasshopper and have a Question about your Script. Is it possible to let it work on an Surface? If Yes hw i can do it, I tried but cant figure it out. Or maybe is there another Script which can do that?

  • Diego Mascareño

    Hi Daniel, for some reason the VB component gives me runtime errors regarding namespace importing, any clue about what may be wrong?

  • Vicente Gasco

    Is this suppose to work with the latest version? It seems to run but it doesn't appear in rhino.

  • Daniel Piker

    Hi Vicente, yes - I checked and the updated script above still works with the current version of Grasshopper. Could it be something in your preview settings? (from the GH display menu)