Makes a grid of slowflakes, with a few options that should be clear. Other option is to set the grid to be regular - do this by removing randomSize from turtle.forward in the main loop.
Log in to post a comment.
Canvas.setpenopacity(1); const turtle = new Turtle(); turtle.penup(); // put the grid centre in the bottom left (screen is 200x200) const centre_x = -80; const centre_y = 80; turtle.goto(centre_x, centre_y); turtle.pendown(); // change number of snowflake arms var num_sides = 5; var snow_angle = 360 / num_sides; const random_sides = true; // rotate randomly? const random_angle = true; // size // grid set up const gap = 24; const rows = 5; const cols = 5; // Draw a tessellation of snowflakes for (let i = 0; i < rows; i++) { for (let j = 0; j < cols; j++) { const randomSize = Math.floor(Math.random() * 10) + 12; // Random size (edit range) drawSnowflake(turtle, randomSize, random_angle, random_sides); turtle.penup(); turtle.forward(randomSize + gap); turtle.pendown(); } turtle.penup(); // turtle.goto(centre_x, centre_y - (i + 1) * (15 + gap)); // Adjusted for a typical size of 15 turtle.pendown(); } function drawSnowflake(turtle, size, random_angle, random_sides) { // randomly rotate if (random_angle){ var angle = Math.floor(Math.random() * 90); turtle.right(angle) } else { var angle = 0; } if (random_sides) { var num_sides = Math.floor(Math.random() * 5) + 5; var snow_angle = 360 / num_sides; } // random number of outer flakes var outer_sides = Math.floor(Math.random()*3) + 3; for (let i = 0; i < num_sides; i++) { drawSnowflakeArm(turtle, size, outer_sides); turtle.right(snow_angle); } // return back to normal direction turtle.left(angle); } function drawSnowflakeArm(turtle, size, outer_sides) { const armLength = size / 2; const subArmLength = size / 6; turtle.forward(armLength); for (let j = 0; j < outer_sides; j++) { turtle.forward(subArmLength); turtle.backward(subArmLength); turtle.right(360/outer_sides); } turtle.backward(armLength); }