まず壁で跳ね返す
もっとも小さい当たり判定は、点と画面の四辺。点が壁を越えようとしたら、越えたぶんを戻して、その軸の速度をひっくり返す。
壁反射は二段階の操作になる。位置補正で、壁を越えた点をちょうど壁の面まで引き戻す。速度反射で、その軸の速度の符号を反転する。反転に反発係数を掛けると跳ね返りの勢いが落ちる。係数 1 で完全弾性(高さが減らない)、0 で完全非弾性(その場で止まる)。順序が逆だと、壁の外に出たまま速度の符号が毎フレーム入れ替わって、点が壁面で振動する。位置を正してから速度を扱う。
一点を重力で落とし、四辺で跳ね返す。半透明の paper を毎フレーム上から薄く塗って、通り道を尾として残す。
x が壁の内側 r を割ったら、ちょうど壁の位置 r まで引き戻す。この引き戻しが位置補正で、当たり判定の原型になる。続けてその軸の速度を反転する。横は -vx で勢いが落ちず延々と跳ね、縦は -vy * 0.86 で少し殺すので、跳ねるたびに低くなって転がる。0.86 が反発係数で、1 にすると同じ高さまで戻り続け、0 にすると床にぶつかった瞬間に止まる。
引き戻しを抜いて速度反転だけにすると、壁の外で符号が何度も反転して、点が壁に貼りついて震える。位置を正しい場所へ戻してから速度をいじる順序がこの震えを防ぐ。