onEnterFrameを使った等速度運動・等加速度運動 : Actionscript

Pocket

onEnterFrameイベントハンドラを使った等速度運動・等加速度運動の覚書。

1軸上の速度

X軸上の水平移動を考える。速度の方向を無視して速度と速さを同一視する。

速度[m/s] = 変位[m]/時間[s]		m:メートル, s:秒  ※変位はの関する変化の量。	

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

関連記事

» 等速度/等加速度運動 : 物理

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。