lag@aipna.ed.ac.uk (Larry Gorman) (03/10/89)
------Cut Here------------------------------Cut Here-------------------
%!PS
% YES! IT'S TRUE! Send this file to your friendly local PostScript
% printer, and once the poster has been printed out, YOU can have
% that printer to keep! If anyone asks why you are leaving work
% with a laserwriter under your arm, tell them point blank that
% it is authorised by Dr. Gorman. You can't get more clout than
% that!
% Remember: SPOOL THIS POSTER TODAY, TAKE A PRINTER AWAY!
% poster
/inch {72 mul} def
% constants
%/pagewidth 8.3 def % real width of page
%/pagedepth 11.5 def % real depth of page
/pagewidth 7.1 def % width of page
/pagedepth 11 def % depth of page
/TM pagedepth .3 sub def % top margin
/BM .3 def % bott. marg.
/LM .3 def % left
/RM pagewidth .3 sub def % right
/colcount 3 def % width of poster in pages
/rowcount 4 def % depth of poster in pages
/horwidth colcount 4 mul def % horus width
/horx colcount pagewidth mul horwidth sub 2 div def % horus x posn
/hory rowcount pagedepth mul horwidth .81 mul sub 2 div def % horus y posn
% draw some rays, man
% stack: rayx rayy rayangle raylength raycount convergence ray_gray
/out_rays
{
/ray_gray exch def % ray's grayness
/convergence exch def % ratio of length to final width
/raycount exch def % no. of rays in splay
/raylength exch def % length of ray
/rayangle exch def % angle of splay
/rayy exch def % splay centre x posn
/rayx exch def % splay centre y posn
/angle 360 raycount div def % angle separating rays
/width raylength convergence mul 2 div def % width of ray end
/total_angle 0 def % toatl angle of rotation
rayx rayy translate % translate to centre of rays
newpath
ray_gray setgray
0 0 moveto
rayangle rotate % offset rotation
raycount % draw rays
{
/reallength raylength total_angle cos abs .5 add mul def
reallength width lineto
reallength 0 width sub lineto
fill
0 0 moveto
angle rotate
/total_angle total_angle angle add def
} repeat
0 rayangle sub rotate % make up 360 degrees rotation
0 rayx sub 0 rayy sub translate % return to orig. translation
} def
% draw some rays, man
% stack: rayx rayy rayangle raylength raycount convergence ray_gray
/in_rays
{
/ray_gray exch def % ray's grayness
/convergence exch def % ratio of length to final width
/raycount exch def % no. of rays in splay
/raylength exch def % length of ray
/rayangle exch def % angle of splay
/rayy exch def % splay centre x posn
/rayx exch def % splay centre y posn
/angle 360 raycount div def % angle separating rays
/width raylength convergence mul 2 div def % width of ray end
/total_angle 0 def % toatl angle of rotation
rayx rayy translate % translate to centre of rays
newpath
ray_gray setgray
rayangle rotate % offset rotation
raycount % draw rays
{
/reallength raylength total_angle cos abs mul def
reallength 0 moveto
0 0 width sub lineto
0 width lineto
fill
0 0 moveto
angle rotate
/total_angle total_angle angle add def
} repeat
0 rayangle sub rotate % make up 360 degrees rotation
0 rayx sub 0 rayy sub translate % return to orig. translation
} def
% equilateral triangle
% stack: x y sidelength line_grayness fill_grayness
/eqtriangle
{
/fill_grayness exch def
/line_grayness exch def
/sidelength exch def
/y exch def
/x exch def
newpath
x y moveto
sidelength 0 rlineto
sidelength 0 translate
120 rotate
sidelength 0 rlineto
sidelength 0 translate
120 rotate
sidelength 0 rlineto
sidelength 0 translate
120 rotate
gsave
line_grayness setgray
stroke
grestore
fill_grayness setgray
fill
} def
% draw an upward pointing curve of the given width
% stack: x y width
/upcurve
{
/width exch def
/y exch def
/x exch def
/radius width .7 mul def
x width .5 mul add y width -.495 mul add radius 45 135 arc
} def
% draw an downward pointing curve of the given width
% stack: x y width
/downcurve
{
/width exch def
/y exch def
/x exch def
/radius width .7 mul def
x width .5 mul add y width .495 mul add radius 225 315 arc
} def
% draw an "eye" of the given width at the given position
% stack: x y width line_grayness surround_grayness iris_grayness
/eye
{
/iris_grayness exch def
/surround_grayness exch def
/line_grayness exch def
/width exch def
/y exch def
/x exch def
% draw surround
line_grayness setgray
x y width upcurve
x y width downcurve
gsave
stroke
grestore
surround_grayness setgray
fill
% draw iris
x width 2 div add y width 8 div 0 360 arc
gsave
line_grayness setgray
stroke
grestore
iris_grayness setgray
fill
} def
% print an eye in a triangle
% stack: horusx horusy basewidth
/horus
{
/basewidth exch def
/horusy exch def
/horusx exch def
% do rays
horusx basewidth 2 div add basewidth .3 mul horusy add 270 basewidth 1.5 mul 7 .05 .9 out_rays
horusx basewidth 2 div add basewidth .3 mul horusy add 270 360 14 div add basewidth 1.2 mul 7 .05 .7 in_rays
horusx horusy basewidth 0 0 eqtriangle
/eyewidth basewidth .5 mul def
basewidth eyewidth sub 2 div horusx add basewidth .3 mul horusy add eyewidth 0 .5 1 eye
} def
% postscript cookery book poster printing routine
/printposter
{
/rows exch def
/columns exch def
/bigpictureproc exch def
newpath
leftmargin botmargin moveto
0 ph rlineto
pw 0 rlineto
0 ph neg rlineto
closepath
clip
leftmargin botmargin translate
0 1 rows 1 sub
{
/rowcount exch def
0 1 columns 1 sub
{
/colcount exch def
gsave
pw colcount mul neg
ph rowcount mul neg
translate
bigpictureproc
gsave showpage grestore
grestore
} for
} for
} def
/retaddrfont /Times-BoldItalic findfont [7 0 0 9 0 0] makefont def
/leftmargin .5 inch def
/botmargin .25 inch def
/pw 7.5 inch def
/ph 10 inch def
{horx inch hory inch horwidth inch horus} colcount rowcount printposter
showpage
% That's all folks!