Presets
Playback
Shape
Seed polygon, iterations and the bump angle (60 degrees gives the classic snowflake).
View
Animation and viewing.
Camera
Layers
Quality
Model checks
The science
Construction and self-similarity
Start with a regular polygon (the classic seed is an equilateral triangle). Replace every segment by four pieces, each a factor s as long: two lie along the old segment and two form a bump with base angle alpha. For the four pieces to close the original chord, 2s + 2s cos(alpha) = 1, so s = 1 / (2 + 2 cos alpha). The classic snowflake has alpha = 60 degrees and s = 1/3. Repeating the rule n times gives N0 4^n segments of length l0 s^n.
Perimeter, area and dimension
The perimeter is P_n = P0 (4s)^n: because 4s > 1 it grows without bound (4/3 per step for the classic curve). Each bump adds a triangle of area s^2 l^2 sin(alpha) cos(alpha); there are N0 4^k of them at step k with side l0 s^k, so the added areas form a geometric series with ratio q = 4 s^2 < 1 and A_n = A0 + c (1 - q^n)/(1 - q), converging to a finite limit. For the classic triangle that limit is exactly 8/5 of the seed area. The curve is a similarity fractal: covering it with boxes of side s^n takes about 4^n boxes, so the box-counting (similarity) dimension is D = ln 4 / ln(1/s), which is ln 4 / ln 3 = 1.2619 for the classic curve and grows towards 2 as alpha increases.
The checks on this page
(1) The perimeter of the polygon actually built by the code is summed segment by segment and compared with P0 (4s)^n. (2) The shoelace area of the classic snowflake at n = 6 is compared with A0 (8/5 - 3/5 (4/9)^n). (3) A box-counting fit on a freshly built n = 6 curve at your alpha is compared with ln 4 / ln(1/s).
Honest simplifications
The picture is the n-th polygon, not the true limit curve, which cannot be drawn. The closed forms for area assume the bumps do not overlap: that holds for the triangle with alpha up to about 60 degrees and for the other seeds at the presets, but very large alpha on a small-angle polygon can make bumps cross, and then the area (but not the perimeter) departs from the formula. Box counting at a finite level only approximates the true dimension (it slightly overshoots here because of the finite range of box sizes). Real snowflakes are not Koch curves; the name is a visual analogy.
What to try
- Press the classic preset and watch each bump grow out of the straight segments while the perimeter graph climbs by 4/3 per step.
- Look at the area graph: it flattens at 1.6 times the seed area although the perimeter has no limit.
- Drag the bump angle alpha: the scale ratio s changes and the measured box-counting slope follows ln 4 / ln(1/s) on the fourth graph.
- Flip the bumps inward to get the anti-snowflake, whose area limit is 0.4 of the seed instead of 1.6.
- Switch auto-grow off, set n = 7 and use the corner zoom: the picture near the highlighted vertex keeps repeating itself every factor 3.