用矩形画圆 python 乌龟
Draw a circle with rectangles python turtle
我想绘制(这个形状)多边形,知道矩形的长度和宽度,以及矩形的数量,
这是我的代码:
from turtle import *
color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
for i in range(num_of_rectangles):
forward(length)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
right(90)
penup()
circle(50, 180/num_of_rectangles, 4)
pendown()
done()
但是这段代码没有显示想要的形状,那我怎么画上面的形状呢?
您的矩形方向正确,但位置错误。我的解决方案是让每个循环在图像的中心开始和结束。这样可以确保矩形都位于中心。
from turtle import *
color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
for i in range(num_of_rectangles):
# go to corner:
penup()
forward(length/2)
right(90)
forward(width/2)
right(90)
pendown()
# draw rectangle:
forward(length)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
right(90)
penup()
# go back to centre:
penup()
forward(length/2)
right(90)
forward(width/2)
left(90)
pendown()
# turn
right(180/num_of_rectangles)
done()
您可以将矩形绘制为 5 笔,而不是将矩形绘制为 4 笔,从其中一条边的中间开始和结束。您还需要在笔朝上的情况下到达那一侧的中间,然后回到中心(再次在笔朝上的情况下):
from turtle import *
color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
penup()
for i in range(num_of_rectangles):
# Get to middle of side and orient for drawing
forward(width / 2)
right(90)
pendown()
# Draw rectangle in 5 strokes
forward(length / 2)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
right(90)
forward(length / 2)
penup()
# Reorient and get back to center
left(90)
backward(width / 2)
right(180/num_of_rectangles)
done()
您使用的矩形数量错误(您只需要 6 个,而不是 8 个)并且矩形的纵横比错误。 (它比 50x20 更接近 50x32。)其他一些建议的解决方案继承了这些相同的错误,使用过多的代码来解决问题,并且看起来不像提供的图像:
from turtle import Screen, Turtle
WIDTH, HEIGHT = 200, 130
RADIUS = 120
PEN_WIDTH = 8
turtle = Turtle()
turtle.hideturtle()
turtle.width(PEN_WIDTH)
for _ in range(6):
turtle.penup()
turtle.circle(RADIUS, extent=30)
turtle.pendown()
turtle.left(57)
for _ in range(2):
turtle.forward(WIDTH)
turtle.left(90)
turtle.forward(HEIGHT)
turtle.left(90)
turtle.right(57)
screen = Screen()
screen.exitonclick()
要更改图像的大小,请将 WIDTH
、HEIGHT
、RADIUS
和 PEN_WIDTH
乘以或除以相同的系数。
这是一些东西:
from turtle import *
ht() # Hides turtle
w,h,n = 130,200,6 # Set the width,height & amount of rectangles
for _ in range(n):
pu()
fd(h//2) # Note the double slashes to avoid error
pd()
for f in [w//2,h,w,h,w//2]:
rt(90)
fd(f)
pu()
rt(90)
fd(h//2)
rt(180-180//n)
我想绘制(这个形状)多边形,知道矩形的长度和宽度,以及矩形的数量,
这是我的代码:
from turtle import *
color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
for i in range(num_of_rectangles):
forward(length)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
right(90)
penup()
circle(50, 180/num_of_rectangles, 4)
pendown()
done()
但是这段代码没有显示想要的形状,那我怎么画上面的形状呢?
您的矩形方向正确,但位置错误。我的解决方案是让每个循环在图像的中心开始和结束。这样可以确保矩形都位于中心。
from turtle import *
color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
for i in range(num_of_rectangles):
# go to corner:
penup()
forward(length/2)
right(90)
forward(width/2)
right(90)
pendown()
# draw rectangle:
forward(length)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
right(90)
penup()
# go back to centre:
penup()
forward(length/2)
right(90)
forward(width/2)
left(90)
pendown()
# turn
right(180/num_of_rectangles)
done()
您可以将矩形绘制为 5 笔,而不是将矩形绘制为 4 笔,从其中一条边的中间开始和结束。您还需要在笔朝上的情况下到达那一侧的中间,然后回到中心(再次在笔朝上的情况下):
from turtle import *
color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
penup()
for i in range(num_of_rectangles):
# Get to middle of side and orient for drawing
forward(width / 2)
right(90)
pendown()
# Draw rectangle in 5 strokes
forward(length / 2)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
right(90)
forward(length / 2)
penup()
# Reorient and get back to center
left(90)
backward(width / 2)
right(180/num_of_rectangles)
done()
您使用的矩形数量错误(您只需要 6 个,而不是 8 个)并且矩形的纵横比错误。 (它比 50x20 更接近 50x32。)其他一些建议的解决方案继承了这些相同的错误,使用过多的代码来解决问题,并且看起来不像提供的图像:
from turtle import Screen, Turtle
WIDTH, HEIGHT = 200, 130
RADIUS = 120
PEN_WIDTH = 8
turtle = Turtle()
turtle.hideturtle()
turtle.width(PEN_WIDTH)
for _ in range(6):
turtle.penup()
turtle.circle(RADIUS, extent=30)
turtle.pendown()
turtle.left(57)
for _ in range(2):
turtle.forward(WIDTH)
turtle.left(90)
turtle.forward(HEIGHT)
turtle.left(90)
turtle.right(57)
screen = Screen()
screen.exitonclick()
要更改图像的大小,请将 WIDTH
、HEIGHT
、RADIUS
和 PEN_WIDTH
乘以或除以相同的系数。
这是一些东西:
from turtle import *
ht() # Hides turtle
w,h,n = 130,200,6 # Set the width,height & amount of rectangles
for _ in range(n):
pu()
fd(h//2) # Note the double slashes to avoid error
pd()
for f in [w//2,h,w,h,w//2]:
rt(90)
fd(f)
pu()
rt(90)
fd(h//2)
rt(180-180//n)