タグ : ,

ばね1 : ActionScript

投稿日 : 2008年5月8日 | 更新日 : 2010年09月15日 前のページへ戻る

ばね運動をActionScriptで利用する際の覚書。 ばね運動は、加速度が距離に比例する運動。

フックの定理

ばねの力はフックの定理により表すことができる。
F = k•x		k[N/m]:ばね定数, x[m]:自然長からの伸び
ばね定数は、ばねが1m伸びたときに復元しようとする力。

ばねと加速度

フックの定理と運動方程式から、ばね運動では加速度がばねの自然長からの伸び(l)に比例することがわかる。
m•a = k•l
a = (k·l) / m
質量m=1とすれば
a = k·l
自然長までの伸び(x)が短くなるに従って加速度は減少する。 x=0 ⇒ 加速度は0。 x<0 ⇒ 加速度の向きが反転(マイナス)。

ばね運動の速度を漸化式

ActionScriptはΔtを1フレームと考える。また質量は1とする。
Δtは1より
Δv/Δt = vn+1-vn = a
vn+1 = vn + a = vn + (k•l)/m
m=1より
vn+1 = vn + k·l

ActionScriptコード
// ばねの長さ
var l = target._x - mc._x;
v += k*l;
mc._x += v;
摩擦がない場合は、運動を繰り返す。

摩擦がある場合

摩擦がある場合。

コード

/*
function Spring(x, y)
{
	this._x = x;
	this._y = y;
	// 支点
	var targetX:Number = Stage.width / 2;
	// ばね定数
	var spring:Number = 0.05;
	// 速度
	var vx:Number = 0;
	// 摩擦(0
	var friction:Number = 0.95;
	// イベントハンドラ
	this.onEnterFrame = function()
	{
		// ばね運動
		var dx:Number = targetX - this._x;
		var a:Number = dx * spring;
		vx += a;
		vx *= friction;
		ball._x += vx;
	};
}
var o = new Spring(Stage.width/ 2 + 100, 100);
var ball = _root.attachMovie('ball', 'ball', _root.getNextHighestDepth(), o);

ActionScript2.0 | 固定リンク | Comments (0)

関連記事

このページの上へ移動

コメント

コメントはまだありません。

コメントの投稿

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

 

 

 


トラックバックURL

http://www.findxfine.com/flash/actionscript/358.html/trackback

このページの上へ