Axis-Aligned Bounding Box. 軸平行境界ボックス。 各軸に並行な辺で構成する長方形による境界ボックス

ボックスと点の衝突判定

ボックスの左上隅の座標をとし、幅を、高さをとする。このとき、ボックスの右端は、下端はとなる。 点の座標をとする。

衝突判定:

  • 点がボックスと衝突している条件は、点の x 座標がボックスの左右の範囲にあり、かつ、点の y 座標がボックスの上下の範囲にあることである

ボックス同士の衝突判定

左上隅の座標で位置をとるボックス

この場合、衝突判定はできるが重なりの程度を知ることが難しい。

素直な方法

ボックスの各隅(4つの点)に対して、ボックスと点の衝突判定を行う。 回のチェックが必要。

水平方向・垂直方向の重なり

それぞれのボックスの上(左)端が一方のボックスの下(右)端より高いか(すなわち両方のボックスと交差する水平(垂直)線を引けるかどうかと言い換えられる)で、各軸方向の重なりを判定できる。どちらも重なっていれば、ボックス同士が交差するすなわち衝突していると言える

一方のボックスの左上隅の座標を、幅を、高さをとする。 もう一方のボックスの左上隅の座標を、幅を、高さをとする。

水平方向の衝突判定: 垂直方向の衝突判定:

素直な方法と比べて、チェックする条件を減らすことができた。

中心の座標で位置をとるボックス

一方のボックスの中心座標を、幅を、高さをとする。 もう一方のボックスの中心座標をを、幅を、高さをとする。 このとき、二つのボックスの

  • 水平方向の距離は
  • 垂直方向の距離は となる。

すると、

  • 水平方向の重なりの程度は
  • 垂直方向の重なりの程度は と知ることができる。

すなわち、

水平方向で重なっていないとき: 水平方向で重なっているとき:

垂直方向で重なっていないとき: 垂直方向で重なっているとき:

のように判定できる。

参考