如何在海龟绘图中画椭圆/椭圆形?

3

在Python的海龟绘图中如何画椭圆/椭圆形?我想使用circle()函数或类似函数来画一个椭圆和部分椭圆。我可以使用印章(stamp)函数来印出一个椭圆。

turtlesize(stretch_wid=None, stretch_len=10, outline=None)

但我不希望它被填充颜色。

1
这里有一个详细的答案和演示代码:https://stackoverflow.com/questions/34284958/how-to-draw-an-ellipse-in-python-turtle-graphics-other-than-stamping - George Birbilis
此外,这可能会有用:http://www.mathopenref.com/coordcirclealgorithm.html - George Birbilis
3个回答

8
我自己编写了一个画椭圆的函数,我个人认为非常有用:
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 是圆形的半径,它控制着椭圆的大小。左/右转的原因是因为如果没有它,椭圆就会倾斜。


4
我们可以使用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()

0
你可以使用turtle的shapesize()函数来制作椭圆形。
shape("circle")
shapesize(5,4,1)
fillcolor("white")

嗨,感谢您的回复。没有叫做“椭圆”的形状,不过您提供的fillcolor(“white”)命令对我之前提到的#turtlesize(stretch_wid = None,stretch_len = 10,outline = None)有效。所以,您帮助我解决了这个问题! :) - Tristan
这个例子有些误导人。形状函数设置了海龟的形状,即绘图点的指示器。因此,是的,你可以让海龟看起来像一个椭圆形,但任何未来的绘图都会将你的椭圆形移动到一个新的位置。 - Mr. Lee
@李先生,您可以使用turtle方法stamp()使其永久化。 - user2757572

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接