주어진 포인트 (x, y)가 n * 2 배열의 폴리곤에 있는지 감지하려고합니다. 그러나 다각형의 테두리에있는 일부 지점은 포함하지 않는 것으로 보입니다.포인트가 다각형 파이썬 내부에 있는지 확인
def point_inside_polygon(x,y,poly):
n = len(poly)
inside =False
p1x,p1y = poly[0]
for i in range(n+1):
p2x,p2y = poly[i % n]
if y > min(p1y,p2y):
if y <= max(p1y,p2y):
if x <= max(p1x,p2x):
if p1y != p2y:
xinters = (y-p1y)*(p2x-p1x)/float((p2y-p1y))+p1x
if p1x == p2x or x <= xinters:
inside = not inside
p1x,p1y = p2x,p2y
return inside
은 정수 또는 부동 소수점 좌표입니까? 그리고 파이썬 2 또는 파이썬 3? –
float 및 python 2. 또한 float으로 나누기를 변경했으며 부동 소수점 인 경우 –
경계에있는 일부 점을 거짓으로 표시 한 다음'p1x == p2x'를 비교하는 것이 좋지 않습니다. 정확하거나 같을 수 있습니다. 손실 문제. –