let birds_travel_length = 0;
tree_image = createGraphics(width, height);
tree_recursion(500, height, 40, -0.2);
tree_recursion(500, 720, 50, 0.6);
tree_recursion(900, 720, 50, 0.6);
birds_travel_length += 2;
if (birds_travel_length > 1100) birds_travel_length = 0;
for (i = 0; i < 30; i++) {
rays_color = 255 * (i / 29);
z = i * 40 - (shine_frequency % 40);
let rays_radius = 3.5 * height * (1 - z / (99 + z));
circle(400, 200, rays_radius);
for (y = 80; y < 200; y += 40) {
for (x = width; x -= 40;) {
draw_bird((y + birds_travel_length) % 1100, (width - ((y + birds_travel_length) % width / 4)) - 800, 15);
function calculate_angle_increment() {
return angle_increment = sin((angle_increment - 11) ** 9);
function tree_recursion(x, y, radius, angle) {
let angle_increment = calculate_angle_increment();
tree_image.circle(x, y, radius);
x - (sin(angle) * radius) / 2,
y - (cos(angle) * radius) / 2,
angle + angle_increment / 4
if (angle_increment > 0.94) {
tree_recursion(x, y, radius * 0.5, angle_increment * 0.5);
function draw_bird(a, c, d) {
bezier(a, c + d, a, c, a + d, c, a + 2 * d, b);
bezier(a, c + d, a, c, a - d, c, a - 2 * d, b);