So, Processing seems to be the most relevant language to code the sunflower spiral in. The calculation uses the Golden Angle (137.5°), which can be calculated in radians as follows:

angle = PI * (3.0 - sqrt(5.0))

Here is the code in Processing:

public void setup() {
size(600,600);
}
public void draw() {
background(255);
translate(width*0.5, height*0.5);
stroke(0);
float angle = PI*(3.0-sqrt(5.0)); //137.5 in radians
float r, theta, x, y;
int n = 250;
for (int i=1; i < n; i=i+1) {
r = i;
theta = i * angle;
// Convert polar to cartesian
x = r * cos(theta);
y = r * sin(theta);
ellipse(x, y, 5, 5);
}
noLoop();
}

This code draws 250 points in the spiral, performing the calculations in polar coordinates, and then converting them before drawing them using the **ellipse()** function, using a 5×5 circle. Instead of calculating the radius as** r=c√i**, we chose to use **r=i**, as this provides for a better visualization (technically an Archimedean spiral, r(k) = ck, with c=1). Now this just provides a representation of what a sunflower spiral would look like.

The thing I especially like about Processing is that by adding this line of code at the end (after **noLoop()**), I can save the visualization to file without any hassle:

saveFrame("sunflower250.png");

Here is the spiral:

If we modify the radius calculation to **r = 5*sqrt(i)**, we get a much tighter configuration, and something which better represents a sunflower. The result is the canonical Vogel spiral.

Change the configuration to **n**=500 points gives:

It is of course easy to experiment with different spirals, just by changing the equation for **r**. For example **r = pow(i,0.8)**, is a form of parabolic spiral.

### Like this:

Like Loading...

*Related*