TD Turtle⚓︎
Consigne Générale
Chaque question de ce TD :
- doit utiliser au moins une fois la boucle
for
(sauf si la question est trop simple..) - peut utiliser des fonctions (informatiques) dès que possible/souhaitable
Le site en ligne suivant peut être utilisé comme solution alternative (en cas de problème d'utilisation du module Turtle en local) : https://trinket.io/turtle
Traits & Figures⚓︎
Traits Simples⚓︎
-
Dessiner un Trait de Longueur 200px :
- en allant vers l'Est/la Droite
- en allant vers l'Ouest/la Gauche
- en allant vers le Nord/le Haut
- en allant vers le Sud/le Bas
Col
Col
-
Dessiner un trait horizontal, allant vers l'Est, de longueur totale 200px, en pointillés, chacun de longueur 5px (aussi bien le trait, ainsi que les espaces entre les traits)
-
Dessiner un Trait de 200px avec un angle de 30° par rapport à l'axe des x :
Escalier de 7 marches⚓︎
Dessiner un escalier avec 7 marches, dont chaque marche admet :
- une hauteur de 18px
- une longeur horizontale de 27px
Fleur⚓︎
Dessiner une Fleur dont les pétales sont des Losanges
Utiliser le modèle de base suivant pour construire Une Fleur comme ci-contre, de sorte que :
Col
- Chaque ligne admet une longueur de 60px
- les angles sont soit de 30° (angle1), soit de 150° (angle2)
Col
Col
Col
Spirales de Traits⚓︎
Dessiner des Spirales de Traits :
Aide
On peut commencer par se demander :
- Si un trait est de longueur
x
à un instant donné, quelle longueur minimale (au jugé) doit faire le trait suivant (en fonction dex
)? - Que peut-on dire du nombre de degrés à tourner vers la gauche (à chaque 'coin' de la spirale) ? (même une valeur très approchée, selon vous)
Descente de Ski⚓︎
Commencer par définir 200x200
comme taille de fenêtre graphique, avec la commande Screen().setup(200,200)
. Ensuite :
Construire une Piste de Ski comme sur la figure suivante :
Aide
- Répéter plusieurs fois la contruction d'un trait
- les deux extrémités du trait appartiennent aux côtés horizontal (bas) et vertical (droit)
- Etat initial : relier par un trait le point en haut à droite, au point en bas à droite
- le point vertical descend de la même quantité que le point horizontal se déplace à gauche
Marche Aléatoire⚓︎
-
La Marche Aléatoire de la Tortue. Dessiner :
- une succession de 100 Pas/Traits
- chaque pas est de longueur fixe 10px
- chaque futur trait prend une nouvelle direction alatoire : EST, OUEST, NORD ou SUD
- Facultatif : On pourra également, si vous y arrivez :
- calculer et afficher la distance (en nombre de pas) entre le point de départ et le tout dernier point d'arrivée
-
calculer et afficher la durée totale de parcours, grâce au module time, inclus dans la bibliothèque standard :
from time import time start = time() # Top départ du chronomètre # ... # Algorithme à chronométrer # ... end = time() # Top arrêt du chronomètre print("durée=", end - start)
Astuce
- Vous pouvez vous amuser à afficher un logo de Tortue, au lieu d'une icone triangle, avec la commande
shape("turtle")
. Tous les logos disponibles (cf. ici) sont : “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”. - Pensez à accélérer le tracé avec la commande
speed(0)
ouspeed("fastest")
Polygones⚓︎
Triangles⚓︎
-
Dessiner un triangle dont les 3 sommets ont pour coordonnées
(0,0)
,(300,100)
et(200,50)
-
Dessiner un triangle équilatéral dont chaque côté vaut 100px
Aide
Tourner à gauche de \(\dfrac{360°}{3} = 120°\)
Par exemple avec un Bord et un Fond de couleur rouge
Astuce
On pourra par exemple :
- choisir entre deux méthodes pour changer de couleur entre deux formes :
Méthode 1 - définir une variable
couleur
pour l'indice des couleurs - initialiser le compteur à 0 :
couleur=0
- puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
- définir une variable
Méthode 2 - Stocker les couleurs dans une liste
couleurs = ["red", "orange", "yellow", "green", "blue", "purple"]
, puis parcourir la liste des couleurs avec une bouclefor
, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
- Stocker les couleurs dans une liste
- accélérer le tracé avec
speed(0)
- choisir entre deux méthodes pour changer de couleur entre deux formes :
-
Kaleidoscope de Triangles
Astuce
Pensez à accélérer le tracé avec la commande speed(0)
ou speed("fastest")
Vortex de Triangles⚓︎
Dessiner un Vortex de Triangles Équilatéraux, tel que :
- Le triangle équilatéral initial a un côté de 50px
- A chaque nouvelle itération de triangles équilatéraux :
- le côté de chaque nouveau triangle équilatéral augmente légèrement
- chaque triangle équilatéral subit une légère rotation (à droite/gauche choisissez votre camp... )
Aide
- En fait ce sont presque des triangles équilatéraux, mais pas exactement : il s'agit en fait d'une illusion optique, qui donne l'illusion que ce sont des triangles équilatéraux.
- Inspirez-vous plutôt de votre travail sur les Spirales de Traits, mais en modifiant légèrement le code qui calculait l'augmentation du côté
x
entre chaque nouvelle itération de triangle équilatéral.
Carrés⚓︎
-
Un Carré de côté 100px
Aide
Tourner à gauche de \(\dfrac{360°}{4} = 90°\)
Par exemple avec des Bords et un Fond de couleur rouge.
Astuce
On pourra par exemple :
- choisir entre deux méthodes pour changer de couleur entre deux formes :
Méthode 1 - définir une variable
couleur
pour l'indice des couleurs - initialiser le compteur à 0 :
couleur=0
- puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
- définir une variable
Méthode 2 - Stocker les couleurs dans une liste
couleurs = ["red", "orange", "yellow", "green", "blue", "purple"]
, puis parcourir la liste des couleurs avec une bouclefor
, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
- Stocker les couleurs dans une liste
- accélérer le tracé avec
speed(0)
- choisir entre deux méthodes pour changer de couleur entre deux formes :
-
Ampliation de Carrés
Dessiner une ampliation de carrés telle que:
- Le plus petit des carrés a un côté de 10px
- la taille (du côté) des carrés augmente de 10px, entre deux carrés
- Ligne de Carrés
Dessiner une ligne de 10
carrés contigüs, telle que chaque carré (élémentaire) a un côté de 20px
- Grille de Carrés
Dessiner une grille de 10x10
carrés, telle que :
- Chaque carré (élémentaire) a un côté de 20px
- Kaleidoscope de Carrés
Astuce
Pensez à accélérer le tracé avec la commande speed(0)
ou speed("fastest")
- Spirale de Carrés
Dessiner une Spirale de Carrés telle que:
- Le côté du carré initial vaut 200px
- La spirale contient environ une trentaine de carrés
- La taille des carrés diminue à chaque étape (par exemple, la taille diminue de \(\dfrac 19\) entre chaque itération)
- chaque carré subit une légère rotation comme sur la figure Trinket ci-contre
Vortex de Carrés⚓︎
Dessiner un Vortex de Carrés, tel que :
- Le carré initial a un côté de 50px
- A chaque nouvelle itération de carrés :
- le côté de chaque nouveau carré augmente légèrement
- chaque carré subit une légère rotation (à droite/gauche choisissez votre camp... )
Aide
- En fait ce sont presque des carrés, mais pas exactement : il s'agit en fait d'une illusion optique, qui donne l'illusion que ce sont des carrés.
- Inspirez-vous plutôt de votre travail sur les Spirales de Traits, mais en modifiant légèrement le code qui calculait l'augmentation du côté
x
entre chaque nouvelle itération de carrés
Rectangles⚓︎
-
Un Rectangle dont les côtés sont Largeur=50px, et Hauteur=100px
Par exemple avec un Bord et un Fond de couleur rouge
-
Dessiner le Drapeau Français ! et/ou tout autre drapeau (conseil: avec des formes simples) !
Pentagone⚓︎
-
Un Pentagone Régulier
Aide
Tourner à gauche de \(\dfrac{360°}{5} = 72°\)
-
Vortex de Pentagones
Dessiner un Vortex de Pentagones, tel que :
- Le pentagone initial a un côté de 50px
- A chaque nouvelle itération de pentagones :
- le côté de chaque nouveau pentagone augmente légèrement
- chaque pentagones subit une légère rotation (à droite/gauche choisissez votre camp... )
Aide
- En fait ce sont presque des pentagones, mais pas exactement : il s'agit en fait d'une illusion optique, qui donne l'illusion que ce sont des pentagones.
- Inspirez-vous plutôt de votre travail sur les Spirales de Traits, mais en modifiant légèrement le code qui calculait l'augmentation du côté
x
entre chaque nouvelle itération de pentagones.
Etoile à 5 branches⚓︎
-
Dessiner une étoile à \(5\) branches dont la longueur d'une branche vaut 200px
Aide
Tourner à gauche de \(144°\)
-
Drapeau Européen
Utiliser la question précédente pour dessiner un Drapeau Européen
Hexagone⚓︎
-
Un Hexagone Régulier
Aide
Tourner à gauche de \(\dfrac{360°}{6} = 60°\)
Polygones Réguliers à n côtés⚓︎
-
Implémentez en Python, grâce au module Turtle, l'algorithme suivant qui est donné en Pseudo-code.
Que fait-il ?n prend la valeur 5 coté prend la valeur 50 Répéter n fois: tournerGauche(360/n) avancer(coté) tournerDroite(2*360/n) avancer(coté)
Cercles & Arcs de Cercles⚓︎
Cercles et Disques de Couleur⚓︎
Dessiner :
- Un cercle de rayon 50px qui tourne dans le sens Anti-Horaire (sens contraire des aiguilles d'une montre)
suivi de :
- Un cercle de rayon 50px qui tourne dans le sens Horaire (sens des aiguilles d'une montre)
Dessiner un disque de rayon 50px, dont les bords ET le fond est bleu.
Lignes de Disques⚓︎
Dessiner une Ligne de 6 Disques AVEC Couleur de Fond.
Astuce
On pourra par exemple :
- choisir entre deux méthodes pour changer de couleur entre deux formes :
Méthode 1 - définir une variable
couleur
pour l'indice des couleurs - initialiser le compteur à 0 :
couleur=0
- puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
- définir une variable
Méthode 2 - Stocker les couleurs dans une liste
couleurs = ["red", "orange", "yellow", "green", "blue", "purple"]
, puis parcourir la liste des couleurs avec une bouclefor
, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
- Stocker les couleurs dans une liste
- accélérer le tracé avec
speed(0)
Kaleidoscope de Cercles⚓︎
Dessiner un Kaléidoscope de Cercles :
Astuce
Pensez à accélérer le tracé avec la commande speed(0)
ou speed("fastest")
Disques en Arc de Cercle⚓︎
Dessiner des Disques de Couleur disposés en Arc de Cercle :
Astuce
On pourra par exemple :
- choisir entre deux méthodes pour changer de couleur entre deux formes :
Méthode 1 - définir une variable
couleur
pour l'indice des couleurs - initialiser le compteur à 0 :
couleur=0
- puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
- définir une variable
Méthode 2 - Stocker les couleurs dans une liste
couleurs = ["red", "orange", "yellow", "green", "blue", "purple"]
, puis parcourir la liste des couleurs avec une bouclefor
, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
- Stocker les couleurs dans une liste
- accélérer le tracé avec
speed(0)
- Comment faire pour que les couleurs soient alternées, mais se répètent en boucle tous les 6 disques ?
- Quelle méthode (la 1 ou la 2) vous semble préférable ? et pourquoi ?
Spirale Circulaire⚓︎
Dessiner une Spirale circulaire.
Aide
On pourra répéter une vingtaine de fois (avec boucle for
) les commandes suivantes :
- tracer un arc de cercle avec
circle(r,a)
oùr
est le rayon eta
l'angle de l'arc - augmenter le rayon
r
proportionnellement à chaque itération - choisir un angle de
a=90°
Yin & Yang⚓︎
Soleil⚓︎
Dessiner un Soleil, avec les caractéristiques suivantes :
- Un Cercle central de rayon 50px
- \(120\) rayons de soleil autour du cercle
- un angle de
3°
sépare chaque rayon de soleil
Dessin Algorithmique⚓︎
-
Le site Wellesley Edu répertorie quelques exemples d'images artistiques à créer avec Turtle. Tentez de les reproduire et de les modifier.
-
(()) Créez vos propres oeuvres artistiques ! Seule votre imagination est la Limite. Soyez créatives et créatifs !
Art Aléatoire⚓︎
-
Génération de Polygones Aléatoires
-
Génération d'un Vortex de Rectangles aux Couleurs Aléatoires (l'Animation est longue - 10 min, prévoir de la lancer longtemps en avance - et finit par créer des rectangles de couleur)
Résultat Attendu :
- Créer votre Oeuvre d'Art Aléatoire personnelle ! Soyez Créatives et Créatifs !
Références⚓︎
- Revue Sésamath : Algorithmes de Polygones Étoilés
- Wellesley Education : Images Artistiques avec Turtle