Phyllotaxis With Mathematica

 click to enlarge

Expanding on Fermat’s spiral, these pretty figures represent a “daisy” pattern.  Mathematically the two plots are the same.  In one case I plot circles (left) and in the other I plot diamonds (right).  The use of the irrational number φ (Phi = 1.618…), known as the Golden Ratio, is integral to the formation of these specific patterns, which can readily be observed in nature (daisies, sunflowers, pineapples, pinecones, etc.).

As it turns out, if the expansion of the spiral from the center outwards grows proportionally to φ, then an even packing of the circles or diamonds is achieved.  Nature has clearly discovered this space saving optimization.

For me, exercises like these provide a wonderfully accessible window into the relationship between math, numbers and nature.  And anybody can play!  No worries though, there is still plenty of mystery left in the end!

For those interested, here is the corresponding Mathematica code:



k = 1.;
d = 2*Pi/N[GoldenRatio];
f[t_] := k*Sqrt[t];
x[t_] := f[t]*Cos[t];
y[t_] := f[t]*Sin[t];
plotTo = 55.;
data = Table[
Graphics[{Hue[.17 – 0.00002*t],
Disk[{x[t], y[t]}, 0.8 + 0.0005*t]}], {t, 1, 2500, d}];
Show[data, PlotRange -> {{-plotTo, plotTo}, {-plotTo, plotTo}}]



k = 1.;
d = 2*Pi/N[GoldenRatio];
f[t_] := k*Sqrt[t];
x[t_] := f[t]*Cos[t];
y[t_] := f[t]*Sin[t];

c = 5.;
d = 3;
diamond[xx_, yy_, rot_, s_, h_] := Graphics[Rotate[{Hue[h], Polygon[
{{xx, yy + s*c},
{xx + s*d, yy},
{xx, yy – s*c},
{xx – s*d, yy}}]}, -1*(Pi/2 – rot)]];

(*Table of Graphics objects mapped as spirals*)

data = Table[Graphics[diamond[x[t], y[t],
(1 + 0.00025*t),
(0.15 – 0.00002*t)]],
{t, 1, 2500, d}];

(*Plot all Graphic objects together*)
plotTo = 60.;
Show[data, PlotRange -> {{-plotTo, plotTo}, {-plotTo, plotTo}}]




Fermat’s Spiral With Mathematica

With its opposing pattern, Fermat spirals are surprisingly beautiful.  They look like something you might encounter in nature and yet result from a very basic mathematical relationship.

Here’s the Mathematica code to generate them.

(*Fermat’s Spiral*)
width = 0.005;
graphColor = RGBColor[70/255, 137/255, 102/255];
k = GoldenRatio;
g[t_] := k*Sqrt[t]

PolarPlot[{-g[t], g[t]}, {t, 0, 15*Pi},
PlotStyle -> {{graphColor, Thickness[width]}, {graphColor,
Thickness[width]}}, PlotRange -> {{-12, 12}, {-12, 12}}, Axes -> False]