Polyspiral: Difference between revisions

no edit summary
mNo edit summary
No edit summary
Line 149:
}
}</lang>
 
=={{header|PARI/GP}}==
In this version function plotpspiral() was translated from Java and J, plus my own plotline() function was used.
Some tweaks and options were added to make it reusable and outputting differently looking polyspirals.
[[File:Polyspiral1.png|100px|right|thumb|Output Polyspiral1.png]]
[[File:Polyspiral2.png|100px|right|thumb|Output Polyspiral2.png]]
[[File:Polyspiral3.png|100px|right|thumb|Output Polyspiral3.png]]
[[File:Polyspiral4.png|100px|right|thumb|Output Polyspiral4.png]]
 
{{Works with|PARI/GP|2.7.4 and above}}
 
<lang parigp>
\\Polyspiral (a spiral made of multiple line segments)
\\ 4/15/16 aev
\\ plotline(): Helper function - plot the line from x1,y1 to x2,y2.
plotline(x1,y1,x2,y2,w=0)={plotmove(w, x1,y1);plotrline(w,x2-x1,y2-y1);}
 
\\ plotpspiral() - translated from Java and J using my own plotline() function.
plotpspiral(size,lim,ai,d,di)={
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;\\from J OK!! the best
a=air;
for(i=0, lim,
x2=x1+cos(a)*d; y2=y1-sin(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; other parameters are self explanative.
\\ 4/15/16 aev
polyspiral(size,lim,ai,d,di)={
plotinit(0);
plotcolor(0,3); \\blue
plotscale(0, -size,size, -size,size);
plotmove(0, 0,0);
plotpspiral(size,lim,ai,d,di); \\v#23
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(100000,100000,0.03,3,2);\\Polyspiral4.png
}
</lang>
 
{{Output}}
 
<pre>
 
> polyspiral(1500,1500,0.25,9,5); \\Polyspiral1.png
*** Polyspiral, size=1500 lim=1500 ai=0.250 d=9 di=5
> polyspiral(1500,1500,0.25,3,2); \\Polyspiral2.png
*** Polyspiral, size=1500 lim=1500 ai=0.250 d=3 di=2
> polyspiral(10000,10000,0.03,3,2); \\Polyspiral3.png
*** Polyspiral, size=100000 lim=100000 ai=0.030 d=3 di=2
 
> polyspiral(100000,100000,0.03,3,2); \\Polyspiral4.png
*** Polyspiral, size=100000 lim=100000 ai=0.030 d=3 di=2
 
</pre>
 
=={{header|zkl}}==
Anonymous user