Inspired by Dan Catt's work at: revdancatt.com/penplotter/036-snowflakes Dan's list of Pen Plotter Tools at: revdancatt.com/penplotter/
Log in to post a comment.
// rupertxrussell snowflakes reverse engineered from Dan Catt // https://revdancatt.com/penplotter/036-Snowflakes // see full list of Dan's Pen Plotter Tools at: https://revdancatt.com/penplotter/ // MIT Licence Canvas.setpenopacity(-1); // Black background let turtle = new Turtle(); let angle = 0 //min=0 max=360 step=1 let scale = 10 //min=2 max=20 step=0.5 turtle.penup(); turtle.goto(-50,25); turtle.pendown(); turtle.setheading(angle); // save the current position and heading initialX = turtle.xcor(); initialY = turtle.ycor(); initialHeading = turtle.heading(); // draw the full length of the arm turtle.forward(scale * 7) // return to initial position turtle.jump(initialX,initialY) turtle.setheading(initialHeading) circle(scale); jumpForward(scale * 0.8); triangle(scale) jumpForward(scale); square(scale) jumpForward(scale * 1.5); hexagon(scale) jumpForward(scale * 1.5); equalatralTriangle(scale) function triangle(length){ initialX = turtle.xcor(); initialY = turtle.ycor(); initialHeading = turtle.heading(); turtle.setheading(initialHeading - 90) turtle.forward(length /2); turtle.right(90 + 45); turtle.forward(length * 0.71); turtle.right(90); turtle.forward(length * 0.71); turtle.right(90 + 45); turtle.forward(length /2); turtle.setheading(initialHeading) } function circle(radius){ jumpForward(scale); heading = turtle.heading(); turtle.setheading(heading + 90) turtle.circle(radius * 0.5); turtle.setheading(initialHeading) } function equalatralTriangle(length){ initialX = turtle.xcor(); initialY = turtle.ycor(); initialHeading = turtle.heading(); turtle.setheading(initialHeading + 90) turtle.forward(length /2); turtle.left(120); turtle.forward(length * 1); turtle.left(120); turtle.forward(length * 1); turtle.left(120); turtle.forward(length /2); turtle.jump(initialX,initialY) turtle.setheading(initialHeading) } function hexagon(length){ initialX = turtle.xcor(); initialY = turtle.ycor(); initialHeading = turtle.heading(); turtle.setheading(initialHeading - 60) // reset the scale length = length * 0.6; turtle.forward(length); turtle.right(60) turtle.forward(length); turtle.right(60) turtle.forward(length); turtle.right(60) turtle.forward(length); turtle.right(60) turtle.forward(length); turtle.right(60) turtle.forward(length); turtle.jump(initialX,initialY) turtle.setheading(initialHeading) } function square(length){ initialX = turtle.xcor(); initialY = turtle.ycor(); initialHeading = turtle.heading(); // reset the scale length = length * 0.7; turtle.setheading(initialHeading - 45) turtle.forward(length); turtle.right(90) turtle.forward(length); turtle.right(90) turtle.forward(length); turtle.right(90) turtle.forward(length); turtle.jump(initialX,initialY) turtle.setheading(initialHeading) } function jumpForward(length){ turtle.penup(); turtle.forward(length); turtle.pendown(); }