Three 360° turnings of one arm of an Archimedean spiral.
日付
原典
Produced with the following PostScript code:
%!
.75 setgray
2 setlinewidth
280 640 moveto 0 -540 rlineto stroke
16 396 moveto 580 0 rlineto stroke
1 0 0 setrgbcolor
%%%%%%%%%%%%%%%%
% PostScript program to display an Archimedean spiral by approximating
% it with Bezier curves. Can display a double spiral (two spirals
% rotated by 180 degrees with respect to each other).
%%% Parameters:
/sepwid 100 def % width separating successive turnings of spiral
% (half this if double spiral is selected)
/incrm 11.25 def % insert a curve point after this number of degrees
/sweeps 3 def % number of 360 degree turnings to show
/centerx 280 def % horizontal coordinate of center of spiral
/centery 396 def % vertical coordinate of center of spiral
/double 0 def % change to 1 to display double spiral
/linew 3 def % increase number for thicker line
%%% Procedures:
/pi 3.1415926535898 def/radians 57.295779513082 def
/sepwid sepwid pi div 2 div def
gsave centerx centery translate linew setlinewidth
/aspiral{/prevbezy 0 def 0 0 moveto
0 incrm sweeps 360 mul{7{dup}repeat
phase add cos/costh exch def
phase add sin/sinth exch def
costh mul radians div/thcosth exch def
sinth mul radians div/thsinth exch def
thcosth sepwid mul/x exch def
thsinth sepwid mul/y exch def
/slope sinth thcosth add costh thsinth sub div def
sinth 0 gt sinth 0 eq costh -1 eq and or{/flag -1 def}{/flag 1
def}ifelse
/A exch def A 49.29348 lt A 180 gt A 196.273450852 lt and A 360
gt A 368.8301 lt and A 540 gt A 545.9907 lt and A 720 gt A
724.5217 lt and A 900 gt A 903.6281968 lt and or or or or
or{/flag flag neg def}if
incrm sub 3{dup}repeat phase add cos sepwid mul mul radians div
/prevx exch def phase add sin sepwid mul mul radians div
/prevy exch def
incrm add 3{dup}repeat phase add cos sepwid mul mul radians div
/nextx exch def phase add sin sepwid mul mul radians div
/nexty exch def
/prevdist x prevx sub dup mul y prevy sub dup mul add sqrt pi
div def
/nextdist x nextx sub dup mul y nexty sub dup mul add sqrt pi
div def
/normaliz slope slope mul 1 add sqrt def
0 eq{/prevbezx phase cos nextdist mul def}{prevbezx prevbezy
x 1 flag mul normaliz div prevdist mul sub y slope flag mul
normaliz div prevdist mul sub
x y curveto
/prevbezx x 1 flag mul normaliz div nextdist mul add def
/prevbezy y slope flag mul normaliz div nextdist mul add def}ifelse}
for stroke}def
/phase 0 def aspiral
%%% If different sweeps parameter for second spiral, define here:
%%%%%%%%%%%%%%%%
double 0 ne{/phase 180 def aspiral}if grestore
showpage
%EOF
La bildo estas kopiita de wikipedia:en. La originala priskribo estas: == Summary == Three 360° turnings of one arm of an Archimedean spiral (higher-resolution picture). Produced with the following PostScript code: <pre><nowiki>%! .75 setgray 2 setline