Re: Python, Turtle et étoiles...

Liste des GroupesRevenir à fs maths 
Sujet : Re: Python, Turtle et étoiles...
De : zzz (at) *nospam* aol.com (Dominique)
Groupes : fr.sci.maths
Date : 21. Jul 2022, 07:47:45
Autres entêtes
Organisation : Aioe.org NNTP Server
Message-ID : <tbapa1$s2p$1@gioia.aioe.org>
References : 1 2 3
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.0.3
Le 21/07/2022 à 00:23, Olivier Miakinen a écrit :
Le 21/07/2022 00:01, je répondais à Dominique :
>
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.
 Cette formule peut aussi être utilisée pour choisir l'angle en fonction
du nombre d'itérations voulu. Déjà cela impose que q ≥ 5, parce que sinon
il est impossible d'avoir 2 ≤ p < q/2 lorsque q/2 ≤ 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.
 Avec q=5, le seul p vérifiant 2 ≤ p < 2,5 est p=2.
 Dans le second cas, q=20, les nombres p vérifiant 2 ≤ p < 10 sont les entiers
de 2 à 9. Parmi ceux-ci, les seuls à être premiers avec 20 sont 3, 7 et 9. Ton
exemple était avec p=9, mais tu peux aussi essayer p=3 et p=7.
 
Je te remercie pour toutes ces explications très intéressantes. J'ai modifié mon code comme suit :
from turtle import *
speed(0)
q=int(input('Itérations >2 '))
for p in range(2,int(q/2)+1):
     if q==10:
         p=3
     if q/p!=int(q/p):
         break
     break
if q==5 or q==20:
     p=3
if q%6==0:
     p=5
ang=p/q*360
for x in range (q):
     forward(150)
     right(ang)
J'échoue systématiquement avec q=6. Je suppose qu'il existera d'autres cas d'échec. Mais passée une vingtaine d'itérations, le résultat devient inintéressant.
Passe une bonne journée,
Dominique

Date Sujet#  Auteur
21 Jul 22 * Re: Python, Turtle et étoiles...16Olivier Miakinen
21 Jul 22 +* Re: Python, Turtle et étoiles...6Olivier Miakinen
21 Jul 22 i`* Re: Python, Turtle et étoiles...5Dominique
21 Jul 22 i `* Re: Python, Turtle et étoiles...4HB
21 Jul 22 i  `* Re: Python, Turtle et étoiles...3Dominique
21 Jul 22 i   `* Re: Python, Turtle et étoiles...2HB
21 Jul 22 i    `- Re: Python, Turtle et étoiles...1Dominique
8 Aug 22 `* Re: Python, Turtle et étoiles...9Lulu
9 Aug 22  +* Re: Python, Turtle et étoiles...4Dominique
9 Sep 22  i`* Re: Python, Turtle et étoiles...3Marioux Paule
9 Sep 22  i `* Re: Python, Turtle et étoiles...2Olivier Miakinen
9 Sep 22  i  `- Re: Python, Turtle et étoiles...1Marioux Paule
9 Aug 22  +- Re: Python, Turtle et étoiles...1Olivier Miakinen
17 Aug 22  `* Re: Python, Turtle et étoiles...3Richard Hachel
17 Aug 22   `* PPCM des premiers entiers (was: Python, Turtle et étoiles...)2Olivier Miakinen
17 Aug 22    `- Re: PPCM des premiers entiers (was: Python, Turtle et étoiles...)1Richard Hachel

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal