Objectif
Reproduire en python avec la bibliothèque turtle le genre de graphique de la vidéo du dessus car personnellement je trouve ça joli, voire "mathgique". Je suis à deux doigts d'imprimer des tee-shirts ;))))
Objectif atteins en ce 3 nov 2019 - 17:34
Et mise en musique constructiviste ici en ce 4 nov 2019 - 19:07
Et mise en musique constructiviste ici en ce 4 nov 2019 - 19:07
Recherche de script
Créer un cercle
from turtle import *
penup()
goto(0,-100)
pendown()
circle(100,270)
penup()
home()
Créer x points sur le cercle et affichage des positions
from turtle import *
npt=11
penup()
goto(0,-100)
pendown()
for i in range(npt):
circle(100,360/npt)
dot()
print(position())
penup()
home()
npt=11
penup()
goto(0,-100)
pendown()
for i in range(npt):
circle(100,360/npt)
dot()
print(position())
penup()
home()
Enregistrement des positions dans une liste ou un dictionnaire
from turtle import *
npt=11 #nbre de points
pos={} #dictionnaire
penup()
goto(0,-100)
pendown()
for i in range(npt):
circle(100,360/npt)
dot()
pos[i]=position()
print(position())
penup()
home()
npt=11 #nbre de points
pos={} #dictionnaire
penup()
goto(0,-100)
pendown()
for i in range(npt):
circle(100,360/npt)
dot()
pos[i]=position()
print(position())
penup()
home()
Cercle avec affichage des labels et dictionnaire des points
Remarque:
- Notez l'apparition de la variable rayon en début de script
- Notez la modification de l'ordre des lignes de commande dans la boucle pour obtenir un affichage cohérent
from turtle import *
rayon=200 #rayon du cercle
npt=11 #nbre de points
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
print(position())
circle(rayon,360/npt)
print(pos)
penup()
home()
rayon=200 #rayon du cercle
npt=11 #nbre de points
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
print(position())
circle(rayon,360/npt)
print(pos)
penup()
home()
Tracer d'un trait entre 2 labels en utilisant les coordonnées du dictionnaire
from turtle import *
rayon=200 #rayon du cercle
npt=11 #nbre de points
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
print(position())
circle(rayon,360/npt)
print(pos)
penup()
home()
# tracer des traits
goto(pos[2])
pendown()
goto(pos[4])
rayon=200 #rayon du cercle
npt=11 #nbre de points
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
print(position())
circle(rayon,360/npt)
print(pos)
penup()
home()
# tracer des traits
goto(pos[2])
pendown()
goto(pos[4])
En approche de la solution finale
from turtle import *
rayon=200 #rayon du cercle
npt=10 #nbre de points
table=2
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
print(position())
circle(rayon,360/npt)
print(pos)
penup()
home()
# tracer des traits
for i in range (npt):
penup()
j=i*table
goto(pos[i])
pendown()
goto(pos[j])
Solution finale pour la table de 2
Remarque
- Fonctionne joliment bien pour la table de 2 mais un pb apparaît pour table =3 ou plus
from turtle import *
rayon=200 #rayon du cercle
npt=200 #nbre de points
table=2
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
circle(rayon,360/npt)
penup()
home()
# tracer des traits
for i in range (npt):
penup()
j=i*table
if j>=npt:
j=j-npt
goto(pos[i])
pendown()
goto(pos[j])
rayon=200 #rayon du cercle
npt=200 #nbre de points
table=2
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
circle(rayon,360/npt)
penup()
home()
# tracer des traits
for i in range (npt):
penup()
j=i*table
if j>=npt:
j=j-npt
goto(pos[i])
pendown()
goto(pos[j])
Script ultime
Vidéo pour vous motiver à tester le script ultime, à le comprendre puis à jouer avec la variable table. Ici c'est le résultat pour table=91.
Remerciement à Burkard Polster sans qui je n'aurai même pas eu l'idée de me prendre la tête sur ce genre de dessin.
from turtle import *
# jouer avec les valeurs npt et table
# si dessin pas à la bonne taille jouer alors avec rayon
rayon=200 #rayon du cercle
npt=200 #nbre de points
table=91 #Saisir ici des valeurs entières
# la suite n'est pas à modifier!!
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
circle(rayon,360/npt)
penup()
home()
# tracer des traits
for i in range (npt):
penup()
j=i*table
goto(pos[i])
pendown()
goto(pos[j%npt]) # ce modulo a nécessité une réflexion de plusieurs heures ;)))
# jouer avec les valeurs npt et table
# si dessin pas à la bonne taille jouer alors avec rayon
rayon=200 #rayon du cercle
npt=200 #nbre de points
table=91 #Saisir ici des valeurs entières
# la suite n'est pas à modifier!!
pos={} #dictionnaire
penup()
goto(0,-rayon)
pendown()
for i in range(npt):
dot()
write(i)
pos[i]=position()
circle(rayon,360/npt)
penup()
home()
# tracer des traits
for i in range (npt):
penup()
j=i*table
goto(pos[i])
pendown()
goto(pos[j%npt]) # ce modulo a nécessité une réflexion de plusieurs heures ;)))
Aucun commentaire:
Enregistrer un commentaire
Tout commentaire nous engage ;)