2010年9月11日土曜日

モーション あれこれ その5

前回まで、モーションの中で、とくにイージングを扱ってきた。今回は、バウンドしながら止まるモーションを扱ってみたい。ヒントになる関数は、反比例とsin関数を合成したもの。グラフにすると、次のようなイメージ。赤い破線が反比例のグラフで、緑の破線がsin関数。これらを掛け合わせたグラフが青い実線のグラフである。これのx>0の部分を使おうというアイデアである。

ちなみに、x=0のときは、計算不能である。少なくともActionScriptでは。幸いな事に、このときの値を1とすると、グラフが滑らかにつながる事が知られている。x=0のときは、1として計算するようにプログラミングすればよい。

これを、今まで同様、物体の初期座標をp0t秒後の座標をp(t)とする。そして、物体は、t1秒後にp1の位置で停止するものとした。これらの記号を用いて式を書き直すと、となる。ここで、nは物体が到着地で止まらずに行き過ぎる回数である。時間と移動距離のグラフは、のようになる。これは、n=3のときの例で、p1の位置を3度通り過ぎている事がわかる。止まるときにバウンドしながら止まるわけだ。

最初の到着時刻(すなわち、最初にと着地点を通り過ぎる時刻)t0は、t0=t1/(n+1)である。また、最初の到着時刻からt1を求めるには、t1=(n+1)t0となる。

0 件のコメント: