Auxin Flux Canalisation

parameterisation of step length

Each layer illustrates a change in step length

Auxin Flux Canalisation is a an algorithmic process developed by Adam Runions at the University of Calgary Algoritmic Botany group to model the morphogenesis of leaf venation. The key to the process is a simulation of the distribution and flux of auxin -a plant hormone- whose distribution contributes to many aspects of cell growth, division and specialization. The transport of auxin through a plant coordinates response to external stimuli in a way that does not require a central command system.

The beauty of the algorithm is -like flocking and other bottom-up algorithms- in the iteration of a very few simple steps. Nervous System have put together the most clear and concise description in explaining the generation of their beautiful Hyphae Lamp series. Go watch their video, it’s a great example of how an algorithm is the best representation of its own process.

Grasshopper definition canvas

Grasshopper definition canvas

This definition follows the same framework, but introduces a few additional controls suggested by a student’s project. The geometry inputs are as follows: a list of origin points from which to start the growth; a list of line segments which start at one of the origin points and indicate the initial direction of growth (one point can have multiple direction lines); a boundary curve to define the edge of growth; and a list of stimulus points which direct the growth pattern.

The slider values allow calibration of the step size per iteration; the distance threshold at which proximity to the boundary, another vein, or a stimulus point stops the growth of a vein; the probability of a node point on a vein to become a branch; the ‘view’ angle which a path uses to select the influencing stimulus points; and a maximum cap for the number of iterations to process.

Finally a few additional customizable parameters which diverge from the source algorithm but which are particularly convenient for architectural applications: a maximum slope threshold to guarantee accessibility in circulation or drainage systems; a coefficient to alter the length of the first step of a new branch; and a coefficient to prioritize the orthogonal direction of that first step over the stimulus calculated direction.

3d network

3-dimensional network

This definition has the benefit of being inherently 3 dimensional: stimulus points can be positioned at any location in space (in this case the boundary curve is treated as a straight extrusion in the z-direction). For these cases a script which offsets polylines in plan to a new polyline which can be used to create flat, roadlike surfaces is also included in the definition to overcome Grasshopper’s treatment of non-planar polyline offsets as separate, non-intersecting segments.

(ghx download REVISED Definition, 20.07.12: allows origin points within one step of the boundary curve, per request)


I have rewritten this definition to fix some errors with how the influence of stimulus points. This produces a much better diffusion effect, especially when the stimulus points are distributed in 3-dimensional space. Branching location and direction is now also linked to stimulus point distribution rather than random probability.
Additional edits have been made to reduce the number of duplicate segments and the number of cycles required.
Meanwhile I also restructured the VB.NET script, moving most of the code into functions or subs to increase legibility.
Finally additional outputs have been added, including the lists of end points and stimulus points still active at the conclusion of the script, an index value to identify which origin point a branch stems from, and a count of how many steps each branch is removed from that origin.

(.gh download UPDATED DEFINITION 21.10.12)

3 Responses to “Auxin Flux Canalisation”
Check out what others are saying...
  1. […] CQ_AuxinFlux Image by trevor.patt Auxin Flux Canalization in Grasshopper link to .gh file […]

  2. […] IMG_3037 Image by trevor.patt Auxin Flux Canalisation: each layer uses a sucessively larger step size. link to .gh file […]

  3. […] This definition constructs a half-edge datastructure from a (flattened) list of the segments alone, making this especially useful for unstructured networks such as curves split by intersection (as in the video above and the example definition) or more complex structures such as those generated by Auxin Flux Canalisation. […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: