%! % procedures /pagebegin { /A exch def /x A 0 get def /y A 1 get def gsave 72 dup scale x y translate 0.5 72 div setlinewidth } def /pageend { grestore showpage } def % array [x y r theta]] /circle {8 dict begin /A exch def /x A 0 get def /y A 1 get def /r A 2 get def /theta A 3 get def /c 0 def /n 64 def newpath r c cos mul x add r c sin mul y add moveto n{ /c c theta n div add def r c cos mul x add r c sin mul y add lineto } repeat end} def % array [x y a b theta] /ellipse {9 dict begin /A exch def /x A 0 get def /y A 1 get def /a A 2 get def /b A 3 get def /theta A 4 get def /c 0 def /n 64 def newpath a c cos mul x add b c sin mul y add moveto n{ /c c theta n div add def a c cos mul x add b c sin mul y add lineto } repeat end} def % colors /black { 0 0 0 setrgbcolor }def /yellow { 1 1 0 setrgbcolor } def /red { 1 0 0 setrgbcolor } def /blue { 0 1 1 setrgbcolor } def /white { 1 1 1 setrgbcolor } def % Fonts /largefont { /Times-Roman findfont 0.32 scalefont setfont } def /normalfont { /Times-Roman findfont 0.22 scalefont setfont } def /smallfont { /Times-Roman findfont 0.16 scalefont setfont}def /polygon { 2 dict begin /poly exch def /n poly length def poly 0 get aload pop moveto 1 1 n 1 sub { /i exch def poly i get aload pop lineto } for end} def /rotateA{ /A exch def /x A 0 get def /y A 1 get def /r A 2 get def /theta A 3 get def /n theta neg def 7{ /n n theta add def newpath x y moveto r n cos mul x add r n sin mul y add lineto stroke}repeat }def /rotation {7 dict begin /rotate exch def /n rotate length def /a 0 def n{ /theta rotate a get def /alpha 90 theta sub 2 div def /a a 1 add def newpath 2 alpha sin alpha cos div mul 1 moveto 0 -1 lineto stroke }repeat end}def /circles {7 dict begin /rotate exch def /n rotate length def /a 0 def n{ /theta rotate a get def /a a 1 add def newpath theta cos -1 moveto theta cos 1 lineto stroke newpath theta cos neg -1 moveto theta cos neg 1 lineto stroke }repeat end}def /rays {7 dict begin /ray exch def /n ray length def /a 0 def n{ /theta ray a get def /a a 1 add def newpath theta cos theta sin moveto 0 0 lineto stroke white newpath theta cos neg theta sin moveto theta cos 2.25 add theta sin lineto stroke newpath theta cos neg theta sin moveto theta cos 2.25 add theta sin lineto stroke red }repeat end}def [1.5 7] pagebegin black [[-4 4] [4 4] [4 -2] [-4 -2]] polygon fill white [0 0 1 360] circle stroke [2.25 0 1 360] circle stroke newpath 1 0 moveto -1 0 lineto stroke newpath 1 -2 moveto 1 2 lineto stroke newpath 0 1 moveto 0 -1 lineto stroke red [0 15 30 45 60 75 -15 -30 -45 -60 -75] rays pageend