import kandinsky as kd import math # Fonction de dessin d'une branche de l'arbre fractal def dessiner_branche(x, y, angle, longueur, epaisseur): if longueur < 2: return # Calcul des coordonnées de la fin de la branche x2 = x + int(longueur * math.cos(angle)) y2 = y - int(longueur * math.sin(angle)) # Dessiner la branche (un rectangle mince ici) kd.fill_rect(x, y, epaisseur, epaisseur, kd.color(0, 128, 0)) # Couleur verte # Dessiner la ligne représentant la branche dessiner_ligne(x, y, x2, y2, epaisseur) # Dessiner les branches suivantes (récursion) nouvelle_longueur = longueur * 0.7 nouvelle_epaisseur = max(1, epaisseur - 1) # Angle gauche et droite pour les branches angle_gauche = angle + math.pi / 6 # 30 degrés à gauche angle_droite = angle - math.pi / 6 # 30 degrés à droite # Branches récursives dessiner_branche(x2, y2, angle_gauche, nouvelle_longueur, nouvelle_epaisseur) dessiner_branche(x2, y2, angle_droite, nouvelle_longueur, nouvelle_epaisseur) # Fonction pour dessiner une ligne entre deux points def dessiner_ligne(x1, y1, x2, y2, epaisseur): dx = x2 - x1 dy = y2 - y1 dist = int(math.sqrt(dx * dx + dy * dy)) for i in range(dist): x = int(x1 + i * dx / dist) y = int(y1 + i * dy / dist) kd.fill_rect(x, y, epaisseur, epaisseur, kd.color(0, 128, 0)) # Couleur verte # Point de départ de l'arbre x0 = 160 # Centre horizontal de l'écran y0 = 220 # Bas de l'écran # Dessiner l'arbre fractal dessiner_branche(x0, y0, -math.pi / 2, 60, 6)