Caixa contém caixa AABB
Uma caixa externa de (0, 0) a (10, 10) contém totalmente uma interna de (2, 3) a (5, 7): as quatro bordas ficam aninhadas. Informe as bordas das duas caixas e veja qual lado, se houver, quebra a contenção. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- x mínimo externo
- 0
- x máximo externo
- 10
- y mínimo externo
- 0
- y máximo externo
- 10
- x mínimo interno
- 2
- x máximo interno
- 5
- Largura externa
- 10
- Altura externa
- 10
- Largura interna
- 3
- Altura interna
- 4
A contenção de caixas delimitadoras alinhadas aos eixos é um predicado espacial fundamental em mapeamento, gráficos por computador, fase ampla de colisão, hierarquias de tiles GIS e recorte de viewport. Dados dois retângulos com lados paralelos aos eixos, a questão é se a caixa externa encerra por completo a interna — não apenas se se sobrepõem ou partilham um canto. Esta verificação aceita oito limites finitos de borda (mínimo e máximo de X e Y para o contentor externo e o candidato interno), valida que cada caixa tenha min menor ou igual a max em ambos os eixos e avalia quatro desigualdades fechadas: a borda esquerda externa deve ficar à esquerda ou sobre a interna, a direita externa à direita ou sobre a interna, e o mesmo aninhamento em baixo e em cima. O resultado é um indicador booleano contains junto com diagnósticos por borda para ver exatamente qual limite falha quando o aninhamento não se verifica. Caixas idênticas contam como contenção com bordas fechadas.
O que significa contenção AABB e como os quatro bordos são testados
Uma caixa delimitadora alinhada aos eixos, muitas vezes abreviada AABB, define-se por uma coordenada mínima e máxima em cada eixo. A contenção total de uma caixa interna por uma externa significa que todo ponto do retângulo interno também pertence ao externo. Como ambas as formas são produtos de intervalos, essa inclusão reduz-se ao aninhamento de intervalos em cada eixo de forma independente: o intervalo X interno deve ficar dentro do intervalo X externo, e o intervalo Y interno dentro do Y externo.
Se qualquer uma dessas quatro verificações falhar, a caixa externa não contém por completo a interna — mesmo quando ainda se intersectam em sobreposição parcial ou partilham limite só de um lado. Caixas degeneradas de largura ou altura nula são permitidas quando min iguala max; uma caixa pontual está contida quando esse ponto fica sobre ou dentro das bordas externas. Duas caixas idênticas também satisfazem a contenção, porque todas as bordas coincidem e as desigualdades fechadas continuam verdadeiras.
Esta capacidade não modela retângulos rodados, polígonos esféricos geodésicos nem o envolvimento do antimeridiano; é o predicado clássico AABB cartesiano usado como filtro rápido de fase ampla antes de testes geométricos mais caros.
Contrato de entrada, forma da resposta e caixas inválidas
Uma caixa invertida em que min é estritamente maior que max é rejeitada em vez de trocada em silêncio, porque a troca mudaria a geometria pretendida sem o conhecimento de quem chama. O campo resumo contains é true só quando as quatro flags são true. A flag equal é true quando as duas caixas partilham bordas idênticas.
Uma mensagem curta descreve contenção total, caixas idênticas ou lista as bordas que falharam quando o aninhamento não se verifica. Exemplo: caixa externa de (0,0) a (10,10) e interna de (2,3) a (5,7) produz contains true com as quatro flags true. Sobreposição parcial ou uma caixa que sobressai de um lado produz contains false e nomeia o lado que falhou.
Falhas de validação não são cobradas.
Onde uma verificação de contenção de caixas vale a pena
Servidores de mapas e tiles usam contenção AABB para decidir se o bbox de um elemento está por completo dentro de um viewport, de um tile pai ou de um retângulo de geofence antes de carregar geometria de maior resolução. Motores de jogos e de física executam o mesmo teste de quatro bordas como filtro barato de fase ampla antes da colisão em nível de triângulo.
Pipelines GIS comparam caixas de anotação a extensões de região ao recortar exportações ou validar que uma zona desenhada fique inteiramente dentro de uma folha cartográfica licenciada. Ferramentas de visão computacional e layout de documentos aninham caixas de detecção dentro de retângulos de página ou recorte para filtrar falsos positivos que transbordam o quadro. Validação falhada não consome saldo.
Mantenha pedidos pequenos, fixe o booleano e as flags de borda nos testes e obtenha decisões de aninhamento reproduzíveis para workers de mapas, servidores de jogos e scripts de correção sem levantar uma base de dados espacial completa só para um teste de retângulos.
Casos de uso
Aninhamento de viewport e tiles
Verifique se o bbox de um elemento ou de um tile filho fica por completo dentro do viewport do mapa ou do tile pai antes de carregar geometria detalhada.
Colisão e culling em fase ampla
Filtre pares candidatos em jogos e física testando se um AABB contém por completo outro antes de testes caros de fase estreita.
Validação de caixas de layout e detecção
Confirme que caixas de OCR, UI ou detecção de objetos permanecem inteiramente dentro de uma página, recorte ou extensão de região licenciada.
Perguntas frequentes
Caixas idênticas contam como contenção?
Sim. Bordas fechadas permitem que min/max externo igualem min/max interno. A flag equal é true e contains é true quando ambas as caixas partilham os mesmos limites.
E se min for maior que max numa caixa?
Caixas invertidas não são trocadas automaticamente; corrija as bordas para que min seja menor ou igual a max em cada eixo.
Isto trata caixas rodadas ou geográficas no antimeridiano?
Não. É apenas um teste cartesiano alinhado aos eixos. Rode primeiro as formas para a forma alinhada, ou use uma capacidade geodésica para polígonos esféricos que envolvem o antimeridiano.
Sobrepor é o mesmo que estar contida?
Não. Duas caixas podem se sobrepor ou dividir uma borda e mesmo assim falhar no teste. A contenção exige que todo ponto da caixa interna esteja dentro da externa, então as quatro bordas precisam se aninhar; basta uma falhar para o resultado ser negativo.
Como sei qual lado impede a contenção?
Cada borda é verificada separadamente: esquerda, direita, inferior e superior. O resultado mostra quais das quatro passaram e a mensagem cita as que falharam, para você ver se a caixa interna sobra de um lado ou de vários.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/geo/bbox-contains-bbox \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"outer_min_x":0,"outer_max_x":10,"outer_min_y":0,"outer_max_y":10,"inner_min_x":2,"inner_max_x":5,"inner_min_y":3,"inner_max_y":7}'const res = await fetch("https://api.kit.forhosting.com/geo/bbox-contains-bbox", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"outer_min_x": 0,
"outer_max_x": 10,
"outer_min_y": 0,
"outer_max_y": 10,
"inner_min_x": 2,
"inner_max_x": 5,
"inner_min_y": 3,
"inner_max_y": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/bbox-contains-bbox",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"outer_min_x": 0,
"outer_max_x": 10,
"outer_min_y": 0,
"outer_max_y": 10,
"inner_min_x": 2,
"inner_max_x": 5,
"inner_min_y": 3,
"inner_max_y": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/bbox-contains-bbox", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"outer_min_x":0,"outer_max_x":10,"outer_min_y":0,"outer_max_y":10,"inner_min_x":2,"inner_max_x":5,"inner_min_y":3,"inner_max_y":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"outer_min_x":0,"outer_max_x":10,"outer_min_y":0,"outer_max_y":10,"inner_min_x":2,"inner_max_x":5,"inner_min_y":3,"inner_max_y":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/bbox-contains-bbox", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"outer_min_x": 0,
"outer_max_x": 10,
"outer_min_y": 0,
"outer_max_y": 10,
"inner_min_x": 2,
"inner_max_x": 5,
"inner_min_y": 3,
"inner_max_y": 7
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bbox_contains_bbox",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A mesma lógica pura alimenta a ferramenta gratuita do navegador e o caminho API cobrado, de modo que pipelines de mapas e corretoras automáticas nunca discordam na decisão de aninhamento.
O que significa contenção AABB e como os quatro bordos são testados
Em duas dimensões são quatro números: min_x, max_x, min_y e max_y. Escritas como desigualdades com bordas fechadas, a contenção vale se e somente se outer_min_x for menor ou igual a inner_min_x, outer_max_x for maior ou igual a inner_max_x, outer_min_y for menor ou igual a inner_min_y e outer_max_y for maior ou igual a inner_max_y.
Contrato de entrada, forma da resposta e caixas inválidas
Envie um corpo JSON por POST com oito números finitos obrigatórios: outer_min_x, outer_max_x, outer_min_y e outer_max_y para a caixa contentora, mais inner_min_x, inner_max_x, inner_min_y e inner_max_y para a candidata. Cada campo pode chegar como número JSON ou como string numérica; campos ausentes, strings vazias e valores não finitos falham com invalid_input nomeando o campo. Além disso, cada caixa deve estar bem formada: outer_min_x deve ser menor ou igual a outer_max_x, e a mesma regra min versus max aplica-se às bordas Y externas e a ambos os eixos da caixa interna. Em sucesso a resposta ecoa os oito valores de borda arredondados, informa outer_width, outer_height, inner_width e inner_height, e devolve flags booleanas left_ok, right_ok, bottom_ok e top_ok para cada teste de borda.
Onde uma verificação de contenção de caixas vale a pena
Como a implementação é parse pura tier A, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída.
Perguntas técnicas
Como verifico se uma caixa delimitadora contém outra?
Envie oito bordas finitas: outer_min_x, outer_max_x, outer_min_y, outer_max_y e as mesmas quatro para a caixa interna. A API devolve contains true quando a externa aninha a interna nos quatro bordos.
Quanto custa a verificação de contenção de caixas?
A ferramenta do navegador é gratuita. Pedidos API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.