### Oh christmas tree

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);

}

```