Как нарисовать эллипс/овал в графике черепахи (питон)?

Как нарисовать эллипс/овал в графике черепахи (питон)? Я хочу иметь возможность рисовать эллипс и часть эллипса, используя функцию circle() или аналогичную. Я могу отпечатать один, используя #turtlesize(stretch_wid=None, stretch_len=10, контур=None). Но я не хочу, чтобы он был заполнен цветом.


person Tristan    schedule 06.04.2015    source источник
comment
Здесь есть длинный ответ и демонстрационный код: stackoverflow.com/questions/34284958/   -  person George Birbilis    schedule 04.09.2017
comment
Кроме того, это может быть полезно: mathopenref.com/coordcirclealgorithm.html   -  person George Birbilis    schedule 04.09.2017


Ответы (3)


Вы можете использовать функцию shapesize() черепахи, чтобы сделать эллипс.

shape("circle")
shapesize(5,4,1)
fillcolor("white")
person avinash pandey    schedule 06.04.2015
comment
Привет, спасибо за ваш ответ, формы с именем эллипс не существует, однако ваша команда fillcolor (white) работала для #turtlesize (stretch_wid = None, stretch_len = 10, контур = None), о котором я упоминал выше. Итак, вы помогли мне решить эту проблему! :) - person Tristan; 06.04.2015

Я сделал свою функцию рисования овалов, которую лично считаю очень полезной:

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 — это радиус круга, и он определяет, насколько большим будет эллипс. Причина поворота влево/вправо в том, что без него эллипс диагональный.

person Ollie    schedule 16.06.2018

Мы можем сделать эллипс, используя его параметрическое уравнение в модуле 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()
person Devansu Yadav    schedule 24.05.2020