2016-09-28 2 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 좌표는 I이 점은 그 반경 120 개 픽셀 원 내에 있는지 확인해야 창에서 한 지점에 대응한다.

감사합니다, 스티브

+0

게다가 포인트와 센터의 (제곱) 거리를 확인하는 간단한 기하학적 방법 이외에도? –

답변

6

PsychoPy의 ShapeStim 클래스는 API에 따라하는 .contains() 방법이 있습니다 http://psychopy.org/api/visual/shapestim.html#psychopy.visual.ShapeStim.contains

따라서 코드는 다음과 같을 수 있습니다.

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

이 방법을 사용하면 자극 중심점의 모양을 고려한 일반적인 솔루션이며 자극 센터에서 피타고라스 거리를 확인하는 것만 큼 이점이 없습니다 (원에 대한 특별한 경우) .

+0

매우 감사합니다, Michael. – 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

'-circle [0]'부분이 무엇을하는지 말해 줄 수 있습니까? – Steve

+0

테스트 할 좌표가 원점이 아닌 원의 중심을 기준으로 이동하므로 테스트 점이 원 중심의 특정 반경 내에 있는지 확인할 수 있습니다. – aqua

관련 문제