Einfache Polygone um einen Punkt in Python Turtle drehen


user10149031

Ich brauche Hilfe beim Drehen von Polygonformen (Dreieck und Quadrat) in Python Turtle, um sie an ein Bild anzupassen.

Unten versuche ich das Bild zu kopieren. Bild sucht zu kopierenIch brauche speziell Hilfe, was ich meinem Code hinzufügen soll, wenn das Dreieck und das Quadrat gegeben sind, damit sie sich wie auf dem Bild nach außen wiederholen. Denn ab sofort sehen die Dreiecke und Quadrate so aus (Fünfeckcode ist korrekt und funktioniert). Jede Hilfe wird geschätzt. Vielen Dank.Dreiecke und Quadrate jetzt

import turtle 

def polygon(turtle, side, length):
    turtle.color("Blue")
    for i in range(4):
        turtle.backward(length)
        turtle.left(side)
def polygon1(turtle, side1, length):
    turtle.color("Green")
    for i in range(3):
        turtle.left(side1)
        turtle.forward(length)
def polygon2(turtle, side2, length):
    turtle.color("Red")
    for i in range(5):
        turtle.forward(length)
        turtle.left(side2)

def main():
    my_turtle = turtle.Turtle()
    wn = turtle.Screen()
    Bill = turtle.Turtle()
    length = 100
    side = 90
    side1 = 120
    side2 = 72
    Bill.pensize(5)
    Bill.speed(0)

    #Pentagons
    Bill.pu()
    Bill.right(180)
    y = -45
    for i in range(5):
        Bill.pu()
        Bill.goto(60, y)
        Bill.pd()
        polygon2(Bill, side2, length)
        y -= 20

    #Triangle
    Bill.pu()
    Bill.left(240)
    x = 45
    for j in range(5):
        Bill.pu()
        Bill.goto(10, x)
        Bill.pd()
        polygon1(Bill, side1, length)
        x += 20

    #Square
    Bill.pu()
    Bill.left(240)
    b = 6
    for b in range(5):
        Bill.pu()
        Bill.goto(148, b)
        Bill.pd()
        polygon(Bill, side, length)
        b -= 20



    wn.exitonclick()

if __name__ == '__main__':
    main()
cdlane

Der Pentagon-Code ist korrekt und funktioniert

I don't believe the pentagon code is correct nor that you're approaching this in the correct way. The inner three shapes should form an equilateral triangle -- yours don't as you're eyeballing instead of calculating. Instead of trying to get the turtle to be in the right spot, why not have the turtle move forward in the direction of the sides of this central triangle, drawing polygons as it goes.

That is, embrace the drawing as a whole rather than trying to divide and conquer.

Wir müssten sicherstellen, dass der Polygon-Zeichnungscode den Status der Schildkröte wiederherstellt, wenn er fertig ist, damit er einfach zum nächsten Polygon übergehen kann. Wir müssen explizit angeben, welche Zahlen willkürlich und welche berechenbar sind. Obwohl das ursprüngliche Diagramm mindestens drei Schildkröten verwendet, um das Ergebnis zu erzielen, werden wir es mit einer tun, wie Sie es versucht haben:

from turtle import Turtle, Screen

SHAPES = [(5, "Red"), (3, "Green"), (4, "Blue")]

LENGTH = 100
DELTA = 20
REPLICATIONS = 5
THICKNESS = 5

HEIGHT = (3 ** 0.5 / 2) * LENGTH  # assumes 3 shapes, should fix!
DIVISIONS = 360 / len(SHAPES)

def polygon(turtle, sides, color):
    turtle.color(color)
    turtle.left(90)
    turtle.forward(LENGTH / 2)

    for _ in range(sides):
        turtle.right(360 / sides)
        turtle.forward(LENGTH)

    turtle.backward(LENGTH / 2)  # restore turtle to original state
    turtle.right(90)

wn = Screen()

bill = Turtle()
bill.speed('fastest')
bill.pensize(THICKNESS)

bill.penup()

for offset, (sides, color) in enumerate(SHAPES):

    bill.setheading(-DIVISIONS * offset - 90)
    bill.forward(HEIGHT / 3)  # assumes 3 shapes, should fix!

    for _ in range(REPLICATIONS):
        bill.pendown()
        polygon(bill, sides, color)
        bill.penup()
        bill.forward(DELTA)

    bill.home()

wn.exitonclick()

Geben Sie hier die Bildbeschreibung ein

Verwandte Artikel


Mathematica: Einen Punkt um einen anderen drehen

RUHE IN FRIEDEN Ich frage mich, ob es möglich ist, einen Punkt in Mathematica um einen anderen vorhandenen Punkt zu drehen. Ich habe versucht, so etwas zu tun: one = Graphics[Point[{1, 1}]]; two = Graphics[Point[{2, 2}]]; two = Rotate[{two}, 60 Degree, {one}]

OpenSCAD: Um einen bestimmten Punkt drehen?

Mark Harrison Der folgende Code dreht den zweiten Würfel um den Ursprung. Wie kann ich stattdessen den zweiten Würfel um seinen Mittelpunkt ([5,5,0]) drehen? cube([10,10,1]); rotate([0,0,45]) cube([10,10,1]); Mark Harrison Dieses Modul führt die gewünschte Dr

Ziehen Drehen Sie einen Knoten um einen festen Punkt

Wurflöffel Ich versuche, einen drehbaren Knoten zu erstellen, der dem "Preisrad" in dieser Frage ähnelt . Bisher habe ich die Fähigkeit, mit einem UIPanGestureRecognizer, der wirklich gut funktioniert, Winkelimpulse auf einen Physikkörper zu übertragen. Ich ka

So drehen Sie ein Bild um einen Punkt in Java

Eduardo Maia: Ich habe mir einige ähnliche Fragen angesehen, aber keine beantwortet genau das, was ich brauche. In den Lösungen, die ich gefunden habe, haben alle das Bild gedreht, ohne sich zu bewegen, aber ich brauche, dass sich dieses Bild um die Ausgangspo

Drehen Sie das Spielermodell, um auf einen Punkt zu zeigen

Konsti Lackner Ich habe den Beitrag von vor drei Jahren gesehen, in dem eine ähnliche Frage gestellt wurde, wie dies erreicht werden glm::lookAtkann, konnte ihn aber nicht ganz auf mein Spiel anwenden. Ich habe ein Kamera- und Spielermodell, das sich auf einer

Um einen anderen Punkt als den Ursprung drehen?

Benutzer14629932 Dies ist mehr Mathe-Y als Programmieren-Y, aber wie kann ich diese Rotationsmatrix verbessern, um einen Punkt zu akzeptieren, um den herum gedreht werden kann? Es gibt die Achse, die die Art der Drehung angibt, aber auch den Punkt, an dem die