我正在尝试使用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.