Three 360° turnings of one arm of an Archimedean spiral.
User:AnonMoos
<p>Produced with the following PostScript code:
</p>
<pre>%!
.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</pre>