forked from: 力学的エネルギー保存の法則って保存してないないじゃん!!

by uwi forked from 力学的エネルギー保存の法則って保存してないないじゃん!! (diff: 21)
♥0 | Line 45 | Modified 2010-03-31 22:35:13 | MIT License
play

ActionScript3 source code

/**
 * Copyright uwi ( http://wonderfl.net/user/uwi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/c4Pe
 */

// forked from kawamu's 力学的エネルギー保存の法則って保存してないないじゃん!!
package {
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.display.Graphics;
    import flash.text.TextField;
    import flash.events.Event;
    public class FlashTest extends Sprite {
    	// 時間幅を10分の1にしてみた。
    	// _xを用意したのは、今回はあまり関係ないけど
    	// Sprite等のxは小数点1位でちょんぎられることがあるので
    	// シミュレーションにはNumberのxを別に用意しておいた方が良い
    	// さて、このシミュレーションだと時間幅が元のときよりエネルギーの振れ幅が
    	// 10分の1ぐらい。
    	// バネの運動を時系列で書くとサインカーブ。
    	// これは曲線なので下のシミュレーション方法では完全に再現できない。
    	// もっとかくと、時間幅の間のカーブの傾きを、時間幅の最初の接線の傾きと決めつけて
    	// 足しているからブレるのだ。
    	// 精確に動かしたいのであれば時間幅を小さくするか、
    	// 心情的に許されないと思うが最初から三角関数を使うか、かな
    	// おっぱい飲みたい
    	
    	//力学的エネルギー保存の法則をチコチコ書いてみた。
    	//動きはバネ運動。
    	//E=0.5*m*v*v+0.5*k*x*x
    	//で、Eが一定になるってやつ。
    	//なんか動きうまく言っている感じ。
    	//まさにバネ。
    	//しかし、おやおやおや。
    	//現在のエネルギーも一定じゃないし、なんかちょっとずつ発散している!!
    	//なんじゃこりゃ。
    	//いや、まてよ。そもそも力学的エネルギー保存の法則って何だ?
    	//俺はいままで騙されていたのか?
    	//日教組かフリーメイソンの陰謀か?
    	//はたまた、第三機関の陰謀なのか!
    	//このエネルギー保存則で日本国民を騙そうとしているに違いない。
    	//え、なにをって?
    	//・・・・・・
    	//う--ん、なんだろ。
    	//ほら、エネルギーが枯渇するってマスコミがいうじゃん。
    	//そういうの。
    	//おれは、目覚めてしまった。
    	//これか気づきなのかぁぁ-
    	//そうなると我が身が危ない。
    	//自主管理能力の時代に突入だ。
    	//これもエンロンに盗聴されているかもしれない。
    	//あ、エシュロンか。
    	//わざと間違えちゃった。
    	//
    	//あれ、いつまでたってもCIAがこないぞ。
    	//窓、割られないようにあけておいたのに。
    	//陰謀は関係ないのかな?
    	//そうなると気づきではなかったのかな。
    	//あぁ、気づきでないことに気づいてしまったぁ
    	//では、なんだ?
    	//単なるFlashの端数の取り扱い?
    	//にしてはちょっと数値が大きいような・・・
    	//それともコードの書き間違いなのか?
    	//にんげんだもの
    	//それとも、計算のタイミングなのか?
    	//すべて動き終わった後に計算してるけど、それだと遅いのか?
    	//キッチリ保存されている様子を見せて!
    	//そもそも、力学的エネルギー保存の法則を誤解しているのか?
    	//おおいにあり得る。よくやる。
    	//
    	//おしえて、偉い人。
    	//
		private var m:Number=1;
		private var k:Number=.03;
		private var maxE:Number=.0;
    		private var tf:TextField;
    		private var px:Number;
    		private var py:Number;
    		private var m_mc:MovieClip;
    		private var _x:Number;
        public function FlashTest() {
            // write as3 code here..
			tf=new TextField();
			addChild(tf);
			tf.width=300;
			tf.height=100;
			tf.multiline=true;
			//
			m_mc=new MovieClip();
			var m_g:Graphics=m_mc.graphics;
			m_g.beginFill(0xFF0000);
			m_g.drawCircle(0,0,30);
			m_mc.ax=0;
			m_mc.vx=0;
			px=stage.stageWidth*0.5;
			m_mc.x=px-200;
			_x=px-200;
			m_mc.y=stage.stageHeight*0.5;
			addChild(m_mc);
			addEventListener(Event.ENTER_FRAME,ent);
        }
		private function ent(evt:Event):void {
			m_mc.ax=(k*(px-m_mc.x))/m;
			m_mc.vx+=m_mc.ax*0.1;
			_x+=m_mc.vx*0.1;
			m_mc.x=_x;
			var E:Number=.5*m*Math.pow(m_mc.vx,2)+.5*k*Math.pow(px-_x,2);
			if (E>maxE)maxE=E;
			tf.text="現在のエネルギー::"+E+"\n最大エネルギー::"+maxE;
		}
        
    }
}