2016-09-28 14 views
1

ich die effizienteste Art und Weise zu überprüfen, um zu wissen, ob ein gegebener Punkt (ein Auge Koordinate) innerhalb einer bestimmten Region ist (in diesem Fall einen Kreis).Python/Psychopy: Prüfen, ob ein Punkt innerhalb eines Kreises ist

Code:

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 

My x und y-Koordinaten entsprechen einem Punkt auf dem Fenster, ich überprüfen müssen, ob dieser Punkt innerhalb des Kreises befindet, dessen Radius 120 Pixel.

Danke, Steve

+0

Neben dem einfachen geometrischen Weg, um den (im Quadrat) Abstandes beween Punkt und Zentrum der Überprüfung? –

Antwort

6

PsychoPy der ShapeStim Klassen haben eine .contains() Methode, gemäß der API: http://psychopy.org/api/visual/shapestim.html#psychopy.visual.ShapeStim.contains

so könnte Ihr Code einfach sein:

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

dieser Methode hat den Vorteil, dass es sich um eine allgemeine Lösung (unter Berücksichtigung der Form der Stimulus-Knoten) ist und nicht nur eine Kontrolle der pythagoreischen Abstand vom Anregungszentrum (die Kreise ein Sonderfall ist nur) .

+0

Sehr schön, danke Michael. – Steve

1

Ich glaube nicht, es so kompliziert sein muss:

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

Können Sie mir sagen, was der '-circle [0]' Teil tut? – Steve

+0

Verschiebt die Koordinaten, die Sie testen, relativ zum Mittelpunkt des Kreises und nicht zum Ursprung, sodass Sie sehen können, ob sich die Testpunkte innerhalb eines bestimmten Radius des Mittelpunkts des Kreises befinden. – aqua

Verwandte Themen