prologues := 1; defaultfont := "Helvetica"; beginfig(1); path screen; screen = (0,0)--(200,150); pair nadir; nadir = center(screen) + (1.2 * (lrcorner(screen) - urcorner(screen))); draw ulcorner screen -- urcorner screen -- lrcorner screen -- llcorner screen -- cycle withpen pencircle scaled 5pt; label.llft("Computer screen", lrcorner screen); vardef showNadir(expr pict, loc) = save rot, p; transform rot; rot = identity shifted -center(pict) rotated (angle(loc - nadir) - 90) shifted loc; pair p; p = .5[lrcorner pict, llcorner pict] transformed rot; % draw bbox(pict) withpen pencircle scaled .5pt; draw (bbox(pict)) transformed rot withpen pencircle scaled .3pt; addto currentpicture also pict transformed rot; draw p -- nadir withpen pencircle scaled .3pt; enddef; dotlabel.rt("Nadir", nadir); showNadir("foo" infont defaultfont, (150,100)); showNadir("bar" infont defaultfont scaled 2, (100,60)); showNadir("baz" infont defaultfont scaled .6, (12,130)); showNadir("quip" infont defaultfont scaled .8, (20,20)); showNadir("nit" infont defaultfont scaled 1.5, (60,60)); endfig; end