Imitating snowflakes with a simple cellular automation

In an earlier post “Fake snowflakes” I already created images that resemble snowflakes. I used a rather complicated method. Now I have found a much simpler cellular automaton that gives similar results.

Again I use a hexagonal lattice. Each cell has a number corresponding to its color. A cell that is not part of the snowflake thus has number 0, the number of the background color. A cell in the snowflake can have number 1 or 2, if we use two foreground colors. These cells will never change their number again. The snowflake grows if cells of the background become snowflake cells. For this we need specific rules.


Surface growth rule

To start, all cells are of the background and have color number 0 except the cell at the center. That one is the seed of the snowflake.

A hexagon grows out of this cell using a simple surface growth rule. The first figure at the left illustrates this rule. A background cell (green) becomes a snowflake cell if it has at least one snowflake cell as neighbor. This repeats a random number of times giving different thicknesses.


Tip growth rule

Then tips grow at the corners of the hexagon with the more complicated line growth rule shown in the second figure at left. A background cell (green) that is in line with two snowflake cells (orange) becomes a snowflake cell, if the two neighboring cells (blue) of the background cell at the right and left are background cells too. With this added condition, there is no growth at the sides of the hexagon. Again, this is done a random number of times giving different lengths.

Afterwards, the tips grow in thickness with the surface growth rule. At the end, each tip has three corners of an angle of 60 degrees. Applying the line growth rule we get new tips at each of these corners. Then again we use the surface growth rule. Repeating this we get  a branching structure with straight edges resembling snowflakes.

Note that these two rather simple rules give widely varying and complex results. They differ only on the number of repetitions. Below you see some examples. To make the different growth stages visible, I alternate colors.


This entry was posted in Cellular automata and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.