La fractale est couramment sélectionnée comme thème pour la création d’images en raison de sa capacité à produire des motifs d’une complexité infinie et captivante. Cette fusion entre l’art et les mathématiques permet de représenter de manière créative la beauté des structures complexes, qu’elles soient naturelles ou urbaines.
Sommaire
Projet
Donc pour le projet nous avons décider de faire une fractale (l’arbre de Pythagore) sur un dégradé et faire un petit soleil sur le coté haut droit de l’image. Pour cela nous avons mis les script grâce à la bibliothèque turtle.
Le script
Donc pour faire le script nous nous aidons de la bibliothèque turtel. Mais tous les structure construise sont faite grâce à « def ». Nous avons donc du tous les appels a la fin un part un de manier logique et ordonné.
Le script en detailer
from turtle import * import turtle from random import randint from PIL import Image try: from PIL import Image pillow_installed = True except: print("Oops! - ModuleNotFoundError: No module named 'PIL' - RTFM :") print("https://nsi.xyz/py2png") pillow_installed = False # Uniquement des lettres, des chiffres, un tiret. Rien d'autre. https://learn.microsoft.com/fr-fr/windows/win32/fileio/naming-a-file titre = "Fractale - Un arbre fractaleà" # Définir le titre de la fenêtre de turtle + propagande ^^ title(titre+" | Au lycée, la meilleure spécialité, c'est la spé NSI") # definir la taille de la fenêtre en 720p (Largeur, Hauteur, abscisse départ, ordonnée du départ) setup(1280, 720) colormode(255) speed(0)
Tout d’abord « setup(1280, 720) » aident à configurer la fenêtre graphique Turtle pour votre dessin fractal, en lui donnant une taille spécifique (1280×720 pixels)
Puis colormode(255) serre à modifié le mode de couleur pour le rendre plus lisible (de 0 à 255 pour RGB)
Et enfin speed(0) serre à régler la vitesse de dessin pour qu’elle soit la plus rapide possible (vitesse 0).
Le fond:
def fond(): penup() rciel = 0 gciel = 0 bciel = 0 hauteur = -360 goto(-642,-358) pendown() while hauteur != 360: pencolor(round(239 + rciel), round(200 + gciel), round(209 + bciel)) forward(1280) hauteur += 1 goto(-640, hauteur) rciel += (-29/180) gciel += (2/45) bciel += (7/720)
Cette fonction « fond()
» dessine un ciel en dégradé en utilisant une boucle « while
» pour créer des bandes horizontales de couleur qui simulent un dégrade sur un ciel . Les composantes de couleur « rciel » « gciel » « bciel » changent progressivement à mesure que la hauteur augmente, créant un effet de transition de couleur réaliste.
La fractale arbre
def arbre(n,longueur): down() if n==0: color('green') forward(longueur) # avance backward(longueur) # recule color('#3f1905') else: width(n) forward(longueur/3) #avance left(angle) # tourne vers la gauche de angle degrés arbre(n-1,longueur*2/3) right(2*angle) # tourne vers la droite de angle degrés arbre(n-1,longueur*2/3) left(angle) # tourne vers la gauche de angle degrés backward(longueur/3) # recule
La fonction arbre
à deux paramètres « n"
et « longueur
» pour contrôler le niveau de récursion et la longueur de la branche.
La condition « if n == 0
» permet de voir le cas de base dais que la profondeur de récursion atteint zéro.
En résumé, ce code utilise la récursion pour faire une fractale d’arbre, créant des branches qui se divise en sous-branches. Le niveau de récursion contrôle le détail de l’arbre, et la longueur de la branche diminue à chaque niveau, formant ainsi une structure d’arbre sur la base d’une fractale.
Le soleil
def soleil(): speed(0) i = 0 goto(-590, 305) while i < 200: down() color('#FF8C00') right(90) forward(55) right(180) forward(55) right(90) circle(5, 2) i = i + 1
Ce processus est répété jusqu’à ce que i
atteigne 200 créant une série de formes qui se superposent pour former une figure qui ressemble à un soleil.
fond() hideturtle() # cache la tortue up() # lève le stylo right(90) # tourne de 90 degrés vers la droite forward(300) # avance de 300 pixels left(180) # fait un demi-tour goto(0,-350) angle = 50 color('#3f1905') arbre(11,700) # exécute la macro hideturtle() # cache la tortue up() # lève le stylo soleil()
On appelle tout les fonction maintenant
Vers le PNG
image = getcanvas() Fractale=titre+"_"+hex(randint(2**30+2**25,2**30+2**25+2**24-1))[2:] # Génère un fichier .ps image.postscript(file=Fractale+".ps", colormode='color') # Ouvre le fichier .ps et génère le fichier .png psimage = Image.open(Fractale+".ps") psimage.save(Fractale+".png")