Je me suis amusé Í écrire un script assez simple qui dessine des étoiles
avec Turtle :
from turtle import *
#speed(0)
nb=int(input('Itérations '))
ang=float(input('Angle Í gauche '))
for x in range (nb):
forward(300)
right(ang+180)
Avec 5 itérations et une rotation Í droite de 216° (180°+36°), j'obtiens
bien un pentagramme. C'est assez simple, parce qu'on est lÍ sur des
triangles d'or.
Si je passe Í 20 itérations et des rotations Í droite de 198°(180° +
18°), j’obtiens quelque chose d’intéressant.
Ce que je ne sais pas, c’est comment m’assurer que mon étoile est bien
exacte, c’est Í dire que le curseur revient exactement Í son point de
départ. La précision de Python est suffisamment élevée pour donner
l’impression de l’exactitude.
Existe-t-il une formule qui permet, Í partir du nombre de branche qu’on
veut obtenir, de connaÍ®tre l’angle de rotation du curseur ? Mes
connaissances en géométrie trébuchent...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
[diapublication, copie et suivi vers fr.sci.maths] Bonsoir, Le 20/07/2022 19:59, Dominique a écrit :
Je me suis amusé Í écrire un script assez simple qui dessine des étoiles avec Turtle : from turtle import * #speed(0) nb=int(input('Itérations ')) ang=float(input('Angle Í gauche ')) for x in range (nb): forward(300) right(ang+180) Avec 5 itérations et une rotation Í droite de 216° (180°+36°),
C'est-Í -dire une rotation Í gauche de 144° (180°âˆ’36°)
j'obtiens bien un pentagramme. C'est assez simple, parce qu'on est lÍ sur des triangles d'or. Si je passe Í 20 itérations et des rotations Í droite de 198°(180° + 18°),
Du coup des rotations Í gauche de 162°.
j’obtiens quelque chose d’intéressant. Ce que je ne sais pas, c’est comment m’assurer que mon étoile est bien exacte, c’est Í dire que le curseur revient exactement Í son point de départ. La précision de Python est suffisamment élevée pour donner l’impression de l’exactitude. Existe-t-il une formule qui permet, Í partir du nombre de branche qu’on veut obtenir, de connaÍ®tre l’angle de rotation du curseur ? Mes connaissances en géométrie trébuchent...
DéjÍ , pour que ça finisse par tomber juste, il suffit que l'angle soit un multiple rationnel d'un tour complet, soit 2pi ou 360°. En degrés, vu que 360 est un nombre entier, il suffit que l'angle soit rationnel. Mais on peut faire mieux, et savoir au bout de combien d'itérations on revient au point de départ pour la première fois. Soit (p/q)Í—360° l'angle choisi. Si p et q sont premiers entre eux, alors il faudra exactement q itérations pour que l'angle soit pÍ—360°, soit 0° modulo 360°. Par ailleurs, pour qu'une rotation « Í droite » ne se transforme pas en rotation Í gauche, il suffit de choisir p et q de sorte que 0 < p < q/2. Enfin, si tu veux des polygones étoilés et pas de bêtes polygones convexes, il suffit de choisir p > 1, donc 2 ≤ p < q/2. Reprenons tes exemples. Ta rotation Í droite de 216°, c'est (3/5)Í—360° (ou (2/5)Í—360° si tu choisis l'angle le plus petit). Il faut donc 5 itérations. Quant Í ta rotation de 198°, c'est (11/20)Í—360° ou (9/20)Í—360°, donc 20 itérations. [suivi vers fr.sci.maths pour avoir d'autres avis] -- Olivier Miakinen
[diapublication, copie et suivi vers fr.sci.maths]
Bonsoir,
Le 20/07/2022 19:59, Dominique a écrit :
Je me suis amusé Í écrire un script assez simple qui dessine des étoiles
avec Turtle :
from turtle import *
#speed(0)
nb=int(input('Itérations '))
ang=float(input('Angle Í gauche '))
for x in range (nb):
forward(300)
right(ang+180)
Avec 5 itérations et une rotation Í droite de 216° (180°+36°),
C'est-Í -dire une rotation Í gauche de 144° (180°âˆ’36°)
j'obtiens
bien un pentagramme. C'est assez simple, parce qu'on est lÍ sur des
triangles d'or.
Si je passe Í 20 itérations et des rotations Í droite de 198°(180° +
18°),
Du coup des rotations Í gauche de 162°.
j’obtiens quelque chose d’intéressant.
Ce que je ne sais pas, c’est comment m’assurer que mon étoile est bien
exacte, c’est Í dire que le curseur revient exactement Í son point de
départ. La précision de Python est suffisamment élevée pour donner
l’impression de l’exactitude.
Existe-t-il une formule qui permet, Í partir du nombre de branche qu’on
veut obtenir, de connaÍ®tre l’angle de rotation du curseur ? Mes
connaissances en géométrie trébuchent...
DéjÍ , pour que ça finisse par tomber juste, il suffit que l'angle soit un
multiple rationnel d'un tour complet, soit 2pi ou 360°. En degrés, vu que
360 est un nombre entier, il suffit que l'angle soit rationnel.
Mais on peut faire mieux, et savoir au bout de combien d'itérations on
revient au point de départ pour la première fois. Soit (p/q)Í—360° l'angle
choisi. Si p et q sont premiers entre eux, alors il faudra exactement q
itérations pour que l'angle soit pÍ—360°, soit 0° modulo 360°.
Par ailleurs, pour qu'une rotation « Í droite » ne se transforme pas en
rotation Í gauche, il suffit de choisir p et q de sorte que 0 < p < q/2.
Enfin, si tu veux des polygones étoilés et pas de bêtes polygones
convexes, il suffit de choisir p > 1, donc 2 ≤ p < q/2.
Reprenons tes exemples. Ta rotation Í droite de 216°, c'est (3/5)Í—360° (ou
(2/5)Í—360° si tu choisis l'angle le plus petit). Il faut donc 5 itérations.
Quant Í ta rotation de 198°, c'est (11/20)Í—360° ou (9/20)Í—360°, donc 20
itérations.
[suivi vers fr.sci.maths pour avoir d'autres avis]
[diapublication, copie et suivi vers fr.sci.maths] Bonsoir, Le 20/07/2022 19:59, Dominique a écrit :
Je me suis amusé Í écrire un script assez simple qui dessine des étoiles avec Turtle : from turtle import * #speed(0) nb=int(input('Itérations ')) ang=float(input('Angle Í gauche ')) for x in range (nb): forward(300) right(ang+180) Avec 5 itérations et une rotation Í droite de 216° (180°+36°),
C'est-Í -dire une rotation Í gauche de 144° (180°âˆ’36°)
j'obtiens bien un pentagramme. C'est assez simple, parce qu'on est lÍ sur des triangles d'or. Si je passe Í 20 itérations et des rotations Í droite de 198°(180° + 18°),
Du coup des rotations Í gauche de 162°.
j’obtiens quelque chose d’intéressant. Ce que je ne sais pas, c’est comment m’assurer que mon étoile est bien exacte, c’est Í dire que le curseur revient exactement Í son point de départ. La précision de Python est suffisamment élevée pour donner l’impression de l’exactitude. Existe-t-il une formule qui permet, Í partir du nombre de branche qu’on veut obtenir, de connaÍ®tre l’angle de rotation du curseur ? Mes connaissances en géométrie trébuchent...
DéjÍ , pour que ça finisse par tomber juste, il suffit que l'angle soit un multiple rationnel d'un tour complet, soit 2pi ou 360°. En degrés, vu que 360 est un nombre entier, il suffit que l'angle soit rationnel. Mais on peut faire mieux, et savoir au bout de combien d'itérations on revient au point de départ pour la première fois. Soit (p/q)Í—360° l'angle choisi. Si p et q sont premiers entre eux, alors il faudra exactement q itérations pour que l'angle soit pÍ—360°, soit 0° modulo 360°. Par ailleurs, pour qu'une rotation « Í droite » ne se transforme pas en rotation Í gauche, il suffit de choisir p et q de sorte que 0 < p < q/2. Enfin, si tu veux des polygones étoilés et pas de bêtes polygones convexes, il suffit de choisir p > 1, donc 2 ≤ p < q/2. Reprenons tes exemples. Ta rotation Í droite de 216°, c'est (3/5)Í—360° (ou (2/5)Í—360° si tu choisis l'angle le plus petit). Il faut donc 5 itérations. Quant Í ta rotation de 198°, c'est (11/20)Í—360° ou (9/20)Í—360°, donc 20 itérations. [suivi vers fr.sci.maths pour avoir d'autres avis] -- Olivier Miakinen