PictureBlocks is a blocks-based version of Henderson's picture language that makes it easy to create tangible artifacts with a laser cutter or vinyl cutter.  Using PictureBlocks, people without any previous programming or design experience can quickly make personally satisfying physical artifacts.

In a seminal 1982 paper, Peter Henderson presented a language of picture combinators powerful enough to describe complex pictures like Escher's Square Limit woodcut.

Henderson analyzed the picture to determine a "primitive" fish picture (a) that could be rotated, flipped, and otherwise transformed (b,c) in ways to create a picture like the original (d).


 (a)  (b)  (c)  (d)

Henderson developed a set of picture combinators --- operators for combining pictures --- like those shown below for rotating and flipping a "blue wedge" picture bw and combining it with a "red kite" picture rk.  These combinator examples are taken from Wellesley's CS111 Introduction to Programming and Problem Solving course, in which we use a Java-based implementation of Henderson's picture language to illustrate how primitives and a few powerful means of combination can lead to complex artifacts.  We were inspired not only by Henderson, but by Abelson & Sussman, who popularized Henderson's ideas in their Structure and Interpretation of Computer Programs (SICP).

 bw  clockwise90(bw)  flipHorizontally(bw)  flipVertically(bw)
 above(bw, rk)
 beside(bw, rk)  overlay(bw, rk)  overlay(rk, bw)

PictureBlocks is a blocks-based language for combining primitive pictures like the ones used above.  For example, here is a simple PictureBlocks program that combines three simple shapes:

The resulting picture is shown in (a), its boundary is shown in (b), and a wooden artifact created from the boundary by a laser cutter is shown in (c).

 (a)  (b)  (c)

Of course, more complicated pictures are possible. Using a sketching feature of PictureBlocks, users can draw their own primitives, such as this one:

This can be used to make a picture (a) that is engraved into wood to form a woodcut (b), and the woodcut can be used to make a print (c).

 (b)  (c)

Cutting and engraving can be combined.  An good example of this begins with two sketches of primitives that Escher designed for knitting patterns:
 PictureA PictureB

When recolored, rotated, flipped, and combined in various ways, these two patterns can yield a dizzying number of knitting patterns (see Doris Schattschneider's M. C. Escher: Visions of Symmetry  or our Wellesley CS111 assignment on Escher knitting patterns).  One such pattern is shown in (a). It can be turned into a line drawing (b) in which red lines are cut lines and black lines are engraving lines. The result of cutting/engraving this pattern on a laser cutter is shown in (c).

 (a) (b)  (c)