色んな二次関数
投稿日:2022-08-11
更新日:2023-01-20
ジャンル:動画
前提
- 時間は0→1(t = obj.time/(obj.totaltime+1/30)とかして扱う)(周期関数除く)
- 値は0→1(f(t)に動かしたい分だけかける)
- 速度は移動幅(0→1で移動させる幅)に比例、移動時間(t=0→1の時間)に反比例
- 加速度は移動幅に比例、移動時間の2乗に反比例
加速
\[f(t) = t^2\]
コピペ用:t^2
- 加速度一定
- 速度0→2
減速
\[f(t) = -(t-1)^2+1 = t(2-t)\]
コピペ用:-(t-1)^2+1 t*(2-t)
- 加速度一定
- 速度2→0
加減速
\[f(t) = (1-2t)(|t-0.5|-1)+0.5\]
コピペ用:(1-2*t)*(math.abs(t-0.5)-1)+0.5
- t=0.5で加速度が切り替わる
- 速度0→2→0
ジャンプ
\[f(t) = -4(t-0.5)^2+1 = 4t(1-t)\]
コピペ用:-4*(t-0.5)^2+1 4*t*(1-t)
- 加速度一定
- t=0.5で最大f(t)=1
- 速度4→-4
sin風
\[f(t) = 4(t\%2-1)(|t\%2-1|-1)\]
コピペ用:4*(t%2-1)*(math.abs(t%2-1)-1)
- f(t)=0のところで加速度が切り替わる
- 周期2
- 振幅1、移動する幅は2
- 速度4→0→-4→0→…
ジャンプして登る/降りる
登る場合の概形・関数
\[f(t) = \frac{-(t-p)^2+p^2}{2p-1} = \frac{t(2p-t)}{2p-1}\:(0.5\lt p\lt1)\]コピペ用:(-(t-p)^2+p^2)/(2*p-1) t*(2*p-t)/(2*p-1)
- 加速度一定
- pはf(t)が最大になるt
- 0<p<0.5にすると「ジャンプして降りる」
- 最大値は\(\frac{p^2}{2p-1}\)