.sp 8
.ce 2
\f3Photo Captions\f1
.br
(photocopies of 4x5" polaroid prints included with draft)
.sp 4
.nf
.na
Photo  1(0): Rob Pike, unedited
	$rob
Photo  2(1): Peter J. Weinberger, unedited
	$pjw
Photo  4(2): simple conditional expression
	new=($pjw<128)?Z-$pjw:$pjw[X-x,y]
Photo  3(3): average of $rob and $pjw	(see paper expr. [7])
	new=($rob+$pjw)/2
Photo  5(4): more complex mapping, slowly 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  7(5): nonsensical mapping	(see paper expr. [12])
	new=($rob < $pjw) ? ($rob*$pjw)/Z : $pjw>>1
Photo  8(6): nonsensical mapping	(see paper expr. [13])
	new=($rob > 100) ? $rob : $pjw
Photo  9(7): Doug's transformation	(see paper expr. [14])
	new=$rob[x+(64-((x&15)-8)*((x&15)-8))/8, y]
Photo  10(8): Pixel smearing	(see paper expr. [15])
	new=$2[x+(64-($1&15)**2)/8, y+(64-(($1>>4)&15)**2)/8]
Photo  13(9): simple relief		(see paper expr. [22])
	new=$rob[x+1,y+1]+(Z-$rob)
Photo 12(10): random slicing	(see paper, page 6)
	get rob; x { xy_slicer(); }
Photo 14(11): edge detection	(see paper, page 7)
	get rob; x { smooth(4); edges(); }
Photo 11(12): random lines		(see paper, page 6)
	get rob; x { draw(300); }
Photo 15,16,17(13a-d): charicature mappings	(cf. paper, expr. [5])
	x new=old[x_cart(r=sqrt(256*r_polar(x,y)),a=a_polar(x,y)), y_cart(r,a)]
	(a) Rob Pike, (b) Alfred V. Aho, (c) M. Doug McIlroy
Photo 6(14):
	x new=x^y^$rob		(see paper expr. 11)
