円形の当たり判定アルゴリズム


円形の当たり判定はピタゴラスの定理を使い斜線の距離から割り出します。ピタゴラスの定理とは、直角三角形の斜辺(c)の二乗は他二辺(a, b)をそれぞれ二乗した値の和に等しい、という定理。

a² + b² = c²

円形の当たり判定の図1

斜辺以外の二辺の長さが分かれば斜辺の長さも分かる(a + bの値を素因数分解)。下図のように二点間の円形の当たり判定を求める場合、まず直角三角形を作る。

円形の当たり判定2

円形の当たり判定3

点と点の場合、cが0以下か0を超えるかで判定。円は半径があるため、互いの半径の合計と比較。比較対象が二乗されているので半径も二乗する((pr + er) * (pr + er))。二点間の距離が0かそれを超えるか知りたいだけのため、素因数分解までして正確なcは求めない。

下はFlashで作った円形当たり判定のデモ。緑円をドラッグし赤円に当たると「HIT!」と表示される。

Get Adobe Flash player

当たり判定部分のコードは以下。

下が円形の当たり判定を行うCircleHitTestクラスのソースコード。

Comments are Disabled