等速でなく、加減速で
0 から 1 へ進む値を、まっすぐ等速で動かすと、止まり際も走り出しも一定の速さになる。その進み具合 t に曲線をかけて、両端でゆっくり、真ん中で速く動かす。同じ移動でも止まり際が滑らかになる。
イージングは、進行度 t(0〜1)を別の t'(0〜1)へ写す関数の一族。easeInOut は両端で導関数(速度)が 0 になり、中央で最大になる曲線で、加速して減速する動きを作る。easeOut は始点だけ速く終点で減速、easeIn は逆。Robert Penner がまとめた式の集まりが広く使われ、CSS の cubic-bezier() や ease-in-out も同じ発想。等速(線形)は機械の動き、加減速はばねや筋肉のような物理を持つ動きに近い。
線形は t がそのまま進む。easeInOut(t) は t < 0.5 で 2t²、後半で 1 - (-2t+2)²/2 の二本の放物線を繋いだ曲線になる。
上の灰色の点は t をそのまま横位置に使う等速で、左から右へ一定の速さで進む。下の黒い点は easeInOut(t) を通していて、両端でためて真ん中で走る。二点とも t が 1 に達したら左端へ戻る。中央の曲線が easeInOut の形で、両端の傾きが寝て中央で立っているぶん、黒い点が止まり際と走り出しで遅くなる。
easeInOut の式を 1 - (1 - t)³ の easeOut(最後だけ減速)に差し替えると、走り出しは速く終点で滑り込む別の動きになる。曲線を取り替えるだけで、同じ時間・同じ距離のまま進み方が変わる。