--判断点是否在多边形范围内
function isPointInPoly(p,poly)
--定义一个点(px,py),flag标志点是否在poly中
local px=p.x
local py=p.y
local flag = false
print(px,py)
--判断点是否在多边形的某条线的顶点上
for i=1,#poly do
local sx=poly[i].x --多边形某条线的起始点x值
local sy=poly[i].y --多边形某条线的起始点y值
local tx=poly[#poly].x --多边形某条线的终点x值
local ty=poly[#poly].y --多边形某条线的终点y值
print(sx,sy,tx,ty)
--点与多边形顶点重合
if (px == sx and py == sy) or (px==tx and py == ty) then
flag = true
break
--判断点是否在多边形的边上或内部
elseif (py>sy and py<=ty) or (py<=sy and py>ty) then
local x = sx +(py-sy)*(tx-sx)/(ty-sy)
--点在多边形内
if px == x then
flag = true
break
--点不在多边形内
elseif px < x then
flag = false
break
end
end
end
return flag
end
网友评论