我不知道如何在蟒蛇龟中设置任何多边形(例如三角形、十边形、正方形等(相同的"总宽度">
我有两个定义:
# To draw the shape
def shape(sides):
for i in range(sides):
turtle.forward(20);
turtle.right(360 / sides);
# To move to the next shape
def nextshape():
turtle.penup();
turtle.forward(50);
turtle.pendown();
问题是,不同形状之间的差异是不同的,这取决于有多少边
例如,如果我想画一个有4条边的形状(一个正方形(,它的"总宽度"(我会说直径,但我认为这是圆形的(将是20,因为它画的每条边的宽度都是20。但是,如果我画一个有5条边的形状,它的"总宽度"不会是20,因为它有很多边,这会导致在画它时形状向外。
我想要的是任何有很多边的形状的"总宽"都是相同的。
您要查找的单词是"周长";。如果我理解正确的话,你试图画一个周长不变的任意n边多边形(当n=3时为三角形,当n=4时为正方形,等等(。n边多边形的周长为n * length_of_side
。
由于您希望所有多边形的周长都相同,因此需要计算的是length_of_side
,也就是简单的perimeter / n
PERIMETER = 20
def shape(sides):
for i in range(sides):
length_of_side = PERIMETER / sides
turtle.forward(length_of_side);
turtle.right(360 / sides);
我认为你的"总宽度";是有缺陷的。如果我们考虑边20的正方形;总宽度";作为";最大宽度";则周边上相距最远的角点相距大约28个像素(20*sqrt(2((。这种";最大宽度";,对于多边形是有意义的;总宽度";。它类似于";直径";你提到的。
以下是绘制具有恒定直径的不同边数的多边形的代码:
import turtle
DIAMETER = 200
def shape(sides):
turtle.penup()
turtle.sety(-DIAMETER/2) # center polygon on turtle position
turtle.pendown()
turtle.circle(DIAMETER/2, steps=sides)
for sides in range(3, 13):
shape(sides)
turtle.done()
重点是,你需要清楚地定义你的目标。
您应该从1个多边形开始,所以(这是一个三角形(
侧面=3
def形状(侧面(:对于范围内的i(边(:乌龟。向前(边有多长(乌龟.右侧(360/侧(
并运行程序:
形状(侧面(