Caja contiene caja AABB
Una caja exterior de (0, 0) a (10, 10) contiene por completo una interior de (2, 3) a (5, 7): los cuatro bordes quedan anidados. Introduzca los bordes de ambas cajas y vea qué lado, si alguno, rompe la contención. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- x mínimo exterior
- 0
- x máximo exterior
- 10
- y mínimo exterior
- 0
- y máximo exterior
- 10
- x mínimo interior
- 2
- x máximo interior
- 5
- Ancho exterior
- 10
- Alto exterior
- 10
- Ancho interior
- 3
- Alto interior
- 4
La contención de cajas delimitadoras alineadas a los ejes es un predicado espacial fundamental en cartografía, gráficos por computador, fase amplia de colisiones, jerarquías de teselas GIS y recorte de ventana. Dados dos rectángulos con lados paralelos a los ejes, la pregunta es si la caja exterior encierra por completo a la interior — no solo si se solapan o comparten una esquina. Esta comprobación acepta ocho cotas finitas de borde (mínimo y máximo de X e Y para el contenedor exterior y el candidato interior), valida que cada caja tenga min menor o igual que max en ambos ejes y evalúa cuatro desigualdades cerradas: el borde izquierdo exterior debe quedar a la izquierda o sobre el interior, el derecho exterior a la derecha o sobre el interior, e igual anidamiento abajo y arriba. El resultado es un indicador booleano contains junto con diagnósticos por borde para ver exactamente qué cota falla cuando no hay anidamiento. Las cajas idénticas cuentan como contención con bordes cerrados.
Qué significa la contención AABB y cómo se prueban los cuatro bordes
Una caja delimitadora alineada a ejes, abreviada a menudo AABB, se define por una coordenada mínima y máxima en cada eje. La contención total de una caja interior por una exterior significa que todo punto del rectángulo interior también pertenece al exterior. Como ambas formas son productos de intervalos, esa inclusión se reduce al anidamiento de intervalos en cada eje por separado: el intervalo X interior debe quedar dentro del intervalo X exterior, y el intervalo Y interior dentro del Y exterior.
Si falla cualquiera de esas cuatro comprobaciones, la caja exterior no contiene por completo a la interior — aunque sigan intersectándose en un solapamiento parcial o compartan límite solo en un lado. Se admiten cajas degeneradas de ancho o alto nulo cuando min iguala max; una caja puntual está contenida cuando ese punto queda sobre o dentro de los bordes exteriores. Dos cajas idénticas también satisfacen la contención, porque todos los bordes coinciden y las desigualdades cerradas siguen siendo ciertas.
Esta capacidad no modela rectángulos rotados, polígonos esféricos geodésicos ni el cruce del antimeridiano; es el predicado clásico AABB cartesiano usado como filtro rápido de fase amplia antes de pruebas geométricas más costosas.
Contrato de entrada, forma de la respuesta y cajas inválidas
Una caja invertida donde min es estrictamente mayor que max se rechaza en lugar de intercambiarse en silencio, porque el intercambio cambiaría la geometría pretendida sin conocimiento del llamante. El campo resumen contains es true solo cuando las cuatro banderas son true. La bandera equal es true cuando ambas cajas comparten bordes idénticos.
Un mensaje breve describe contención total, cajas idénticas o enumera los bordes fallidos cuando no hay anidamiento. Ejemplo: caja exterior de (0,0) a (10,10) e interior de (2,3) a (5,7) produce contains true con las cuatro banderas true. Un solapamiento parcial o una caja que sobresale por un lado produce contains false y nombra el lado fallido.
Los fallos de validación no se facturan.
Dónde resulta útil una comprobación de contención de cajas
Los servidores de mapas y teselas usan la contención AABB para decidir si el bbox de un elemento está por completo dentro de una ventana, de una tesela padre o de un rectángulo de geovalla antes de cargar geometría de mayor resolución. Los motores de juegos y de física ejecutan la misma prueba de cuatro bordes como filtro barato de fase amplia antes de la colisión a nivel de triángulo.
Los pipelines GIS comparan cajas de anotación con extensiones de región al recortar exportaciones o validar que una zona dibujada quede enteramente dentro de una hoja cartográfica con licencia. Las herramientas de visión por computador y maquetación de documentos anidan cajas de detección dentro de rectángulos de página o recorte para filtrar falsos positivos que desbordan el marco. La validación fallida no consume saldo.
Mantenga las peticiones pequeñas, fije el booleano y las banderas de borde en las pruebas y obtendrá decisiones de anidamiento reproducibles para trabajadores de mapas, servidores de juegos y scripts de corrección sin montar una base de datos espacial completa solo para un test de rectángulos.
Qué puede hacer con ella
Anidamiento de ventana y teselas
Compruebe si el bbox de un elemento o de una tesela hija queda por completo dentro de la ventana del mapa o de la tesela padre antes de cargar geometría detallada.
Colisión y recorte en fase amplia
Filtre pares candidatos en juegos y física comprobando si un AABB contiene por completo a otro antes de pruebas costosas de fase estrecha.
Validación de cajas de maquetación y detección
Verifique que las cajas de OCR, UI o detección de objetos permanezcan enteramente dentro de una página, un recorte o la extensión de una región con licencia.
Preguntas frecuentes
¿Las cajas idénticas cuentan como contención?
Sí. Los bordes cerrados permiten que min/max exterior igualen min/max interior. La bandera equal es true y contains es true cuando ambas cajas comparten los mismos límites.
¿Qué ocurre si min es mayor que max en una caja?
Las cajas invertidas no se intercambian automáticamente; corrija los bordes para que min sea menor o igual que max en cada eje.
¿Maneja cajas rotadas o geográficas que cruzan el antimeridiano?
No. Solo es una prueba cartesiana alineada a ejes. Rote primero las formas a forma alineada, o use una capacidad geodésica para polígonos esféricos que envuelven el antimeridiano.
¿Solaparse es lo mismo que estar contenida?
No. Dos cajas pueden solaparse o compartir un borde y aun así no cumplir la prueba. La contención exige que todo punto de la caja interior esté dentro de la exterior, así que los cuatro bordes deben anidarse; basta uno que falle para que el resultado sea negativo.
¿Cómo sé qué lado impide la contención?
Cada borde se comprueba por separado: izquierdo, derecho, inferior y superior. El resultado indica cuáles de los cuatro cumplen y el mensaje nombra los que fallan, de modo que ve si la caja interior sobresale por un lado o por varios.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"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
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bbox_contains_bbox",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La misma lógica pura alimenta la herramienta gratuita del navegador y la ruta API de pago, de modo que los pipelines de mapas y los correctores automáticos nunca discrepan en la decisión de anidamiento.
Qué significa la contención AABB y cómo se prueban los cuatro bordes
En dos dimensiones son cuatro números: min_x, max_x, min_y y max_y. Escritas como desigualdades con bordes cerrados, la contención se cumple si y solo si outer_min_x es menor o igual que inner_min_x, outer_max_x es mayor o igual que inner_max_x, outer_min_y es menor o igual que inner_min_y y outer_max_y es mayor o igual que inner_max_y.
Contrato de entrada, forma de la respuesta y cajas inválidas
Envíe un cuerpo JSON por POST con ocho números finitos obligatorios: outer_min_x, outer_max_x, outer_min_y y outer_max_y para la caja contenedora, más inner_min_x, inner_max_x, inner_min_y e inner_max_y para la candidata. Cada campo puede llegar como número JSON o como cadena numérica; los campos ausentes, las cadenas vacías y los valores no finitos fallan con invalid_input nombrando el campo. Además, cada caja debe estar bien formada: outer_min_x debe ser menor o igual que outer_max_x, y la misma regla min frente a max aplica a los bordes Y exteriores y a ambos ejes de la caja interior. En éxito la respuesta repite los ocho valores de borde redondeados, informa outer_width, outer_height, inner_width e inner_height, y devuelve banderas booleanas left_ok, right_ok, bottom_ok y top_ok por cada prueba de borde.
Dónde resulta útil una comprobación de contención de cajas
Como la implementación es parse pura de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente.
Preguntas técnicas
¿Cómo compruebo si una caja delimitadora contiene a otra?
Envíe ocho bordes finitos: outer_min_x, outer_max_x, outer_min_y, outer_max_y y los mismos cuatro para la caja interior. La API devuelve contains true cuando la exterior anida a la interior en los cuatro bordes.
¿Cuánto cuesta la comprobación de contención de cajas?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT prepago a $0.002 por llamada exitosa; la entrada inválida no se factura.