onEnterFrameを使った等速度運動・等加速度運動 : Actionscript
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
関連記事
関連記事
- 斜方投射(放物運動) : ActionScript
- 水平投射 : ActionScript
- 基本運動オブジェクト : ActionScript
- ばね1 : ActionScript
- 落下運動1 : ActionScript
コメント
コメントはまだありません。
コメントの投稿
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。
トラックバックURL
http://www.findxfine.com/flash/actionscript/252.html/trackback