Skip to content ↓
MIT blogger CJ Q. '23

SnowDays by CJ Q. '23

while you're waiting for decisions

SnowDays is a snowflake maker, and I think by far the best one. I hate snow, but I like snowflakes. You have this triangle that you draw cuts in, and it shows the result you’ll get when you unfold it.

tim the beaver appearing on a snowflake

It’s been around since 2002, so it might be older than some of you reading this. I first played with the website in 2009, when it used Flash. It survived the death of Flash by migrating to HTML5, it hasn’t lost any data between, and it’s still an awesome website. Here’s one of my snowflakes from 2009:

animation of a snowflake

The fantastic thing about SnowDays is that you can share your work. Here’s a link to that snowflake. If you view the snowflake on the website, you can see other people’s comments, and write a comment yourself. I was, what, 9 years old then? And I thought it’d be funny if I commented on my own snowflake, so I did. Cut me some slack, I was 9.

If you sit in the front page of SnowDays, you can watch the most recent snowflakes falling. If someone makes a snowflake while you’re watching it, it gets an arrow pointing to it saying it’s new. I think the design encourages people to interact with others’ snowflakes, which I find neat. There was a whole community around SnowDays back then. People called themselves “flakers”.

The snowflakes can get rather elaborate. Here’s one of my recent snowflakes, which is so big I had to convert the GIF to a video:

The animation comes from how SnowDays draws the snowflake at around one cut per frame, so you’re looking at how it’s changed over each cut. There’s a trick behind inverting snowflakes. If you follow this set of cuts:

diagram of series of cuts

You can cut into the negative space to bring out paper from nowhere! How does this work? The answer has to do with winding numbers.

A cut is a closed curve. Even if you don’t close up the cut, SnowDays will close it for you. If you have a closed curve, you can find the winding number for each point in the plane, relative to that curve. It’s the number of counterclockwise rotations around that point. Here’s a figure with some closed curves, with regions labeled by the winding number of the points inside them:

winding number diagram

See how the winding number can be greater than 1, if there’s multiple counterclockwise rotations. It can be negative if there are only clockwise rotations. Sometimes it cancels out to get 0, if there are the same number of rotations in each direction.

Snowflakes follow the nonzero-rule. The cut portion of the paper is the part that has a nonzero winding number. And similarly, if there’s a part with winding number 0, there’ll be paper on it. So if we draw the cuts on our previous pattern:

winding number on snowflake

We have two closed curves. The first cut is a triangle going clockwise. The second one is a triangle going counterclockwise. Inside both triangles, the winding number is 0, so there’s paper. Between the triangles, the winding number is –1, so the paper is cut. Outside the triangles, the winding number is 0 again, so there’s paper.

If you try this out on your own, you might notice that it doesn’t always work. This is because SnowDays tries to regularize cuts, which means it will sometimes try to reverse the direction of your cut so it goes the other way. I don’t know the exact conditions when it does that. For example, try making these sequences of cuts and see what happens:

cut diagrams

Here’s a sample snowflake made with this principle:

animation of a snowflake

Here’s some snowflakes I made if you want to check them out. I’m pasting the numbers; you can look them up with the search.

There’s a list of featured snowflakes on this old website, and here’s some that I like:

Hope this is a fun distraction while you’re waiting for decisions. If you make any snowflakes, share them in the comments!