util={}

function util.inside(x, y, rectangle)
    if x >= rectangle[1] and
        y >= rectangle[2] and
        x <  rectangle[3]+rectangle[1] and
        y <  rectangle[4]+rectangle[2] then
        return true
    else
        return false
    end
end

function util.aabb(sprite)
    local x = sprite.pos.x + sprite.bbo.left
    local y = sprite.pos.y + sprite.bbo.top
    local w = sprite.size.w - sprite.bbo.right - sprite.bbo.left
    local h = sprite.size.h - sprite.bbo.bottom - sprite.bbo.top
    return x, y, w, h
end

function util.check_aabb_collision(x1,y1,w1,h1, x2,y2,w2,h2)
    return ( x1 < x2 + w2 and x1 + w1 > x2 and y1 < y2 + h2 and y1 + h1 > y2 )
end

function util.luminance(r, g, b)
    return (0.2126*r + 0.7152*g + 0.0722*b)/255
end

function util.normalize(v)
    local magnitud = math.sqrt(v.x * v.x + v.y * v.y)
    if magnitud == 0 then
        return {x = 0, y = 0} -- evita división por cero
    end
    return {x = v.x / magnitud, y = v.y / magnitud}
end

function math.sign(value)
    if value > 0 then
        return 1
    else
        return -1
    end
end