銃火器の反動をシミュレートしたもの。
以下のソースはリコイルキックを指数減衰を使ってシミュレートしたものである。照準のずれを 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 のインパルス応答である。
