%! % 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 270 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 x y lineto 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 closepath 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 newpath theta cos theta sin moveto theta cos neg theta sin lineto stroke newpath theta cos theta sin moveto 0 1 theta sin div lineto stroke newpath theta cos neg theta sin moveto 0 1 theta sin div lineto stroke }repeat end}def % array [x y r theta]] /circleray {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 270 theta sub def /n 10 def newpath n{ /c c theta add def x y moveto r c cos mul x add r c sin mul y add lineto } repeat end} def /latitude {7 dict begin /lat exch def /n lat length def /a 0 def n{ /theta lat a get def /a a 1 add def /b 45 cos theta cos sub def /c theta sin 45 cos sub def /d b b mul c c mul add sqrt def /r 45 cos 45 sin div theta 45 sub 2 div cos d mul sub def newpath [0 0 r 360 45 sin mul 2 div] circle stroke newpath [0 0 r 360 45 sin mul 2 div neg] circle stroke }repeat end}def [3 7] pagebegin black [[-3 4] [3 4] [3 -2] [-3 -2]] polygon fill white [0 0 45 cos 45 sin div 360 45 sin mul 2 div] circle stroke [0 0 45 cos 45 sin div 360 45 sin mul 2 div neg] circle stroke [50 55 60 65 70 75 80 85] latitude blue [0 0 45 cos 45 sin div 36 45 sin mul 2 div] circleray stroke [0 0 45 cos 45 sin div 36 45 sin mul 2 div neg] circleray stroke pageend