【问题标题】:How to set any polygon the same total width如何将任何多边形设置为相同的总宽度
【发布时间】:2022-01-12 23:11:47
【问题描述】:

我不知道如何在 python turtle 中将任何多边形(例如三角形、十边形、正方形等)设置为相同的“总宽度”。
我有两个定义:

# 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,因为它的边数,这会导致绘制时形状向外。
我想要的是任何边数相同的任何形状的“总宽度”。

【问题讨论】:

    标签: python geometry turtle-graphics python-turtle


    【解决方案1】:

    你应该从 1 个多边形开始,所以(这是一个三角形)

    sides=3

    def 形状(边): 对于我在范围内(边): turtle.forward(边有多长) turtle.right(360/边)

    然后运行程序:

    形状(边)

    【讨论】:

      【解决方案2】:

      我认为你的“总宽度”概念是有缺陷的。如果我们考虑边 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()
      

      重点是,你需要清楚地定义你的目标。

      【讨论】:

        【解决方案3】:

        您要查找的词是“周长”。如果我理解正确,您正在尝试绘制具有恒定周长大小的任意 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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-12
          • 2019-05-23
          • 1970-01-01
          • 2015-10-23
          • 2020-12-25
          • 2019-09-01
          • 2017-05-27
          相关资源
          最近更新 更多