onEnterFrameを使った等(加)速度運動 : Actionscript
onEnterFrameイベントハンドラを使った等(加)速度運動
1軸上の速度
X軸上の水平移動を考える。以下、速度の方向を無視して速度と速さを同一視する。
速度[m/s] = 変位[m]/時間[s] m:メートル, s:秒
onEnterFrameの1フレームを単位時間と考える。変位をピクセルの変化で考える。
速度 = 変位[pixel]/時間[frame]
漸化式を使った等(加)速度運動
onEnterFrameは離散なので、漸化式で表すことができる。
フレーム毎の位置
tフレーム目とt+1フレーム目の速度とオブジェクトの位置。
| フレーム(t) | スピード(v) | オブジェクトのx座標(x) |
|---|---|---|
| t | vt | xt |
| t+1 | vt+1 | xt+1 |
t+1フレーム目の位置
上記の表からt+1フレーム目の位置(xt+1)をtフレーム目の速度(vt)と位置(xt)で表す。
速度 = 変位[pixel]/時間[frame]より
vt = (xt+1-xt) / (t+1)-t
(t+1)-tは1なので
vt = xt+1 - xt
t+1フレーム目の位置(変位)は
xt+1 = xt + vt ---漸化式 x:変位, v:速度, t:フレーム
等速度運動
等速度運動の変異は等差数列の漸化式。
速度一定: vt = v xt+1 = xt + v ActionScript MC._x += v
/* 等速運動 */
function Clip(){
// 速度一定(定数)
var v = 1;
// イベントハンドラ
this.onEnterFrame = function(){
// 等速運動
this._x += v;
}
}
等加速度運動
等加速度運動の場合、速度が等差数列の漸化式になる。
速度: vt = a•t+v0 a:加速度, v0:初速度, t:フレーム 簡単にするため静止した状態から動き出すと仮定(v0 = 0) v0 = 0 なので vt = a•t
漸化式。
vt+1 = vt + a
/* 等加速運動 */
function Clip(){
// 速さ(変数)
var v = 0;
// 加速度(定数)
var a = 5;
// イベントハンドラ
this.onEnterFrame = function(){
// 等加速運動
v += a;
this._x += v;
}
}
微分を使った等加速度の考え方
変位の公式 : x = (1/2)a•t2+v0•t x:変位, a:加速度, t:時間, v0:初速度 速度の公式 : v = dx/dt = at+v0
dtを単位フレーム,dxを単位フレームの変位と考える。
(xt+1 - xt) / 1 = a•t + v0 xt+1 = a•t + v0 + xt
簡単にするためにv0=0とする。
xt+1 = a•t + xt
関連記事
コメントはまだありません。
コメントの投稿
改行と段落タグは自動で挿入されます。メールアドレスは表示されません。
利用可能な HTML タグ :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite="">
<cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>