%! % 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 { 0.5 0 1 setrgbcolor } def /blue { 0 1 1 setrgbcolor } def /green { 0 1 0 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 % rotate [x y r theta] /rotate{ 6 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 /alpha -90 theta add def newpath x y moveto r alpha sin alpha cos div mul r lineto stroke }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 x y moveto r theta cos mul x add r theta sin mul y add lineto stroke }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 [3 6] pagebegin black [[-3 4] [3 4] [3 -2] [-3 -2]] polygon fill white [0 1 15 sin 15 cos div 360] circle stroke red [0 1 30 sin 30 cos div 360] circle stroke yellow [0 1 45 sin 45 cos div 360] circle stroke green [0 1 60 sin 60 cos div 360] circle stroke blue 60 sin 60 cos div 1 moveto -60 sin -60 cos div 1 lineto stroke [0 1 60 sin 60 cos div 30] rotateA [0 1 60 sin 60 cos div 60] rotateA [0 1 60 sin 60 cos div 90] rotateA [0 1 60 sin 60 cos div 120] rotateA [0 1 60 sin 60 cos div 150] rotateA [0 1 60 sin 60 cos div 210] rotateA [0 1 60 sin 60 cos div 240] rotateA [0 1 60 sin 60 cos div 270] rotateA [0 1 60 sin 60 cos div 300] rotateA [0 1 60 sin 60 cos div 330] rotateA normalfont 60 sin 60 cos div 0 cos mul 0.1 add 60 sin 60 cos div 0 sin mul 1 add moveto (A) show 60 sin 60 cos div 30 cos mul 0.1 add 60 sin 60 cos div 30 sin mul 1 add moveto (B) show 60 sin 60 cos div 60 cos mul 0.1 add 60 sin 60 cos div 60 sin mul 1.1 add moveto (C) show 60 sin 60 cos div 90 cos mul 60 sin 60 cos div 90 sin mul 1.1 add moveto (D) show 60 sin 60 cos div 120 cos mul 0.2 sub 60 sin 60 cos div 120 sin mul 1.1 add moveto (E) show 60 sin 60 cos div 150 cos mul 0.2 sub 60 sin 60 cos div 150 sin mul 1.1 add moveto (F) show 60 sin 60 cos div 180 cos mul 0.3 sub 60 sin 60 cos div 180 sin mul 1 add moveto (G) show 60 sin 60 cos div 210 cos mul 0.3 sub 60 sin 60 cos div 210 sin mul 0.8 add moveto (H) show 60 sin 60 cos div 240 cos mul 0.2 sub 60 sin 60 cos div 240 sin mul 0.8 add moveto (I) show 60 sin 60 cos div 270 cos mul 0.1 sub 60 sin 60 cos div 270 sin mul 0.7 add moveto (J) show 60 sin 60 cos div 300 cos mul 0.1 add 60 sin 60 cos div 300 sin mul 0.8 add moveto (K) show 60 sin 60 cos div 330 cos mul 0.1 add 60 sin 60 cos div 330 sin mul 0.8 add moveto (L) show pageend