Deborah R. Fowler
Phyllotactic Pattern
Updated on June 22 2013
Updated with wrangles/lsystems on Sept 10 2016
Updated with more examples on July 20 2018
Updated with vop versions on Jan 19 2019
Updated with OpenSCAD and blocksCAD versions on Feb 16 2020
Updated with new videos Jan 26, Feb 13 2021 and April 15,
2022
Phyllotactic Patterns are a good start to using math for fun.
There are a number of sites describing this pattern, including
The Algorithmic Beauty of Plants, specifically Chapter 4 where I originally implemented this formula.
Other sites include:
http://www.math.smith.edu/phyllo//EXPO/ExpoIntro.html
http://www.mathsisfun.com/numbers/nature-golden-ratio-fibonacci.htm
http://demonstrations.wolfram.com/topic.html?topic=Plant+Biology&limit=20
Here is a brief description. Recently I have implemented this pattern in Houdini (multiple ways), C++/OpenGL, Python and Scratch as well as in the 90's with GL/C on Silicon Graphics Workstations (for those of you who remember what those are).
Polar to Cartesian video https://vimeo.com/404190421
Now we have adj, which is our x coordinate and opp, which is our y coordinate, thus we have ( x, y )
Suppose now that r, θ also are allowed to vary.
Where do these equations come from? Well from a paper by H Vogel 1979 in Mathematical Biosciences.
However, what this has done is reduced the problem to optimal packing on a disc.
When we substitute these equations in for r and θ it results in the phyllotactic pattern.
Implementing this in Houdini or Python
or ...
So now you have the formulas, now what? You can use just about any graphics interface/programming language as a playground.
In class (VSFX350/721) you will be implementing this in Houdini. Click here for some additional notes.
If you would like to see an implementation in
- Scratch, click here
- Python, click here
- Mel, click here
- Python in Houdini click
here
- Point Wrangle node in Houdini (VEX snippets) click here
- Equivalent of above, but
now in vops click
here
- Lsystems in Houdini, 15.5.565 hip file
- Premise A
- Rule A(i) =
+(137.508)[F(i^0.5,1,1,1)]A(i+1)
- OpenSCAD and blocksCAD
versions click
here
Here are some more examples in Houdini using vex and various nodes. For more details click here.