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

by kawamu
♥0 | Line 42 | Modified 2010-03-31 15:37:30 | MIT License
play

ActionScript3 source code

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

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 {
    	//力学的エネルギー保存の法則をチコチコ書いてみた。
    	//動きはバネ運動。
    	//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;
        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;
			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;
			m_mc.x+=m_mc.vx;
			var E:Number=.5*m*Math.pow(m_mc.vx,2)+.5*k*Math.pow((px-m_mc.x),2);
			if (E>maxE)maxE=E;
			tf.text="現在のエネルギー::"+E+"\n最大エネルギー::"+maxE;
		}
        
    }
}

Forked