2016-09-28 200 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

相關問題