Article épinglé

mardi 12 novembre 2019

Turtle, spirale et SNCF

En ce 12 novembre, quelque part sur la ligne entre Nantes et Montpellier, approche de la spirale pour ne pas perdre totalement la journée.
Et comme c'est inoui, je découvre:
  • La ligne TGV et son WIFI inoui
    tiens je viens d'avoir un badge 300 km/h ;)))
  • L'application GeoGebra en ligne

Etape 1 - le principe de construction avec GeoGebra

Avec GeoGebra cela donne ça:
  • Je trace un arc de cercle de B vers C de centre A et de rayon 1
  • Je trace à la suite un arc de cercle de C vers E de centre D et de rayon 2
  • Je trace à la suite un arc de cercle de E vers G de centre F et de rayon 4
  • Je trace à la suite un arc de cercle de G vers I de centre H et de rayon 8
Pour utiliser GeoGebra, j'ai juste créé un compte en utilisant mon adresse @nta.com (cette information est à destination de mes élèves ;)

Compréhension de la spirale

  • les valeurs des rayons successifs sont:      1    -    2    -     4   -    8    - ...
    elles correspondent donc à des puissances de 2
    les valeurs successives des rayons sont: 2**0 - 2**1 - 2**2 - 2**3 - ...
    (comprendre 2**3 comme 2*2*2 soit 2 au cube)
  • je quitte un point en gardant la tangente au point et en appliquant le nouveau rayon
  • j'image une boucle for i in range pour automatiser la construction

Etape 2 - l'application du principe en python avec Thonny

Commandes utilisées

  • penup()
    => lève le stylet et ne trace rien
  • pendown()
    => pose le stylet et dessine
  • dot()
    => place un point
  • goto(valeur de x, valeur de y)
    => se rend à (x,y)
  • circle(rayon du cercle, angle de l'arc)
    => trace un arc de cercle en partant tangentiellement de se position initiale
  • write(nbre)
    => dessine la valeur nbre à proximité de la position du point
  • for i in range (x):
    => boucle bornée pour i allant de 0 à x-1

Expérimentation

L'objectif est ici de comprendre ce qui se passe dans les lignes du dessous. Le seul bon conseil, copier/coller le script dans Thonny puis testez le... Le dessin du dessous est le résultat du script!
---

# import de la bibliothèque turtle
from turtle import *

variable=100
goto(0,-variable)

penup()
goto(variable,0)
pendown()

circle(0.5*variable,90)
dot()
write("A")

circle(1*variable,-90)
dot()

for i in range(3):
    circle(i*variable,180)
    dot()
    write(i*variable)

Etape 3 - la concrétisation 

But à atteindre

Tracer une spirale dont les rayons successifs seront des puissances de 2 et dont l'angle de l'arc de cercle sera de 90°.
L'affichage des points et des valeurs des rayons n'est en rien obligatoire, mais cela peut aider pour la compréhension...

Algorithme

  • Importer la tortue ;)
  • Décaler le point de départ si besoin
    (penup / pendown)
  • Faire un choix du nombre de spire (dans le dessin du dessus j'ai range(9) ;)
    • calculer rayon i
    • dessiner l'arc
    • si besoin dessiner son point et écrire la valeur du rayon

Script 

from turtle import *
# variable rayon initial
rayoninit=1
dot()

# mise en place
penup()
goto (0,-50)
pendown()

# boucle
for i in range (9):
    rayon=rayoninit*2**i
    circle (rayon,90)
    dot() # marquage du point
    write(rayon*2**i) # impression valeur pour comprendre

Fin du voyage... Allons bosser

Aucun commentaire:

Enregistrer un commentaire

Tout commentaire nous engage ;)