onEnterFrameイベントハンドラを使った等速度運動・等加速度運動の覚書。
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フレーム目の位置(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.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。