.bp
.sp 8
.ce 2
\f3Photo Captions\f1
.br
(originals of 4x5" polaroid prints included, please do not xerox)
.sp 4
.nf
.na
Photo  1: Rob Pike, unedited. Refered to as $rob in the expressions below.

Photo  2: Peter J. Weinberger, unedited. Refered to as $pjw.

Photo  3: average of $rob and $pjw	(see paper expr. [7])
	new=($rob+$pjw)/2
Photo  4: simple conditional expression
	new=($pjw<128)?Z-$pjw:$pjw[X-x,y]
Photo  5: more complex mapping, merging two images (cf paper expr. [10])
	def newy() { return clamp(4*y/3-75); }
	{ global int R, L, yy; R = X/3; L = 2*X/3; }
	new =	(x < R) ? $rob[x,yy=newy()]: \\
		(x > L) ? 2*$pjw/3: \\
			3*((x-R)*2*$pjw/3+(L-x)*$rob[x,yy])/X
Photo  6: exclusive or of x, y, an an image
	new=x^y^$rob		(see paper expr. 11)
Photo  7: Doug's transformation	(see paper expr. [13])
	new=$rob[x+(64-((x&15)-8)*((x&15)-8))/8, y]
Photo  8: Pixel smearing	(see paper expr. [14])
	new=$pjw[x+(64-($rob&15)**2)/8, y+(64-(($rob>>4)&15)**2)/8]
Photo  9: random lines, using $rob and $pjw	(see paper, page 6)
	x { draw(350); }
Photo 10: random slicing, using $rob	(see paper, page 6)
	x { xy_slicer(); }
Photo 11: simple relief		(see paper expr. [21])
	new=$rob[x+1,y+1]+(Z-$rob)
Photo 12: edge detection, using $rob	(see paper, page 7)
	x { smooth(4); edges(); }
Photo 13-16: caricature mappings, Rob Pike, Al Aho, Doug McIlroy, and the author
	new=old[x_cart(r=sqrt(256*r_polar(x,y)),a=a_polar(x,y)), y_cart(r,a)]

Photos 17-20: other examples, 2 b&w, 2 color
