Click on them to look closer!
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:
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)).
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.