34 lines
1.1 KiB
Text
34 lines
1.1 KiB
Text
\\Polyspiral (a spiral made of multiple line segments)
|
|
\\ 4/15/16 aev
|
|
plotpspiral(size,lim,ai,d,di,c)={
|
|
my(x1,y1,x2,y2,air=ai*Pi,a,sai=Strprintf("%.3f",ai));
|
|
print(" *** Polyspiral, size=",size," lim=",lim," ai=",sai," d=",d," di=",di);
|
|
x1=0; y1=0;
|
|
a=air;
|
|
for(i=0, lim,
|
|
if(c==0, x2=x1+cos(a)*d; y2=y1-sin(a)*d,
|
|
x2=x1-sin(a)*d; y2=y1+cos(a)*d;);
|
|
plotline(x1,y1,x2,y2);
|
|
x1=x2; y1=y2; d+=di; a+=air;
|
|
);\\fend i
|
|
}
|
|
|
|
\\ Polyspiral() - Where: ai is an angle increment (in radians), d is a distance/length,
|
|
\\ c is a direction 0/1 (clockwise/counter-clockwise); other parameters are self explanative.
|
|
\\ 4/15/16 aev Last updated: 4/18/16
|
|
polyspiral(size,lim,ai,d,di,c=0)={
|
|
plotinit(0);
|
|
plotcolor(0,3); \\blue
|
|
plotscale(0, -size,size, -size,size);
|
|
plotmove(0, 0,0);
|
|
plotpspiral(size,lim,ai,d,di,c);
|
|
plotdraw([0,size,size]);
|
|
}
|
|
|
|
{\\ Executing:
|
|
polyspiral(1500,1500,0.25,9,5); \\Polyspiral1.png
|
|
polyspiral(1500,1500,0.25,3,2); \\Polyspiral2.png
|
|
polyspiral(10000,10000,0.03,3,2); \\Polyspiral3.png
|
|
polyspiral(10000,10000,0.03,3,2,1); \\Polyspiral3b.png
|
|
polyspiral(100000,100000,0.03,3,2);\\Polyspiral4.png
|
|
}
|