function growTree(ctx, x1, y1, length, width, angle) {
const x2 = x1 + (Math.cos(angle) * length);
const y2 = y1 + (Math.sin(angle) * length);
drawBranch(ctx, x1, y1, x2, y2, width);
if (length > 1.5) {
const nextLength = () => length * (0.7 + (random() * 0.05));
const angleChange = () => Math.PI / (4 + (random() * 3));
growTree(ctx, x2, y2, nextLength(), width * 0.8, angle + angleChange());
growTree(ctx, x2, y2, nextLength(), width * 0.8, angle - angleChange());
}
}