%! % 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 /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 /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 /latitude {7 dict begin /lat exch def /n lat length def /a 0 def n{ /theta lat a get def /alpha -88 def /a a 1 add def newpath alpha sin alpha cos div 1 alpha cos div theta sin theta cos div mul moveto 176{ /alpha alpha 1 add def alpha sin alpha cos div 1 alpha cos div theta sin theta cos div mul lineto }repeat stroke }repeat end}def /latitudeA {7 dict begin /lat exch def /n lat length def /a 0 def n{ /theta lat a get def /a a 1 add def newpath 1 theta cos div 2 moveto 1 theta cos div 4 lineto stroke }repeat end}def /longitude {7 dict begin /long exch def /n long length def /a 0 def n{ /theta long a get def /a a 1 add def newpath theta sin theta cos div -5.25 moveto theta sin theta cos div 5.25 lineto stroke }repeat end}def /longitudeB {7 dict begin /long exch def /n long length def /a 0 def n{ /theta long a get def /a a 1 add def newpath theta sin theta cos div 2 moveto theta sin theta cos div 3 lineto stroke }repeat end}def /plane {5 dict begin /plane exch def /n plane length def /a 0 def n{ /theta plane a get def /a a 1 add def newpath 0 4 moveto theta sin theta cos div 3 lineto stroke }repeat end}def /planeA {5 dict begin /plane exch def /n plane length def /a 0 def n{ /theta plane a get def /a a 1 add def newpath 0 4 moveto 2 theta sin theta cos div mul 2 lineto stroke }repeat end}def [4 2.5] pagebegin black [[-3 2] [3 2] [3 -2] [-3 -2]] polygon fill red [-80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80] latitude blue [-80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80] longitude black [[-3 2] [3 2] [3 8] [-3 8]] polygon fill white [0 4 1 360] circle stroke newpath -3 4 moveto 3 4 lineto stroke blue [-80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40] plane [50 60 70 80] planeA white newpath -3 3 moveto 40 sin 40 cos div 3 lineto stroke white [-80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40] longitudeB red [0 10 20 30 40 50] latitudeA pageend