銃火器の反動をシミュレートしたもの。
以下のソースはリコイルキックを指数減衰を使ってシミュレートしたものである。照準のずれを kick[i]
に格納している。
double relax, relax2, prelax; double accel[2]; int i; relax = exp(-5. * dt2); relax2 = (1. - relax) / 5.; prelax = exp(-2. * dt2); for(i = 0; i < 2; i++){ accel[i] = (kickvelo[i] * (relax - 1.)); kickvelo[i] += accel[i]; accel[i] /= dt2; kick[i] += kickvelo[i] * relax2; kick[i] *= prelax; }
このプログラムの特徴は、フレーム時間によらず同じレスポンスが得られることである。次に示すグラフは、 kickvelo
に関する kick
のインパルス応答である。