The 126-generation oscillator in face centered cubic cellular automata

Tree-shaped oscillator, pointing up and leftThe face centered cubic (fcc) lattice has two cellular automata rules that produce enough complexity to do anything useful. One of these tends to create exponential growth that expands to fill the entire universe. The 3333 rule, however, does not. It lends itself well to interesting structures, and also has great symmetry. I’m fascinated by its elegant simplicity – the only rule is that each cell is alive in the next generation if it has three live neighbors in the previous generation. You may recall that in the fcc lattice each cell has 12 neighbors.

I’ve found a lot of fascinating patterns in this automata, and will write about some of these another time. But, today being Christmas, I am delighted to present to you (ahem) this 126-cycle oscillator that looks somewhat like a Christmas tree (shown here in green, of course). This oscillator is one of the most exciting I’ve seen so far. Over 126 generations, it goes from the tree shape (seen above pointing up and to the left), through somewhat chaotic configurations, to a similar tree pointing in the opposite direction, through more chaos, and finally back to the original shape.

Planar triangular configuration, 27 cells per edgeThe easiest way to start one of these is with a planar triangular arrangement of 27 cells on each side. After 78 iterations, this configuration turns into the “tree” shape shown earlier.

After 63 more generations, it turns into a tree facing the opposite direction. After another 63 generations, we are back to the original tree shape, facing left (from this viewpoint). The complete oscillator cycle is shown here in a looping GIF animation, starting at the generation after the first tree:

Animation of the 126-generation oscillator

And, finally, if you want to see the planar triangular shape turn into the tree, here is an animation of that process:

Triangle into tree
Animation of the transformation from triangle into tree

A Toroidal Honeycomb of 32 Close Packed Spheres

Some shapes can fill space (form a “honeycomb”) with an infinite number of copies of themselves, using only coordinate translations (no rotations). The  obvious and most commonly seen one is a lattice of cubes. Another is based on the rhombic dodecahedron, which is the polyhedron corresponding to a sphere in fcc close packing (described in my last post, and seen below). You can connect as many of these shapes as you want, and they will fill space without gaps.

Rhombic Dodecahedral Honeycomb

If a given polyhedron can fill space, that does not necessarily hold for a similarly shaped collection of spheres (and vice versa). Consider the tetrahedron. As a convex shape it cannot fill space by itself, however, a tetrahedral configuration of spheres can. This is because the shared edges and faces which would normally be infinitely thin in a polyhedral lattice will need to take up space in a close packing. After all, the “edges” in a close packing lattice are made up of spheres, not lines.

32-ball configuration

This configuration of 32 balls is made up of 8 copies of a tetrahedral ball configuration. It’s an interesting object, looking sort of like a cube but not a completely symmetric one. It also has the fcc close packing. This configuration fills space, and if you look closely you can see a Vector Equilibrium embedded in there.

The opposite faces interlock to ensure a close packing, as the following figure shows. This object is made from 8 of the 32-sphere units for a total of 256 spheres.

Another neat thing you can do with this object is to create a toroidal lattice by joining the opposite faces (you’ll have to imagine you’re doing this in another dimension, since you can’t fold the cube space onto itself in 3D). You might have experienced a similar torus world while playing a 2D or 3D video game where objects going off the screen will reappear on the opposite side. That becomes very useful when you want to run a cellular automata (CA) or another simulation in a closed universe. You can make a torus world like this of any size that you want. We’ll revisit this idea later when we explore a CA built around the fcc lattice.

This 32 sphere object, when connected as a torus, is related to the generalized quaternion group. This is also true of any larger toroidal environments made up of these.

Navigating the Lattice

Sphere packing in 3D has some very interesting symmetry. The Bravais lattice known as face centered cubic (fcc) is the one that I find to be the most fascinating of all the 3D lattices. This one was studied in great detail by R. Buckminster Fuller, who called it the isotropic vector matrix (IVM).

Most people think of 3D space as a lattice of cubes with XYZ coordinates, with each direction orthogonal to the other two. The IVM lattice is built differently. Instead, its core vectors are the three directions that you would move from a given point in order to form a tetrahedron (using the origin as one of its vertices). I usually think of these vectors as A, B, and C to distinguish them from XYZ (cartesian) coordinates.

In the image below, the black sphere is the origin, and the other vertices of the tetrahedron are colored red, green and blue (along the A, B, and C basis vectors, respectively).

IVM Basis Vectors as Tetrahedron

In the lattice, there are 12 directions you can go in order to reach a neighbor cell. You can build these 12 from the three basis vectors as follows: A, B, C, A-B, A-C, B-A, B-C, C-A, C-B, -A, -B, -C. Together with the center sphere, this collection of spheres is often called the Vector Equilibrium (VE). The outer spheres have the same relationship to each other as the vertices of a cuboctahedron. The image below shows this, but a static image doesn’t give a very good idea how they fit together.

Vector Equilibrium

Explore furtherOpen an X3D view of the VE (opens in new window).

The ordinary 3D cartesian coordinates that we use in everyday life do not work as well for navigation between the cells of this space. That’s because each IVM basis vector is a combination of cartesian coordinates. In my explorations, I’ve been using my own navigation system based on vectors A, B, and C.

I’ve been experimenting with cellular automata (CA) on the IVM, and created a mini-language for placing the spheres (somewhat like turtle graphics). In this language, I use upper case letters A, B, and C to move in a positive direction; and the lower case letters a, b, and c to move in a negative direction relative to the current position (or from the origin). Examples:

aBBBBCC: -1, 4, 2
AAAbc: 3, -1, -1

This system helps me to visualize the relative locations better. The images here were created this way (but more on that and the IVM CA some other time).