如何将任何多边形设置为相同的总宽度



我不知道如何在蟒蛇龟中设置任何多边形(例如三角形、十边形、正方形等(相同的"总宽度">
我有两个定义:

# 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/侧(

并运行程序:

形状(侧面(

相关内容

最新更新