Absolutely love this, so much so, I took your original program and converted it to the Amstrad CPC (well within the constraints of the screen).
Here's the code for Amstrad CPC users if they wish to recreate it, sticking to 80 characters per line.
1 MODE 1:S=SIN(0.03):C=COS(0.03):X=260:Y=0:U=0:V=1::INK 0,0:INK 1,6:INK 2,24
2 INK 3,26:FOR A=80 TO 1200:X=X+U:Y=Y+V:K=SGN(COS(A/45)*COS(A*0.0138))
3 T=U:U=U*C-K*V*S:V=V*C+K*T*S:Z=24-A MOD 10:FOR B=-Z TO Z:R=1-80/A
4 P=1+(INT(3*ABS(COS(B*0.3+((A\4) MOD 2)*PI/2+0.4)))=A MOD 4)-(ABS(B)>16)
5 PLOT 2*INT(X+R*B*V),2*INT(Y-R*B*U),P AND 3:NEXT B:NEXT A:ORIGIN 320,253:K=190
6 FOR J=0 TO K:R=(200-80*COS(J*3*PI/K))*(0.8+0.5*COS(J*13*PI/K)*COS(J*13*PI/K))
7 FOR I=0 TO R STEP 5.8
8 P=INT(1.3+(I/R)-((J\20)=4)*(2*((I\15)=3)+1)-((J\12)=14)*((I\30)=3))
9 S=SIN(J*PI/K):C=COS(J*PI/K):V=8*SIN(I/16):PLOT(I*S+V*C)/2,(I*C+V*S)/2,P AND 3
10 PLOT (-I*S-V*C)/2,(I*C+V*S)/2,P AND 3:NEXT I:NEXT J