2
votes

Triangles de nidification à l'aide de tortues

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()


2 commentaires

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.


3 Réponses :


0
votes

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:

 entrez la description de l'image ici

(10, 5.8) donne:

enter image description here

(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.


0 commentaires

0
votes

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:

entrez la description de l'image ici


0 commentaires

0
votes

Si OP lit correctement sa question de devoir, seul le côté inférieur des triangles doit avoir un espacement de 7 :)


1 commentaires

Salut, bienvenue sur Stackoverflow !! Ce serait formidable si vous pouviez lire ces consignes avant de répondre à toute question. Merci.