A Single Snowflake working towards snowflakes Dan Catt see his work at: revdancatt.com/penplotter/036-snowflakes Dan's list of Pen Plotter Tools at: revdancatt.com/penplotter/
Log in to post a comment.
// Forked from "Stars 001" by rupertxrussell // https://turtletoy.net/turtle/01d0bf10d6 // You can find the Turtle API reference here: https://turtletoy.net/syntax // MIT Licence // Draw a Single Snowflake // working towards Dan Catt's snowflakes // see his work at: https://revdancatt.com/penplotter/036-Snowflakes // See Dan's full list of Pen Plotter Tools at: https://revdancatt.com/penplotter/ Canvas.setpenopacity(1); let maxScale=95; const turtle = new Turtle(); // generate a random number of branches let nBranches = 3; //min=2 max=15 step=1 snowFlake(0, 0); function snowFlake(randomX, randomY) { // scale = getRandomInt(maxScale + 1); scale = maxScale; armLength = scale; turtle.penup(); turtle.goto(randomX, randomY); // N S arm turtle.penup(); turtle.goto(randomX, randomY); turtle.pendown(); turtle.setheading(90); turtle.penup(); turtle.forward(scale); let position3 = turtle.position(); turtle.pendown(); turtle.right(180); turtle.forward(scale * 2); let position0 = turtle.position(); // NW SE arm turtle.penup(); turtle.goto(randomX, randomY); turtle.pendown(); turtle.setheading(30); turtle.penup(); turtle.forward(scale); turtle.pendown(); let position2 = turtle.position(); turtle.right(180); turtle.forward(scale * 2); let position5 = turtle.position(); // SW NE arm turtle.penup(); turtle.goto(randomX, randomY); turtle.setheading(-30); turtle.penup(); turtle.forward(scale); turtle.pendown(); let position1 = turtle.position(); turtle.right(180); turtle.forward(scale * 2); let position4 = turtle.position(); /* // draw star of david turtle.jump(position0); turtle.pendown(); turtle.goto(position2) turtle.goto(position4) turtle.goto(position0) turtle.jump(position5); turtle.pendown(); turtle.goto(position1) turtle.goto(position3) turtle.goto(position5) */ // draw nBarnches let stepLength = armLength / nBranches; for(let arm = 0; arm < 6; arm ++){ for(let n = 0; n < nBranches; n ++){ let branchLength = (armLength - stepLength * n) / 2 // go to center of the snowflake turtle.setheading(30 + arm * 60); turtle.penup(); turtle.goto(randomX, randomY); turtle.right(180); turtle.forward(stepLength * n); turtle.right(60); turtle.pendown(); turtle.forward(branchLength); turtle.back(branchLength); turtle.left(60 * 2) turtle.forward(branchLength); } } } // Used to draw the angled branches function branch(armLength, stepLength){ let branchLength = (armLength - stepLength) / 2 return branchLength; } function getRandomInt(max) { return Math.floor(Math.random() * max); }