gpt4 book ai didi

python - 在 Python Turtle 中围绕一个点转动简单的多边形

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:23 25 4
gpt4 key购买 nike

我需要帮助在 Python turtle 中转换多边形(三角形和正方形)以匹配图片。

下面我正在尝试复制图像。 Image looking to copy鉴于三角形和正方形让它们像图片一样向外重复,我特别需要帮助添加到我的代码中。因为到目前为止三角形和正方形看起来像这样(五边形代码是正确的并且可以工作)感谢所有帮助。谢谢。 Triangles and Squares now

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

最佳答案

pentagon code is correct and works

我不相信五角大楼的代码是正确的,也不认为你以正确的方式处理这个问题。内部的三个形状应该形成一个等边三角形——你的不是,因为你是在观察而不是计算。与其试图让 turtle 位于正确的位置,不如让 turtle 朝这个中心三角形的边方向移动,边走边画多边形。

也就是说,将绘画视为一个整体,而不是试图分而治之。

我们需要确保多边形绘制代码在完成后恢复 turtle 的状态,以便它可以简单地前进到下一个多边形。我们需要明确哪些数字是任意的,哪些是可计算的。虽然原始图表似乎使用至少三只 turtle 来实现它的结果,但我们将按照您的尝试使用一只 turtle :

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

enter image description here

关于python - 在 Python Turtle 中围绕一个点转动简单的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52280604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com