def judgeIfInPolygon(polySides, polyX, polyY, point):
in_bool = False
j = polySides-1
for i in range(polySides):
if ((((polyY[i]<point[1])and(polyY[j]>=point[1]))or((polyY[j]<point[1])and(polyY[i]>=point[1]))) and ((polyX[i]<=point[0])or(polyX[j]<=point[0]))):
if (polyX[i]+(point[1]-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<point[0]):
in_bool = (not in_bool)
j = i
return in_bool
if_in_ = judgeIfInPolygon(
polySides = 4, # 多边形边数
polyX = [1,1,-1,-1], # 多边形x轴坐标列表
polyY = [1,-1,-1,1], # 多边形y轴坐标列表
point = [0,0], # 测试是否在多边形内的测试点
)
print("点 {} {}".format(
[0,0],
"在多边形里" if if_in_ else "不在多边形里"
))
结果
>>> 点 [0, 0] 在多边形里