【问题标题】:How do you draw an ellipse/oval in turtle graphics (python)?你如何在海龟图形(python)中绘制椭圆/椭圆?
【发布时间】:2015-04-06 05:06:01
【问题描述】:

如何在海龟图形(python)中绘制椭圆/椭圆?我希望能够使用 circle() 函数或类似函数绘制一个椭圆和椭圆的一部分。我可以使用#turtlesize(stretch_wid=None,stretch_len=10,outline=None)标记一个。但我不希望它被填色。

【问题讨论】:

标签: python turtle-graphics


【解决方案1】:

我自己制作了一个我个人认为非常有用的绘制椭圆的函数:

def talloval(r):               # Verticle Oval
    turtle.left(45)
    for loop in range(2):      # Draws 2 halves of ellipse
        turtle.circle(r,90)    # Long curved part
        turtle.circle(r/2,90)  # Short curved part

def flatoval(r):               # Horizontal Oval
    turtle.right(45)
    for loop in range(2):
        turtle.circle(r,90)
        turtle.circle(r/2,90)

r 是圆的半径,它控制椭圆的大小。左转/右转的原因是因为没有它,椭圆是对角线的。

【讨论】:

    【解决方案2】:

    我们可以在 Turtle 模块中使用其参数方程制作一个椭圆。 下面的代码可能有点长,但是使用它我们可以根据需要在任何方向上绘制椭圆。您可以根据需要对其进行编辑。我们基本上是在更改椭圆的参数角度并绘制曲线。

      import turtle
      import math
      def ellipse(a, b, h=None, k=None, angle=None, angle_unit=None):
         myturtle = turtle.Turtle()
         if h is None:
           h = 0
         if k is None:
           k = 0
        # Angle unit can be degree or radian
         if angle is None:
           angle = 360
           converted_angle = angle*0.875
         if angle_unit == 'd' or angle_unit is None:
           converted_angle = angle * 0.875
         # We are multiplying by 0.875 because for making a complete ellipse we are plotting 315 pts according
         # to our parametric angle value
         elif angle_unit == "r":
           converted_angle = (angle * 0.875 * (180/math.pi))
         # Converting radian to degrees.
        for i in range(int(converted_angle)+1):
           if i == 0:
             myturtle.up()
           else:
             myturtle.down()
           myturtle.setposition(h+a*math.cos(i/50), k+b*math.sin(i/50))
       turtle.done()
    

    【讨论】:

      【解决方案3】:

      你可以使用turtle的shapesize()函数来制作一个椭圆。

      shape("circle")
      shapesize(5,4,1)
      fillcolor("white")
      

      【讨论】:

      • 嘿,感谢您的回复,没有名为“ellipse”的形状,但是您的 fillcolor("white") 命令适用于 #turtlesize(stretch_wid=None, stretch_len=10, outline=None ) 我在上面提到过。所以你帮我解决了! :)
      【解决方案4】:

      我在 CodeHS Python 中做椭圆(乌龟)

      【讨论】:

      • 你需要复制粘贴代码而不是截图。
      【解决方案5】:
      #you can create circle or ellipse by changing value of parameter of oval=canvas.create_oval(10,15,200,150)
      from Tkinter import *
      top=Tk()`
      canvas=Canvas(top,width=200,height=200)
      canvas.pack()
      oval=canvas.create_oval(10,15,200,150)
      top.mainloop()
      

      【讨论】:

        最近更新 更多