Skip to main content

03.球とAABBの当たり判定

8.球とAABBの当たり判定

このページでは、授業で扱った3種類の当たり判定を、何を比べればよいかという視点で整理します。

  • 球 vs 球
  • AABB vs AABB
  • 球 vs AABB

Q34.球は何で表す?

球の当たり判定を表すために必要な情報を選んでください。

  • A.中心座標と半径
  • B.最小座標と最大座標だけ
  • C.頂点を必ず8個
  • D.回転角だけ
答え

A.中心座標と半径

球は中心 $C$ と半径 $r$ で表せます。

Q35.球同士が当たる条件は?

球Aの中心を $C_A$、半径を $r_A$、球Bの中心を $C_B$、半径を $r_B$ とします。衝突条件として正しいものを選んでください。

  • A.中心間距離 $\le r_A+r_B$
  • B.中心間距離 $\ge r_A+r_B$
  • C.中心間距離 $=r_A-r_B$ のときだけ
  • D.半径に関係なく中心が違えば衝突
答え

A

2つの中心の距離が、半径の和以下なら球同士は接触または重なっています。

Q36.数値で球同士を判定しよう

球Aの中心が $(0,0,0)$、半径が2、球Bの中心が $(3,4,0)$、半径が3です。2つの球は当たっていますか。

  • A.当たっている
  • B.当たっていない
答え

A.当たっている

中心間距離は $\sqrt{3^2+4^2}=5$、半径の和も $2+3=5$ なので、ちょうど接しています。

Q37.なぜ距離の2乗で比べる?

実装では、しばしば次のように平方根を取らずに判定します。

$$ |C_A-C_B|^2 \le (r_A+r_B)^2 $$

この方法を使う主な理由を選んでください。

  • A.平方根を計算しなくても同じ大小関係を判定できるため
  • B.半径が不要になるため
  • C.球をAABBへ変換できるため
  • D.座標を正規化できるため
答え

A

距離そのものが不要で「当たっているか」だけ知りたい場合、平方根を省けます。


9.AABB vs AABB

AABBは各軸に平行な箱で、最小座標 min と最大座標 max で表せます。

Q38.AABBを表す値を選ぼう

3DのAABBを表す基本情報として正しいものを選んでください。

  • A.min(x,y,z) と max(x,y,z)
  • B.中心と半径
  • C.Forwardベクトルだけ
  • D.Yaw・Pitch・Rollだけ
答え

A

Q39.1軸でも離れていたら?

2つのAABBがX方向では完全に離れていますが、Y方向とZ方向では重なっています。衝突しているでしょうか。

  • A.衝突している
  • B.衝突していない
答え

B.衝突していない

AABB同士は、X・Y・Zのすべての軸で区間が重なっているときだけ衝突します。1軸でも離れていれば非衝突です。

Q40.数値でAABBを判定しよう

AABB Aを min=(0,0,0), max=(2,2,2)、AABB Bを min=(3,1,1), max=(4,2,2) とします。衝突していますか。

  • A.衝突している
  • B.衝突していない
答え

B.衝突していない

X方向で、Aの最大値2よりBの最小値3の方が大きいため、X軸で完全に離れています。

Q41.AABBの判定条件を選ぼう

X軸だけを考えます。AABB AとBがX方向で離れている条件として正しいものを選んでください。

  • A.A.max.x < B.min.x または B.max.x < A.min.x
  • B.A.max.x > B.min.x なら必ず離れている
  • C.A.min.x == B.min.x のときだけ離れている
  • D.X軸だけでは何も判定できない
答え

A

この「離れているか」の確認をX・Y・Zで行います。


10.球 vs AABB

球とAABBでは、まずAABB上で球の中心に最も近い点を求めます。その最近点を $Q$、球の中心を $C$ とすると、最後は $|C-Q|$ と半径を比較できます。

Q42.clamp は何をしている?

AABBのX範囲が $[0,4]$、球中心のX座標が $C_x=5$ です。clamp(C.x, 0, 4) の結果はいくつですか。

答え:______

答え

4

範囲より大きい値は最大値4に固定されます。

Q43.AABBの内側ならどうなる?

AABBのX範囲が $[0,4]$、球中心のX座標が $C_x=2$ です。clamp(C.x, 0, 4) の結果はいくつですか。

答え:______

答え

2

範囲内の値はそのまま返ります。この性質をX・Y・Zすべてに使うと、最近点を作れます。

Q44.3次元の最近点を求めよう

AABBを min=(0,0,0), max=(4,2,3)、球中心を $C=(5,3,-2)$ とします。各成分を clamp して得られる最近点 $Q$ を求めてください。

答え:$Q=(___,___,___)$

答え

$Q=(4,2,0)$

  • X:5 → 4へclamp
  • Y:3 → 2へclamp
  • Z:-2 → 0へclamp

Q45.最近点から衝突を判定しよう

Q44の $C=(5,3,-2)$、$Q=(4,2,0)$ を使います。球の半径が $r=2$ のとき、衝突しているでしょうか。

  • A.衝突している
  • B.衝突していない
答え

B.衝突していない

$C-Q=(1,1,-2)$ なので距離の2乗は $1^2+1^2+(-2)^2=6$。半径の2乗は $2^2=4$ です。$6>4$ なので衝突していません。

Q46.球の中心がAABBの中にあると?

球の中心 $C$ がAABBの内部にある場合、clamp で求めた最近点 $Q$ はどうなりますか。

  • A.$Q=C$ になる
  • B.必ずAABBの角になる
  • C.必ず原点になる
  • D.最近点は求められない
答え

A.$Q=C$ になる

この場合 $|C-Q|^2=0$ なので、球はAABBと重なっていると判定できます。

Q47.処理の順番を並べよう

球 vs AABBの基本的な処理を、正しい順番に並べてください。

  • A.$|C-Q|^2$ と $r^2$ を比較する
  • B.各軸を clamp して最近点 $Q$ を求める
  • C.差ベクトル $C-Q$ を求める
  • D.差ベクトルの長さの2乗を求める

答え:__ → __ → __ → __

答え

B → C → D → A

clamp → 最近点 → 差ベクトル → 距離² → 半径²と比較、という流れです。