# Building a visualization of a sunflower spiral (ii)

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.