複数個のオブジェクト同士の衝突判定

andre michelle による、AS3 のサンプルにある 200 個の円の衝突判定。これのアルゴリズムが気になって、ソースをダウンロードした。

こういった、個々のオブジェクト同士が相互作用するプログラムって、ループの回数が恐ろしい数になりそうだけど、ループの部分のコードを見てみたら 19900 回と、思ったより少なかった。

成る程、「200 個の円それぞれに対し、自分以外の円との衝突判定」を調べるのか。つまり、200 個の円の中から 2 個を取り出す組み合わせを全て網羅すればよいので、

200C2 = 200! / (2! * (200 - 2)!) = 19900

結果、19900 回となる。