美文网首页
lua 实现点与多边形的碰撞

lua 实现点与多边形的碰撞

作者: 大雁儿 | 来源:发表于2017-08-23 14:27 被阅读39次
    --判断点是否在多边形范围内
    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
    

    相关文章

      网友评论

          本文标题:lua 实现点与多边形的碰撞

          本文链接:https://www.haomeiwen.com/subject/hmbddxtx.html