Python / Psychopy:检查一个点是否在一个圆圈内

时间:2016-09-28 22:05:43

标签: python psychopy

我想知道检查给定点(眼睛坐标)是否在特定区域内(在这种情况下是圆圈)的最有效方法。

代码:

win = visual.Window([600,600], allowGUI=False)

coordinate = [50,70] #example x and y coordinates 

shape = visual.Circle(win, radius=120, units='pix') #shape to check if coordinates are within it

if coordinate in shape:
    print "inside"
else:
    print "outside"

>>TypeError: argument of type 'Circle' is not iterable

我的x和y坐标对应于窗口上的一个点,我需要检查此点是否落在半径为120像素的圆内。

谢谢, 史蒂夫

2 个答案:

答案 0 :(得分:7)

根据API,PsychoPy的ShapeStim类有一个.contains()方法: http://psychopy.org/api/visual/shapestim.html#psychopy.visual.ShapeStim.contains

所以你的代码可能只是:

if shape.contains(coordinate):
    print 'inside'
else:
    print 'outside'

使用这种方法的优点是它是一个通用的解决方案(考虑刺激顶点的形状),而不仅仅是检查刺激中心的毕达哥拉斯距离(这只是圆圈的特殊情况)

答案 1 :(得分:1)

我不认为它需要那么复杂:

center=(600,600)
radius=120
coordinate=(50,70)

if (coordinate[0]-center[0])**2 + (coordinate[1]-center[1])**2 < radius**2:
    print "inside"
else:   
    print "outside"