Les polygones
Le but de cette activité est de dessiner des polygones réguliers convexes grâce au module turtle.
Un polygone régulier est un polygone à la fois équilatéral (tous ses côtés ont la même longueur) et équiangle (tous ses angles ont la même mesure).
Un polygone régulier est convexe si ses côtés ne se croisent pas.
Le tableau ci-dessous montre les fonctionnalités du module turtle utilisées :
| Fonctionnalité | Description |
|---|---|
forward(100) |
fait avancer la tortue de 100 pixels |
left(45) |
fait tourner la tortue de 45° vers la gauche |
right(90) |
fait tourner la tortue de 90° vers la droite |
color('red') |
teint la couleur du pinceau en rouge |
Exemple
L'exemple suivant permet de tracer un carré (polygone régulier à 4 côtés) :
Votre figure
Les questions suivantes peuvent être traitées de manière indépendante. Les fonctions précédentes seront chargées en mémoire.
1. Construire un triangle équilatéral
Créer la procédure triangle_equi qui prend en paramètre la longueur de ses côtés longueur et trace un triangle équilatéral.
Aide
On pourra suivre l'algorithme suivant, écrit en langage naturel :
Fonction triangle_equi(longueur) :
Répéter 3 fois :
avancer de longueur
tourner à gauche de 120°
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Votre figure
2. Calcul de l'angle de construction
On souhaite maintenant construire un polygone régulier quel que soit le nombre de ses côtés. La tortue doit donc, dans chaque cas, tourner d'un angle différent. On appelle angle de construction cet angle.
Créer une fonction angle_poly qui renvoie l'angle de construction en fonction du nombre de côtés n du polygone.
Aide 2
On pourra suivre l'algorithme suivant, écrit en langage naturel :
Fonction angle_poly(n):
angle = 360 / n
Renvoyer angle
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
3. Construire un polygone régulier à n cotés
Créer une procédure poly_reg qui construit un polygone régulier en prenant comme paramètres la longueur et le nombre de côtés n.
La fonction angle_poly pourra être réutilisée car déjà chargée en mémoire.
Aide
On pourra suivre l'algorithme suivant, écrit en langage naturel :
Fonction poly_reg(longueur, n) :
angle = angle_poly(n)
Répéter n fois :
avancer de longueur
tourner à gauche de angle
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Votre figure
4. Construire un polygone régulier à n cotés colorés
Modifier la procédure poly_reg pour tracer en bleu les polygones dont le nombre de côtés est pair et en rouge les autres.
La fonction angle_poly pourra être réutilisée car déjà chargée en mémoire.
L'opérateur modulo : %
L'opérateur % permet de trouver le reste de la division euclidienne entre deux nombres.
a % b vaut le reste de la division euclidienne de a par b.
Par exemple Le reste de la division euclidienne de \(13\) par \(3\) est \(1\) car \(13=3 \times 4 + 1\)
>>> 13 % 3
1
Aide
On pourra suivre l'algorithme suivant, écrit en langage naturel :
Fonction poly_reg(longueur, n) :
angle = angle_poly(n)
Si n est pair alors :
couleur : bleue
Sinon :
couleur : rouge
Répéter n fois
avancer de longueur
tourner à gauche de angle
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Votre figure
5. Construire un polygone régulier aléatoire
Créer la fonction poly_aleatoire qui construit un polygone régulier avec un nombre aléatoire de côtés. La fonction prend comme paramètre la longueur des côtés et renvoie True si le polygone créé est un triangle, False sinon.
Le nombre aléatoire de côtés sera choisi entre 3 et 10, inclus l'un et l'autre.
La fonction angle_poly pourra être réutilisée car déjà chargée en mémoire.
Fonction randint(a, b)
La fonction randint(a, b) du module random renvoie un entier aléatoire compris entre les nombres a et b compris l'un et l'autre.
>>> from random import randint
>>> randint(0, 5)
3
Aide
On pourra suivre l'algorithme suivant, écrit en langage naturel :
Fonction poly_aleatoire(longueur) :
n = entier aléatoire entre 3 et 10
poly_reg(longueur, n)
Si n égale 3 :
Renvoyer Vrai
Sinon :
Renvoyer Faux
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Votre figure
6. Construire un nombre aléatoire de polygones réguliers
Écrire un programme qui construit des polygones aléatoires de côté mesurant 100 pixels jusqu'à construire un triangle.
Le nombre aléatoire de côtés sera choisi entre 3 et 10, inclus l'un et l'autre.
Fonction randint(a, b)
La fonction randint(a, b) du module random renvoie un entier aléatoire compris entre les nombres a et b compris l'un et l'autre.
>>> from random import randint
>>> randint(0, 5)
3
Les fonctions angle_poly et poly_aleatoire pourront être réutilisées car déjà chargées en mémoire.
Aide
On pourra suivre l'algorithme suivant, écrit en langage naturel :
est_triangle = Faux
Tant que est_triangle est Faux Faire :
est_triangle = poly_aleatoire(100)
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)

# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)