Gallery of Algorithmic Snowflakes

Click on them to look closer!

(SNOWFLAKE
:LENGTH-LIST

What is this?

This is my collection of snowflake-like patterns generated from a very simple algorithm. The algorithm starts with an initial line segment with an open tip, then produces new line segments from two simple rules:

  1. Growth: At every iteration, grow three new line segments from every open tip. One of them is the main branch, which has the same orientation as the parent. The other two are the side branches, which turn left and right by pi/3. Each new line segment has an open tip and the open tip of the parent is closed.
  2. Intersect: if any new line segment intersects with existing line segments, it is removed.

Main branches grown at iteration N all have the same length, which is given by (NTH N LENGTH-LIST). The length of side branches are (* (NTH N LENGTH-LIST) (EXPT SCALE-FACTOR N)).

Why are they snowflake-like?

The Growth rule produces exponential proliferation of line segments, which are modulated by the Intersect rule. That's enough for complexity to arise.

Real snowflake growth keeps a history of atmospheric condition (temperature, humidity...) the snowflake has experienced. This gives rise to the saying "no two snowflakes ever look alike": their growth history are likely different. The Growth rule mirrors this with the discrete LENGTH-LIST, which can be thought of as the growth history of the algorithmic snowflake.

Real snowflake growth is also subject to a shadowing effect between the snowflake's branches (a variant of Diffusion Limited Aggregation). This is mirrored by the Intersect rule.