## Let it snow!

A couple days ago I noticed a fun piece of R code by Allan Roberts, which lets you create a digital snowflake by cutting out virtual triangles. Go give it a try. Roberts inspired me to create a whole night sky of snowflakes. I tried to make the snowfall look as organic as possible. There are lots of options to adjust. Here’s the code, have fun and Happy Holidays!

```# Code by Matt Asher for statisticsblog.com
# Feel free to modify and redistribute

# How many flakes do you want to fall?
flakes = 100

# Width and height of your space
width = 800
height = 600

# Initial wind
wind = 0

# Setup the background of the plot and margins
par(bg = "black")
par(oma=c(0,0,0,0))
par(mar=c(0,0,0,0))
plot(0, 0, col="black", pch=".", xlim=c(0,width), ylim=c(0,height), axes=F)

for(i in 1:flakes) {
startY = height
startX = runif(1,1,width)

xPos = startX
yPos = startY

for(j in 1:height) {

# Optional drift in wind
wind = wind + rcauchy(1,0,.05)

# Update snowflake position
xPos = xPos + rnorm(1,.1,1.5)
yPos = yPos - runif(1,4,20)

# Are we in the space, if so display it
if(xPos > 0 && xPos <= width && yPos > 0 && yPos <= height) {
points(round(xPos), round(yPos), col="white", pch=8)

# System dely, slows down the flakes
Sys.sleep(0.1)
}
}
}```

Tags: , ,