oh christmas tree
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 = -82;
const centre_y = 95;
turtle.goto(centre_x, centre_y);
turtle.pendown();
// size
const rows = 5
const cols = 8;
// tree dims
const num_branches = 8;
const tree_height = 42;
const gap = tree_height +5;
// tessalate
turtle.right(90);
let idx = 0
for (let row = 0; row < rows; row++) {
for (let col = 0; col < cols; col++) {
const x = centre_x + col*gap/2;
const y = centre_y - row*gap;
turtle.goto(x, y);
turtle.pendown();
// Flip every other tree
const flip = col % 2 === 0 ? 0 : 1;
turtle.right(flip * 180);
// Draw a tree
for (let i = 0; i < num_branches; i++) {
const branch_len = tree_height/4 * i / 4;
branch(branch_len, 60);
turtle.penup();
turtle.forward(Math.floor(tree_height / num_branches));
turtle.pendown();
}
// draw stem
turtle.forward(Math.floor(tree_height / num_branches));
turtle.backward(tree_height);
// move to next
turtle.penup();
turtle.goto(x, y);
// rotate back to normal
turtle.right(flip * 180);
idx ++;
}
}
function branch(length, angle){
turtle.penup();
turtle.right(angle);
turtle.forward(length);
turtle.pendown();
turtle.backward(length);
turtle.left(2*angle);
turtle.forward(length);
turtle.penup();
turtle.backward(length);
turtle.pendown();
turtle.right(angle);
}