Dans notre projet de NSI de Novembre 2023, nos enseignants nous ont demandé de créer un programme informatique qui génère une image , en se concentrant sur le concept d’art génératif.
Présentation du sujet:
Partant du tableau des 42 thèmes abordés en classe, notre attention s’est focalisée sur la pendule, symbole puissant du temps. À partir de là, l’idée centrale du projet a émergé : “L’engrenage du temps” visant à représenter à l’aide de turtle notre image du temps .
Sur la représentation que nous avons, on peut observer plusieurs composants tels qu’une pendule, un engrenage, un dégradé et un disque. Nous allons les examiner en détail au fil de la présentation.
Analyse du script:
Le fond :
def degradé(): turtle.colormode(255) turtle.speed(0) global compt global fr global fg global fb while compt != 350 : turtle.pendown() turtle.pencolor(fr, fg, fb) turtle.pensize(3) turtle.forward(510) turtle.penup() turtle.right(180) turtle.forward(510) turtle.right(90) turtle.forward(1) turtle.right(90) fr += 1 fg += 1 fb += 1 compt += 1 if compt > 200: fr -= 1 fg -= 1 fb -= 1
Pour commencer, nous avons programmer le fond avec un dégradé allant du noir au gris.
Dans la fonction dégradé il y a une boucle qui se répète 350 fois dans laquelle la tortue dessine ligne après ligne le dégradé en indentant les variables r,g,b de 1 a chaque ligne sans jamais dépasser la valeur 200.
Engrenages:
def n_engrenage(trait): turtle.left(90) turtle.forward(trait * 2) turtle.right(45) turtle.pencolor(couleur) turtle.pensize(8) turtle.fillcolor(couleur) turtle.begin_fill() for i in range(12): turtle.forward(trait) turtle.right(120) turtle.forward(trait) turtle.left(90) turtle.end_fill()
La fonction “n_engrenage” dessine l’ engrenage à l’aide du module turtle.
La boucle “for” fait répéter 12 fois une suite d’instructions qui dessinent l’engrenage puis la fonction “turtle.fillcolor” viens définir la couleur de remplissage de l’engrenage qui débute et se finit grâce aux fonctions “turtle.begin_fill” et “turtle.end_fill”.
Pendule:
def disque(rayon, x, y, couleur=(1, 1, 1)): penup() goto(x, y - rayon) pendown() pencolor(couleur) fillcolor(couleur) begin_fill() circle(rayon) end_fill() x = 25 y = 175 radius = 30 color = (255, 255, 0) disque(radius, x, y, color) import turtle pen = turtle pen.penup() pen.goto(65, 190) pen.pendown() pen.pencolor("black") pen.goto(175, 350) import turtle #fonction courbe t = turtle t.penup() t.goto(90,173) t.pendown() t.right(50) for i in range(55): t.forward(1) t.right(1) import turtle #fonction courbe 2 t2 = turtle t2.penup() t2.goto(100,180) t2.pendown() t2.right(290) for i in range(75): t2.forward(1) t2.right(1) turtle.hideturtle()
Pour fabriquer la pendule, nous avons commencé avec un plan donné par nos professeurs de NSI. Il comportait plusieurs disques placés de façon aléatoire. Ensuite, nous l’avons simplifié en utilisant les instructions « begin_fill() » et « end_fill() » pour remplir les disques. Ensuite, nous avons ajouté une simple ligne en spécifiant un point de départ et un point d’arrivée. Enfin, nous avons inclus deux courbes pour donner l’impression que la pendule bougeait.
Les problèmes rencontrés:
Parmis les nombreux problèmes rencontrés il y avait que l’exécution de la fonction dégradé prenait très longtemps a finir de s’exécuter (env 1min), pour ne pas perdre temps à relancer tout le code a chaque modification on a trouvé la solution de mettre un “#” devant la ligne qui exécutait la fonction dégradé ce qui permettait de faire passer cette ligne pour un commentaire et de simplement enlever le # quand on voulait exécuter le script complet.