我如何使Turtle识别一个圆?

我正在尝试使用Turtle Graphics制作一个Python程序,该程序在矩形内绘制两个重叠的圆(如维恩图),并在维恩图上绘制随机点.

我已经成功完成了此操作,但是现在我想让程序识别点是否在圆中之一或在维恩图的交点中.然后,我想根据它们所在的区域来更改点的颜色.

到目前为止,我对该程序所做的工作是列出变量,定义形状并进行for循环以随机生成点.

解决方法:

turtle只是一个图形库-它无法跟踪您在屏幕上绘制的对象.因此,要计算给定点是否在您的维恩图圆中,您需要执行以下步骤:

>调用circle()时存储每个圆的坐标
(课程会有所帮助,但您可能还没有学到这些课程)
>调用一个函数以测试该点是否在存储的圆坐标空间中.这将是对笛卡尔坐标的纯数学运算. @Tim提供的链接(Equation for testing if a point is inside a circle)将帮助您实现这一目标.

关于步骤1的一些指导

画圆时,有其中心(当前乌龟位置)和半径.从那里开始,获得该圆内的所有点仅仅是几何(如果您不能推导公式,快速搜索将为您提供帮助).我建议您创建一个绘制维恩图圆的函数,并返回一个圆内的点.像这样:

def venn_circle(circle_color, circle_radius):
    """ Draws a colored circle, returns the points within. """
    turtle.color(circle_color)
    # <fill in: code to move, orient the turtle>
    center = turtle.position()
    # <fill in: code to draw the circle>
    return circle_coords(center, circle_radius)


def circle_coords(center, radius):
    """ Return the set of pixels within the circle. """
    raise NotImplementedError()

快速提醒您-绝对不要从包导入*中进行操作.在某些情况下可以,但是通常只会带来麻烦.在我的示例代码中,我假设您已将此惯用法替换为import turtle.

上一篇:C#-两行之间的顺时针角度


下一篇:javascript-THREE.js动态将点添加到“点”几何体不会渲染