J'essaie d'imbriquer 4 triangles équilatéraux de taille 20, 40, 60 et 8 avec un espacement égal de 7 dans la tortue.
Code :
from turtle import * number_of_shapes = 4 side = 3 for spacing in range(1, number_of_shapes+1): for sides in range(1, side+1): forward(20*spacing) left(360/side) penup() goto(-10*spacing, -7*spacing) pendown()
3 Réponses :
Connectez les coins et vous verrez l'ange 30deg
. Il crée un triangle rectangulaire avec des côtés 10
et 7
. Seul 45deg
crée un triangle rectangulaire avec des côtés 10
et 10
.
Mais les valeurs (10, 7)
ne sont pas correctes. Les valeurs correctes sont (10, 5.8)
- mais elles peuvent créer des espaces qui ne sont pas aussi beaux que pour (10, 7)
sur les moniteurs qui utilisent uniquement des valeurs entières pour éléments d'affichage.
from turtle import * import math number_of_shapes = 4 side = 3 a = 10 b = math.tan(math.radians(30)) * a # b = 7 for spacing in range(1,number_of_shapes +1): for sides in range(1,side+1): forward(20*spacing) left(360/side) penup() goto(-a * spacing, -b * spacing) pendown() left(30) forward(100)
J'utilise ces valeurs pour créer un espace entre les triangles et ensuite je trace une ligne avec un angle de 30 degrés - cela relie les coins idéalement. Si vous utilisez b = 7
alors vous obtenez vos triangles et cette ligne ne connectera pas les coins
a = 10 b = 10 * tangens(30deg) = 5.8
(10, 7) code> donne:
(10, 5.8)
donne:
(10, 5.8)
place les triangles aux bons endroits mais les moniteurs ne sont pas idéaux (ils ne peuvent utiliser que des valeurs entières pour x, y
) donc les espaces entre les triangles peuvent ne pas être aussi beaux que dans votre version.
Cela semble être un problème classique "mieux vivre grâce à l'estampage". Les triangles sont dessinés depuis un coin mais estampillés depuis le centre, ce qui résout le problème de centrage:
from turtle import Screen, Turtle NUMBER_OF_SHAPES = 4 CURSOR_SIZE = 20 screen = Screen() turtle = Turtle('triangle', visible=False) turtle.fillcolor('white') turtle.right(30) # lay bottom on horizontal for sizing in range(NUMBER_OF_SHAPES, 0, -1): turtle.shapesize(20 * sizing / CURSOR_SIZE) turtle.stamp() screen.exitonclick()
Les triangles dessinés par OP à gauche, les triangles marqués du code ci-dessus à droite:
Si OP lit correctement sa question de devoir, seul le côté inférieur des triangles doit avoir un espacement de 7 :)
Salut, bienvenue sur Stackoverflow !! Ce serait formidable si vous pouviez lire ces consignes avant de répondre à toute question. Merci.
Veuillez corriger l'indentation de votre code.
connectez les coins et vous verrez l'ange 30deg. il crée un triangle rectangulaire avec des côtés 10 et 7. Seulement 45deg crée un triangle rectangulaire avec des côtés 7 et 7. Mais probablement en utilisant
cos (30)
,sin (30)
ou < code> tan (30) et 7, vous pouvez calculer 10.