> with(plots): #Growpts shows a single picture (plot) of n seeds (points) distributed at #TurnperSeed (a numberbetween 0 and 1) which is the fraction of 1 turn between #one seed and the next, > growpts:=(n,TpS)->growpts1(n,TpS,POINT): growpts1:=proc(n,TurnperSeed,symb) local i,a,r,s,phi2pi; s:=null; phi2pi:=TurnperSeed*2*Pi; listplot([seq([sqrt(n-i)*cos(phi2pi*i),sqrt(n-i)*sin(phi2pi*i)],i=1..n)], style=POINT,axes=NONE,scaling=CONSTRAINED,symbol=symb) end; #Here is a seed-head with Pi turns between each seed. #Since Pi=3.14159>1, it is the same as 0.14159 turns per seed. #Note how there are 7 radial arms (corresponding to 22/7 for Pi) near the centre #and the next set of radial arms are 113 arms with seeds placed 16 arms apart #(since the next best approximation to Pi is 3+16/113=355/113). > growpts(1000,Pi); #Here we take a single Turns-per-seed value and keep adding a new seed #(at the centre) showing the seed head growing up to n seeds finally. #The plots are animated to show the growing process: > seedplot := proc(n, ratio) display([seq(growpts1(i, ratio, CIRCLE), i = (1 .. n))], insequence = true, style = point, scaling = constrained, axes = NONE) end proc; #Here is 100 seeds at Phi =1.618.. turns per seed (which is the same as #Phi-1=0.618..=phi turns per seed): > seedplot(100,(sqrt(5)-1)/2);