使用Python Turtle在两点之间绘制弧形

时间:2017-11-06 07:35:35

标签: python turtle-graphics

我想使用Python Turtle在两点之间绘制弧线。

海龟模块允许像turtle.circle(200, 180)这样的东西,但这是非常有限的,因为我也想控制弧的方向。

我看到Tkinter有这样做:

from Tkinter import *

canvas = Canvas(width=300, height=300, bg='white')
canvas.pack(expand=YES, fill=BOTH)                

canvas.create_arc(200, 200, 300, 100)


widget = Label(canvas, text='AAA', fg='white', bg='black')
widget.pack()
canvas.create_window(100, 100, window=widget)     
mainloop()

但我无法解决如何让这只与Turtle一起工作的问题。我希望有几种可能的解决方案。任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

  

我想使用Python Turtle在两点之间绘制弧线。

你的Tkinter示例不是在两个任意点之间绘制弧 - 它使用你的点来定义一个矩形并绘制一个由该矩形约束的椭圆的一部分。鉴于您定义了一个正方形,可以通过Python Turtle模拟:

from turtle import Turtle, Screen

def create_arc(turtle, x1, y1, x2, y2, start=0, extent=90):

    radius = min(abs(x2 - x1), abs(y2 - y1)) / 2
    cx, cy = x1 + (x2 - x1) / 2, y1 + (y2 - y1) / 2

    turtle.penup()
    turtle.setposition(max(x1, x2), cy)
    turtle.setheading(90)
    turtle.circle(radius, extent=start)
    position = turtle.position()

    turtle.pendown()
    turtle.circle(radius, extent=extent)
    turtle.setposition(cx, cy)
    turtle.setposition(position)

canvas = Screen()
canvas.setup(312, 312)  # adjust for borders
canvas.setworldcoordinates(0, 0, 306, 306)

tortoise = Turtle(visible=False)

create_arc(tortoise, 200, 200, 300, 100)

canvas.mainloop()

<强>输出

enter image description here

Python Turtle中的任意弧线都很棘手但不要以为你不能做到这一点,直到你明确定义了你需要什么类型的弧线并尝试对它进行编程。