gpt4 book ai didi

python - 如何将三角形堆叠在一起并增加大小并完美对齐

转载 作者:行者123 更新时间:2023-12-04 13:24:11 25 4
gpt4 key购买 nike

我正在玩 Python,我想将 4 个三角形堆叠在一起,但大小增加,每个三角形的顶部应该正好位于上面三角形基线的一半。下面是我正在使用的代码,但上面的三角形不断向左移动,我不知道如何将它保持在中心位置。

# Draw 4 triangles increasing in size
from turtle import *

# Draw a triangle
for sides in range (1,4):
forward(20)
left(120)

# Move to position for second triangle
penup()
left(120)
forward(20)
right(120)
pendown()

# Draw second triangle
for sides in range (1,4):
forward(40)
left(120)

# Move to position for third triangle
penup()
left(120)
forward(40)
right(120)
pendown()

# Draw third triangle
for sides in range (1,4):
forward(60)
left(120)

# Move to position for fourth triangle
penup()
left(120)
forward(60)
right(120)
pendown()

# Draw fourth triangle
for sides in range (1,4):
forward(80)
left(120)

最佳答案

您需要调整计算每个三角形起点的方式。
您当前的方法仅适用于尺寸翻倍的直角三角形。
简单的方法是将您的步骤退回到刚刚绘制的三角形的顶点,向左转 120 度,然后向前移动下一个三角形距离的一半。
修改您的代码以执行此操作将如下所示。

# Draw 4 triangles increasing in size
from turtle import *

# Draw a triangle
for sides in range (1,4):
forward(20)
left(120)

# Move to position for second triangle
penup()
# point left towards the apex
left(60)
# move to the apex
forward(20)
# turn left in order to move horizontally
left(120)
# move along the next base half the distance of the next triangle(center it)
forward(20)
# turn back around in order to start drawing the next triangle
left(180)
pendown()

# Draw second triangle
for sides in range (1,4):
forward(40)
left(120)

# Move to position for third triangle
penup()
left(60)
forward(40)
left(120)
forward(30)
right(180)
pendown()

# Draw third triangle
for sides in range (1,4):
forward(60)
left(120)

# Move to position for fourth triangle
penup()
left(60)
forward(60)
left(120)
forward(40)
right(180)
pendown()

# Draw fourth triangle
for sides in range (1,4):
forward(80)
left(120)
但是,这里有很多重复的代码。通过将可重复的部分放在函数中并使用循环,您可以将其压缩很多。
# Draw 4 triangles increasing in size
from turtle import *

def draw_triangle(size):
for _ in range(3):
forward(size)
left(120)

def move_to_next_position(previous_size, next_size):
penup()
left(60)
forward(previous_size)
left(120)
forward(next_size // 2)
left(180)
pendown()

draw_triangle(20)
for prev, nxt in zip((20, 40, 60), (40, 60, 80)):
move_to_next_position(prev, nxt)
draw_triangle(nxt)

关于python - 如何将三角形堆叠在一起并增加大小并完美对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69631613/

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