2016-09-28 554 views
1

我想知道检查给定点(眼图坐标)是否位于特定区域(本例中为圆圈)内的最有效方法。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个像素的圆内。

感谢, 史蒂夫

+0

除了检查点和中心之间的(平方)距离的直接几何方法吗? –

回答

6

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

所以你的代码可能只是:

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

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

+0

非常好,谢谢迈克尔。 – Steve

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" 
+0

你能告诉我' - 圆[0]'部分是做什么的吗? – Steve

+0

将您正在测试的坐标相对于圆心而不是原点移动,以便您可以查看测试点是否位于圆心的某个半径范围内。 – aqua

相关问题