Tutorial: Similar Paired Dissection Coloring

Text and Images © 2004 Kerry Mitchell


I’ve always been drawn to drawing squares and triangles on graph paper, and seeing the myriad ways that those two simple shapes could be broken down and recombined in fascinating ways. This coloring algorithm allows you to play with those ideas, to a level and precision not available with pencil and paper.


Mathematically speaking, a dissection is when a shape is broken into smaller pieces, in such a way that there are no overlaps and no gaps. There are many ways in which squares can be dissected into smaller squares. A checkerboard is one example, where a larger square (the board) is dissected into 64 small squares (eight rows and eight columns). A few other examples of dissecting a square are shown in Figure 1.

Examples of square dissections
Figure 1: Examples of Square Dissections

Triangles can easily be dissected into other triangles. Here, I’m interested only in isosceles right triangles, that is, triangles with a right angle and two sides the same length. A few ways to that are shown in Figure 2.

Examples of triangle dissections
Figure 2: Examples of Triangle Dissections

Each shape can also be dissected into both shapes. For example, draw a square and one (or both) of its diagonals, and the square has been dissected into triangles. There are many different ways to dissect squares and triangles into squares and triangles, a few of which are shown in Figure 3.

Examples of paired dissections
Figure 3: Examples of Paired Dissections

In each case, each shape is broken into small copies of both shapes. Then, each of those shapes can be further dissected, and so on, leading to a fractal tessellation. That’s what this formula does.

There are four types of dissections that can be created, depending on with which shape you start and how you want to dissect it: triangle to triangle, triangle to both, square to square, and square to both. In any case, you need a starting point, which is the axiom. That can be either a triangle or a square. Then, you need one or two generators (two for either “to both” dissection type). A generator defines how the shapes are dissected into smaller shapes.

Perhaps the best way to use this coloring is to first design your dissection on a piece of graph paper. For an example, let’s look at the first pair in the Figure 3. We begin with a square (the square axiom) that is divided by its two diagonals into four triangles (the square generator). Each triangle (the triangle axiom) is then divided into a square and two more triangles (the triangle generator). Sketch each axiom and the points of its generator, and find the coordinates of all the corner points. For this example, the sketches might look like this:

Generators Laid out on a Coordinate Plane
Figure 4: Generators Laid out on a Coordinate Plane

It’s not necessary that the coordinates be integers, or that the shape have a corner at (0, 0), but I find that doing so makes it easier to keep track of the points. The reason you need to find the corner coordinates is so that the routine knows how to draw the smaller shapes, and so that the shapes retain their, well, shape.

Another important consideration is the ordering of the generator points. The generator represents the axiom being dissected into a number of smaller shapes, called “sub-shapes.” The corner points of each of these sub-shapes need to be entered in a particular order (although the order of the sub-shapes for each generator is irrelevant). For example, the square is being dissected into four triangles. The triangle on the left of the square, with its hypotenuse along the square’s left side, could be sub-shape 1, 2, 3, or 4, it doesn’t matter. The ordering of its three corner points, though, is important. The scheme for triangles is to always have the right angle be at corner point 1, and then move counter-clockwise around the shape. This ordering holds for the axioms as well. This ensures that the angles are created properly, and that the sub-shapes don’t get turned inside out. So, for the triangle on the left, the correct ordering of its corner points is: first (1, 1), then (0, 2), and finally, (0, 0). Likewise, the top triangle’s corner points would be entered as: (1, 1), (2, 2), and (0, 2).

For square sub-shapes, there is some flexibility. The counter-clockwise ordering still holds, but, because of the symmetry of the square, there is not a particular point that must be entered first. Indeed, which point is chosen to be the first point may matter greatly to the final image. Consider this example:

Various Layouts of the same Dissection
Figure 5: Various Layouts of the same Dissection

In each case, the original square is broken down into one medium-sized square (2/3 of the size of the original), and five small squares (1/3 of the size of the original). The individual squares are symmetric, but the collection is not. The red squares indicate the location of the first corner of the axiom, and the black squares mark the first corner of the square sub-shapes. In the first case, each of the sub-squares is in the same orientation as the axiom, with the first corner in the lower left. In the second case, the sub-squares have been rotated, bring pairs of first corners together. The third and fourth cases have the same patterns of sub-squares, but now the axiom has been rotated so that the first corner is in the upper right. The effects of the layout changes are shown in Figure 6. Each panel is the fourth iteration of the corresponding generator shown in Figure 5. In each, you can see the characteristic cluster of a larger square surrounded on two sides by five smaller squares, but that’s where the similarity ends.

Fourth Iteration of Various Square Dissections
Figure 6: Fourth Iteration of Various Square Dissections

It pays to map your design out before entering the parameters, and it also pays to be flexible and try rotating the corner points around to see what happens.


To keep track of all the corner points and sub-shapes, this formula has many parameters. However, they are grouped for ease of use, and many parameters are not visible unless they are needed.

General parameters: Overall settings, independent of the specifics of the dissections.

Axiom parameters: Settings for the triangle and/or square axioms, depending on the “dissection type” choice.

Generator parameters: Settings for the triangle and/or square generators, depending on the “dissection type” choice.


You are, of course, free to use this coloring however you’d like. However, these hints may help your explorations be more productive.

Sample Image

Sample image 1
Final Image (click for parameters)
Sample 1, 1 iteration
1 Iteration
Sample 1, 2 iterations
2 Iterations
Figure 7: Sample Image

This image reminds me somewhat of a stained glass window. It uses 3 layers, 2 for the glass and one for the lead came between the pieces. It begins with a square that is divided into 2 squares and 4 triangles. Each triangle is divided into a square and 3 triangles, as you can see in the upper left corner of the “Iteration 2” image.

Here’s how to make it.

Step 1: Start a new fractal, with these characteristics:

Your image might not look like much, but it should resemble the “Step 1” image in Figure 8.

Sample 1, step 1
Step 1
Sample 1, step 2
Step 2
Figure 8: Sample Image, Steps 1 and 2

Step 2: Create the basic dissections

Your image should look like “Step 2” in Figure 8.

Step 3: Finish.

When it’s all done, it should look just like the “Final Image” in Figure 7. If not, look back through your work and check the parameter entries. Or, just click on the finished image for the parameter set.

I hope you have fun with this, and be sure to share your creations with the rest of us!

Back to Tutorials page
Up to my home page