Notion de fonction Boucle for Module turtle
L'objectif de cette activité est d'initier aux algorithmes en traçant des figures géométriques avec Turtle.
On donne le script suivant, qui permet de dessiner à l'aide du module Turtle un pentagone étoilé, c'est-à-dire un polygone régulier à 5 sommets où sont reliés des sommets non-adjacents.
On rappelle qu'à l'exécution du script, la tortue démarre au centre de l'écran, orientée vers la droite.
from turtle import * def cinq_branches(): for i in range(5): forward(100) right(144)
Justifier l'utilisation d'une boucle for
dans ce programme.
Le pentagone est régulier, ce qui signifie que la longueur des segments et les angles intérieurs sont identiques pour toute la figure. Nous allons donc répéter les mêmes instructions, à savoir dessiner une longueur de 100 px et pivoter de 144 degrés. Ces instructions sont répétées 5 fois car le le pentagone se trace en cinq lignes.
A quoi correspond l'argument donné en ligne 4 ?
Il s'agit de la longueur en pixels de chacune des lignes du pentagone.
On cherche à justifier l'argument en ligne 5.
Rappeler la définition de l'angle au centre dans un polygone et sa valeur dans un pentagone.
L'angle au centre est formé par le centre du polygone et deux sommets adjacents de celui-ci. Dans un polygone, la somme des angles au centre est égale à 360° d'où, dans un pentagone, un angle au centre égal à 72°.
En utilisant le théorème de l'angle inscrit et de l'angle au centre, en déduire la valeur de l'angle à l'intérieur d'une branche du pentagone étoilé.
D'après le théorème de l'angle au centre, l'angle au centre mesure le double de l'angle inscrit interceptant le même arc. On a vu que dans le pentagone étoilé, l'angle au centre est égal à 72°. On en déduit que l'angle à l'intérieur d'une branche est égal à la moitié, soit 36°.
Justifier la valeur de l'argument donné en ligne 7.
Après avoir dessiné une ligne, la tortue doit effectuer un pivot de manière à ce que l'angle à l'intérieur de la branche soit de 36°. Elle effectue donc un pivot égal à
On appelle hendécagone un polygone à 11 sommets. Il n'est pas possible de construire précisément cette figure à la règle et au compas, cependant nous allons voir comment la dessiner à l'aide de Turtle, en modifiant légèrement le programme précédent.
Quels sont les éléments à modifier dans le programme précédent pour dessiner une étoile à 11 branches ?
On va modifier tout d'abord le nombre de boucles ainsi que l'angle de pivot à la ligne 7, puisque notre polygone admet 11 segments. On peut aussi modifier la longueur du segment, mais ce n'est pas nécessaire ici. On peut aussi bien sûr modifier le nom de la fonction !
Voici trois types de polygones étoilés. Qu'ont-ils en commun ? Qu'est-ce qui les distingue ?
Il s'agit de trois hendécagones, composés de onze sommets et onze longueurs. C'est le tracé qui les distingue les uns des autres. Pour celui tout à gauche, c'est un sommet sur trois qui est relié par un segment. Pour celui du milieu, un sommet sur quatre, et enfin pour le dernier, un sommet sur cinq. Pour info, les symboles de Schläfli associés sont respectivement , et .
On chercher à calculer l'angle de pivot à appliquer à la tortue afin qu'elle dessine le polygone de gauche.
Sur la figure ci-contre, les angles et interceptent le même arc de cercle . Quelle relation existe-t-il entre ces deux angles ?
D'après le théorème de l'angle inscrit, vu précédemment, on a .
Quelle est la valeur de l'angle au centre dans un polygone à 11 sommets ?
Dans un polygone à 11 sommets, la valeur de l'angle au centre est de degrés.
Quelle relation existe-t-il entre l'angle au centre du polygone et l'angle ?
En déduire la valeur de l'angle .
Quel est donc le pivot à programmer dans notre fonction pour que la tortue dessine ce type d'hendécagone ?
right(180 - 900/11)
Ecrire et tester une fonction onze_branches()
permettant de dessiner le polygone tout à gauche.
from turtle import * def onze_branches(): for i in range(11): forward(100) right(180-900/11)
Par un raisonnement semblable, calculer l'angle de pivot nécessaire pour réaliser les deux autres hendécagones. Vous pouvez modifier la fonction précédente afin de la tester.
Pour le polygone de type , l'angle intérieur est égal à . Pour le polygone de type , l'angle intérieur est égal à .
Peut-il exister un autre type d'hendécagone non représenté ci-dessus ?
On peut représenter un hendécagone étoilé dont les segments relient un sommet sur deux.
Pour les plus avancés : proposer une seule fonction permettant de tracer tous les polygones de cette activité avec les arguments appropriés.
On pourra proposer par exemple une fonction polygone(n,angle)
avec comme arguments le nombre de sommets du polygone et la valeur de l'angle à intérieur d'une branche de l'étoile. Ainsi, le premier polygone peut être tracé en exécutant polygone(5, 36)
et le tout dernier, avec polygone(11,360/22)
.
from turtle import * def polygone(n,angle): for i in range(n): forward(100) right(180-angle)