碰撞算法14 --多边形与矩形的碰撞

--多边形与矩形碰撞
function PolygonToRect(polygon,rectLeftBottomX,rectLeftBottomY,rectWidth,rectHeight)

    local flag1 = PolygonToPoint(polygon,{x = rectLeftBottomX,y = rectLeftBottomY})
    local flag2 = PolygonToPoint(polygon,{x = rectLeftBottomX+rectWidth,y = rectLeftBottomY})
    local flag3 = PolygonToPoint(polygon,{x = rectLeftBottomX+rectWidth,y = rectLeftBottomY+rectHeight})
    local flag4 = PolygonToPoint(polygon,{x = rectLeftBottomX,y = rectLeftBottomY+rectHeight})

    if (flag1 or flag2 or flag3 or flag4) then
        return true
    end

    local vectorNum = polygon:VectorNumber();
    local next = 0

    for current = 0 , vectorNum do
        if (current == vectorNum - 1) then
            next = 0
        else
            next = current + 1
        end

        local vc = polygon:GetVector(current)
        local vn = polygon:GetVector(next)
        --线是否与圆碰撞
        if LineToRect(vc,vn,rectLeftBottomX,rectLeftBottomY,rectWidth,rectHeight) then
            return true
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值