物理エンジンをSweep and Pruneで高速化したので、
巨大なピラミッドのデモを作ってみました。

計算時間は約15ms、ぎりぎりリアルタイムで動作します。
高速化前と比べると衝突判定速度が倍近く向上しました。
Sweep and Pruneはどこかの軸に対してソートして判定するものですが、
軸に投影したときになるべく重なりの少なくなる軸を選ぶといいです。

x軸に投影するときは、横方向に物体が並んでいると効率がいいですが、
縦一直線に並んでいたりすると、結局全体と
判定をすることになってしまいます。

そこでこの物理エンジンでは、判定に最適な軸を選択するようにしています。
重なり具合(色の濃い場所)を調べて、少ない方の軸を選択します。
※Sweep and Pruneについてもっと詳しく知りたい方は
こちら(注:pdf)を参考にしてください。