バウンディングボックス包含判定
(0, 0)から(10, 10)の外側の箱は、(2, 3)から(5, 7)の内側の箱を完全に含み、4辺すべてが入れ子になります。両方の箱の辺を入力すると、包含を妨げる辺があればどれかが分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 外側の最小x
- 0
- 外側の最大x
- 10
- 外側の最小y
- 0
- 外側の最大y
- 10
- 内側の最小x
- 2
- 内側の最大x
- 5
- 外側の幅
- 10
- 外側の高さ
- 10
- 内側の幅
- 3
- 内側の高さ
- 4
軸平行バウンディングボックスの包含判定は、地図・コンピュータグラフィックス・衝突のブロードフェーズ・GISタイル階層・ビューポートカリングで使われる基本的な空間述語です。座標軸に平行な二辺をもつ二つの矩形について、外側の箱が内側の箱を完全に囲むかどうかが問題であり、単なる重なりや角の共有では足りません。本判定は外側コンテナと内側候補についてX・Yの最小・最大という八つの有限な辺境界を受け取り、各箱で両軸ともminがmax以下であることを検証したうえで、四つの閉区間不等式を評価します。外側の左辺は内側の左辺と同じかより左、外側の右辺は内側の右辺と同じかより右、下辺・上辺も同様の入れ子関係が必要です。結果は真偽値のcontainsフラグと、包含が成立しないときにどの境界が失敗したかを示す辺ごとの診断です。同一の箱は閉辺のもとで包含とみなします。
AABB包含の意味と四辺の検査方法
軸平行バウンディングボックス(しばしばAABBと略す)は、各軸の最小座標と最大座標で定義されます。外側の箱による内側の箱の完全包含とは、内側矩形のすべての点が外側矩形にも属することを意味します。両形は区間の直積なので、集合包含は軸ごとの区間入れ子に帰着します。
内側のX区間は外側のX区間内にあり、内側のY区間は外側のY区間内になければなりません。四つの検査のうち一つでも失敗すれば、部分重なりや片側だけの境界共有があっても外側は内側を完全には含みません。minがmaxに等しい幅ゼロ・高さゼロの退化箱は許可され、点状の箱は外側の辺上または内側にあるときに含まれます。
二つの同一箱も、すべての辺が等しく閉不等式が真のままなので包含を満たします。本機能は回転矩形・測地線球面ポリゴン・日付変更線の回り込みは扱いません。より高コストな幾何テストの前の高速ブロードフェーズ用の、古典的なデカルトAABB述語です。
入力契約・応答の形・無効なバウンディングボックス
minがmaxより真に大きい逆転箱は黙って入れ替えず拒否します。入れ替えは呼び出し側の意図しない幾何変更になるためです。要約欄 contains は四フラグがすべて true のときだけ true です。
equal は両箱が同一辺を共有するとき true です。短いメッセージは完全包含・同一箱、または入れ子が成立しないときの失敗辺を述べます。例:外側 (0,0)〜(10,10)、内側 (2,3)〜(5,7) では contains が true で四フラグとも true です。
部分重なりや片側にはみ出す箱は contains が false で失敗側を示します。検証失敗は課金されません。
バウンディングボックス包含判定が役立つ場面
地図・タイルサーバは、高解像度幾何を読み込む前に、地物のbboxがビューポート・親タイル・ジオフェンス矩形の内側に完全に収まるかをAABB包含で判断します。ゲームエンジンと物理エンジンは、三角形レベルの衝突の前に安価なブロードフェーズとして同じ四辺テストを実行します。
GISパイプラインは、エクスポートの切り出しや描画領域がライセンス済み地図シート内に完全に収まる検証で、注釈箱と領域範囲を比較します。コンピュータビジョンと文書レイアウトのツールは、枠外にはみ出す偽陽性を除くため、検出箱をページやクロップ矩形の内側に入れ子にします。検証失敗は残高を消費しません。
活用例
ビューポートとタイルの入れ子
詳細な幾何を読み込む前に、地物や子タイルのバウンディングボックスが地図ビューポートまたは親タイルの内側に完全に収まるかを確認します。
ブロードフェーズ衝突とカリング
高価なナローフェーズの前に、一方のAABBが他方を完全に含むかを調べてゲームや物理の候補対を絞り込みます。
レイアウトと検出箱の検証
OCR・UI・物体検出の箱が、ページ・クロップ・ライセンス済み領域範囲の内側に完全に収まっていることを確かめます。
よくある質問
同一の箱は包含とみなされますか?
はい。 閉辺では外側のmin/maxが内側のmin/maxと等しくて構いません。両箱が同じ境界を共有するとき equal は true、contains も true です。
ある箱でminがmaxより大きい場合はどうなりますか?
逆転箱は自動では入れ替えません。各軸でminがmax以下になるよう辺を直してください。
回転箱や日付変更線をまたぐ地理箱は扱いますか?
いいえ。 デカルトの軸平行テストのみです。まず形を軸平行に回転するか、日付変更線を包む球面ポリゴン向けの測地機能を使ってください。
重なっていれば包含していることになりますか?
なりません。2つの箱が重なったり辺を共有したりしていても、判定に通らないことがあります。包含には内側の箱のすべての点が外側に入る必要があり、4辺のうち1つでも外れれば結果は偽になります。
どの辺が包含を妨げているかは分かりますか?
はい。左、右、下、上の各辺を個別に確認し、4つのうちどれが条件を満たすかを示します。メッセージは外れた辺を挙げるので、内側の箱が片側だけはみ出しているのか、複数の側なのかが分かります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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)リクエスト例
{
"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": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bbox_contains_bbox",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
同じ純粋ロジックが無料のブラウザツールと課金APIの双方を支えるため、地図パイプラインと自動採点は包含判定で食い違いません。
AABB包含の意味と四辺の検査方法
二次元では min_x・max_x・min_y・max_y の四数です。閉辺の不等式では、outer_min_x が inner_min_x 以下、outer_max_x が inner_max_x 以上、outer_min_y が inner_min_y 以下、outer_max_y が inner_max_y 以上のとき、かつそのときに限り包含が成立します。
入力契約・応答の形・無効なバウンディングボックス
POSTでJSON本文に八つの必須有限数を送ってください。コンテナ箱の outer_min_x・outer_max_x・outer_min_y・outer_max_y と、候補箱の inner_min_x・inner_max_x・inner_min_y・inner_max_y です。各欄はJSON数値または数値文字列でよく、欠落・空文字列・非有限値は該当欄名付きの invalid_input で失敗します。さらに各箱は整形式でなければならず、outer_min_x は outer_max_x 以下、同じmin対max規則が外側Y辺と内側の両軸にも適用されます。成功時は丸められた八辺の値をエコーし、outer_width・outer_height・inner_width・inner_height を報告し、各辺検査について left_ok・right_ok・bottom_ok・top_ok の真偽フラグを返します。
バウンディングボックス包含判定が役立つ場面
実装は純粋parseのtier Aのため、成功した呼び出しはモデルトークンも外向き通信もなく、公開の基本料金 $0.002 だけです。リクエストを小さく保ち、真偽値と辺フラグをテストに固定すれば、単純な矩形判定のために空間データベース全体を立てなくても、地図ワーカー・ゲームサーバ・採点スクリプト向けの再現可能な入れ子判定が得られます。
技術的な質問
一方のバウンディングボックスが他方を含むか、どう確認しますか?
outer_min_x・outer_max_x・outer_min_y・outer_max_y と内側の同じ四辺の、八つの有限辺を送ってください。外側が内側を四辺すべてで入れ子にするとき、APIは contains true を返します。
バウンディングボックス包含判定の料金は?
ブラウザツールは無料です。APIは成功した呼び出しごとに前払いKIT残高から$0.002を使います。無効な入力は課金されません。