Boîte englobante contient AABB
Une boîte extérieure de (0, 0) à (10, 10) contient entièrement une boîte intérieure de (2, 3) à (5, 7) : les quatre bords s'emboîtent. Saisissez les bords de chaque boîte et voyez quel côté, le cas échéant, empêche l'inclusion. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- x minimum extérieur
- 0
- x maximum extérieur
- 10
- y minimum extérieur
- 0
- y maximum extérieur
- 10
- x minimum intérieur
- 2
- x maximum intérieur
- 5
- Largeur extérieure
- 10
- Hauteur extérieure
- 10
- Largeur intérieure
- 3
- Hauteur intérieure
- 4
La contenance de boîtes englobantes alignées sur les axes est un prédicat spatial fondamental en cartographie, infographie, phase large de collision, hiérarchies de tuiles GIS et culling de viewport. Étant donné deux rectangles dont les côtés sont parallèles aux axes, la question est de savoir si la boîte externe enferme entièrement la boîte interne — et non seulement si elles se chevauchent ou partagent un coin. Cette vérification accepte huit bornes de bord finies (minimum et maximum en X et Y pour le conteneur externe et le candidat interne), valide que chaque boîte a min inférieur ou égal à max sur les deux axes, puis évalue quatre inégalités fermées : le bord gauche externe doit se situer à gauche ou sur le bord gauche interne, le droit externe à droite ou sur le droit interne, et le même emboîtement en bas et en haut. Le résultat est un indicateur booléen contains avec des diagnostics par bord pour voir exactement quelle borne échoue lorsque l'imbrication ne tient pas. Des boîtes identiques comptent comme contenance avec des bords fermés.
Ce que signifie la contenance AABB et comment les quatre bords sont testés
Une boîte englobante alignée sur les axes, souvent abrégée AABB, est définie par une coordonnée minimale et maximale sur chaque axe. La contenance totale d'une boîte interne par une boîte externe signifie que tout point du rectangle interne appartient aussi au rectangle externe. Comme les deux formes sont des produits d'intervalles, cette inclusion se réduit à l'imbrication d'intervalles sur chaque axe indépendamment : l'intervalle X interne doit se trouver dans l'intervalle X externe, et l'intervalle Y interne dans le Y externe.
Si l'une de ces quatre vérifications échoue, la boîte externe ne contient pas entièrement la boîte interne — même lorsqu'elles se croisent encore en chevauchement partiel ou ne partagent une frontière que d'un côté. Les boîtes dégénérées de largeur ou hauteur nulle sont admises lorsque min égale max ; une boîte ponctuelle est contenue lorsque ce point se trouve sur ou à l'intérieur des bords externes. Deux boîtes identiques satisfont aussi la contenance, car tous les bords coïncident et les inégalités fermées restent vraies.
Cette capacité ne modélise pas les rectangles tournés, les polygones sphériques géodésiques ni l'enroulement de l'antiméridien ; c'est le prédicat classique AABB cartésien utilisé comme filtre rapide de phase large avant des tests géométriques plus coûteux.
Contrat d'entrée, forme de la réponse et boîtes invalides
Une boîte inversée où min est strictement supérieur à max est rejetée plutôt qu'échangée en silence, car l'échange modifierait la géométrie voulue à l'insu de l'appelant. Le champ résumé contains n'est true que lorsque les quatre drapeaux sont true. Le drapeau equal est true lorsque les deux boîtes partagent des bords identiques.
Un court message décrit la contenance totale, des boîtes identiques, ou liste les bords en échec lorsque l'imbrication ne tient pas. Exemple : boîte externe de (0,0) à (10,10) et interne de (2,3) à (5,7) produit contains true avec les quatre drapeaux true. Un chevauchement partiel ou une boîte qui dépasse d'un côté produit contains false et nomme le côté en échec.
Les échecs de validation ne sont pas facturés.
Où une vérification de contenance de boîtes est utile
Les serveurs de cartes et de tuiles utilisent la contenance AABB pour décider si le bbox d'une entité est entièrement dans un viewport, une tuile parente ou un rectangle de géorepère avant de charger une géométrie plus fine. Les moteurs de jeux et de physique exécutent le même test à quatre bords comme filtre bon marché de phase large avant la collision au niveau des triangles.
Les pipelines GIS comparent des boîtes d'annotation aux étendues de région lors du découpage d'exports ou pour valider qu'une zone dessinée se situe entièrement dans une feuille cartographique sous licence. Les outils de vision par ordinateur et de mise en page de documents imbriquent des boîtes de détection dans des rectangles de page ou de recadrage pour filtrer les faux positifs qui débordent du cadre. Une validation échouée ne consomme pas le solde.
Gardez les requêtes compactes, figez le booléen et les drapeaux de bord dans les tests, et vous obtiendrez des décisions d'imbrication reproductibles pour les workers cartographiques, les serveurs de jeux et les scripts de notation sans déployer une base spatiale complète pour un simple test de rectangles.
Cas d’usage
Imbrication de viewport et de tuiles
Vérifiez si le bbox d'une entité ou d'une tuile enfant se trouve entièrement dans le viewport de la carte ou la tuile parente avant de charger une géométrie détaillée.
Collision et culling en phase large
Filtrez les paires candidates en jeux et physique en testant si une AABB en contient entièrement une autre avant des tests coûteux de phase étroite.
Validation des boîtes de mise en page et de détection
Assurez-vous que les boîtes OCR, UI ou de détection d'objets restent entièrement dans une page, un recadrage ou l'étendue d'une région sous licence.
Questions fréquentes
Les boîtes identiques comptent-elles comme contenance ?
Oui. Les bords fermés autorisent min/max externes égaux à min/max internes. Le drapeau equal est true et contains est true lorsque les deux boîtes partagent les mêmes limites.
Que se passe-t-il si min est supérieur à max sur une boîte ?
Les boîtes inversées ne sont pas échangées automatiquement ; corrigez les bords pour que min soit inférieur ou égal à max sur chaque axe.
Gère-t-elle les boîtes tournées ou géographiques à l'antiméridien ?
Non. Il s'agit uniquement d'un test cartésien aligné sur les axes. Faites d'abord pivoter les formes en forme alignée, ou utilisez une capacité géodésique pour les polygones sphériques qui enveloppent l'antiméridien.
Chevaucher, est-ce la même chose qu'être contenue ?
Non. Deux rectangles peuvent se chevaucher ou partager un bord sans réussir le test. L'inclusion exige que chaque point de la boîte intérieure soit dans la boîte extérieure : les quatre bords doivent s'emboîter, et un seul bord en défaut suffit pour un résultat négatif.
Comment savoir quel côté empêche l'inclusion ?
Chaque bord est contrôlé séparément : gauche, droite, bas et haut. Le résultat indique lesquels des quatre passent et le message nomme ceux qui échouent, pour voir si la boîte intérieure dépasse d'un côté ou de plusieurs.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"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
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bbox_contains_bbox",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
La même logique pure alimente l'outil gratuit du navigateur et le chemin API facturé, de sorte que les pipelines cartographiques et les correcteurs automatiques ne divergent jamais sur la décision d'imbrication.
Ce que signifie la contenance AABB et comment les quatre bords sont testés
En deux dimensions ce sont quatre nombres : min_x, max_x, min_y et max_y. Écrites comme inégalités à bords fermés, la contenance tient si et seulement si outer_min_x est inférieur ou égal à inner_min_x, outer_max_x est supérieur ou égal à inner_max_x, outer_min_y est inférieur ou égal à inner_min_y et outer_max_y est supérieur ou égal à inner_max_y.
Contrat d'entrée, forme de la réponse et boîtes invalides
Envoyez un corps JSON en POST avec huit nombres finis obligatoires : outer_min_x, outer_max_x, outer_min_y et outer_max_y pour la boîte conteneur, plus inner_min_x, inner_max_x, inner_min_y et inner_max_y pour la boîte candidate. Chaque champ peut arriver comme nombre JSON ou comme chaîne numérique ; les champs manquants, les chaînes vides et les valeurs non finies échouent avec invalid_input en nommant le champ. De plus, chaque boîte doit être bien formée : outer_min_x doit être inférieur ou égal à outer_max_x, et la même règle min contre max s'applique aux bords Y externes et aux deux axes de la boîte interne. En cas de succès la réponse renvoie les huit valeurs de bord arrondies, signale outer_width, outer_height, inner_width et inner_height, et renvoie des drapeaux booléens left_ok, right_ok, bottom_ok et top_ok pour chaque test de bord.
Où une vérification de contenance de boîtes est utile
Comme l'implémentation est pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant.
Questions techniques
Comment vérifier si une boîte englobante en contient une autre ?
Envoyez huit bords finis : outer_min_x, outer_max_x, outer_min_y, outer_max_y et les quatre mêmes pour la boîte interne. L'API renvoie contains true lorsque la boîte externe englobe l'interne sur les quatre bords.
Combien coûte la vérification de contenance de boîtes ?
L'outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.