The magic begins when we configure two or more nonoverlapping sets of paired disks in the complex plane. Under repeated mappings, disks proliferate into beautiful fractal forms. Such an arrangement of disks and transformations is known as Schottky dynamics in honor of Frederich Schottky who explored the underlying mathematics in the late 1800s.1
Here we work with two sets of paired disks: The disks and
are paired by the transformation
, and the disks
and
are paired by the transformation
. These are depicted in the following figure.2
In the following program, the two transformations and
and their inverses,
and
, are iteratively applied to the four seed disks up to nbrLevels many levels.
Here’s one way to understand what’s going on. Set nbrLevels to 0, model to ‘disks’, and color model to ‘by disk’. This assigns a random color to each of the four seed disks. Keep pressing the Randomize button until these four colors are quite distinct. Next set nbrLevels to 1, and let’s call any one of the seed disks . Because the disks
and
are paired, the transformation
maps the outside of
to the inside of
. There are three seed disks that lie outside
:
,
, and
. Applying
to each of these produces a new disk of the same color inside
. Increase nbrLevels from 1 to 2 and the process repeats. Each level 1 disk residing inside
maps three seed disks to even smaller disks in its interior. Since
was chosen arbitrarily, the same process occurs in each of the seed disks.
Let’s look a bit more closely. Every disk represents a composition of the four transformations ,
,
, and
. This is indicated by the subscript in the disk’s name. For example, the seed disk
represents the transformation
. Apply
to seed disk
and we get the (smaller) disk
contained in
. In turn, disk
represents the transformation
. Applying
to the seed disk
yields a new (even smaller) disk
nested inside
. In general, applying the composite transformation
to three seed disks yields three smaller disks nesting inside disk
. And why do we apply
to three rather than to all four seed disks? Consider, for example, the disk
. If we were to apply this to the seed disk
we obtain
. But since
and
are inverses,
is another name for
, and our goal is to produce lower-level nested disks, not to backtrack. So the three disks nested in
one level lower are
,
, and
.3
When model is set to ‘disks’, the disks at every level are rendered. When model is ‘spheres’, disks are represented by spheres, but only those spheres at level nbrLevels get rendered.
As we’ve seen, setting color model to ‘by disk’ assigns a color to each of the four seed disks and propagates these colors to higher levels: a disk’s color is that of the seed disk from which it was transformed. Setting color model to ‘by level’ assigns a random color to each level.