ニュートンのゆりかご



 上で動いているのは「ニュートンのゆりかご」というおもちゃをコンピュータ・プログラムで再現したものです。

 プログラムは以下の通り。

	function init(canvas_string) {
		   ps=new Phystem(canvas_string,31,10,0.9);
		   ps.makeGravity(5);
		   for( i=0; i<5 ; i++ ) {
			 siten[i]=new NonDynamicalObject(ps,2*i-5,3,"rgb(0,0,0)",0.1);
			 tama[i]=new Ball(ps,2*i-5,-3,0,0,0.2,"rgb(255,0,0)",1);
			 tama[i].strength=10000;
			 con[i]=new Connector(ps,tama[i],siten[i],"rgb(0,90,0)");
		   }
		   tama[0].v.x=-1;
		   ps.start();
		 }
		

 siten[i]iは0,1,2,3,4なので、これはsiten[0],sinte[1],siten[2],siten[3],siten[4]の5つ)は振り子の支点(動かないので、NonDynamicalObject)、tama[]は振り子の玉(動いて、ぶつかると反発するので、Ball)、con[]は支点と玉をつなぐ棒(Connector)です。

  for( i=0; i<5 ; i++ ) {に続く部分で、5つの支点、玉、棒をならべて、その後のtama[0].v.x=-1;で一番めの玉に「x方向に速度−1」を与えてます。

for文の文法
			for(i=0; i<5 ; i++ ) {
			     g(i);
			}
		  
は、
			g(0);
			g(1);
			g(2);
			g(3);
			g(4);
		  
と同じです。もっと細かく言うと、
for(最初にやること;繰り返しの最後でやること;こうなったら繰り返しが終わる){
			    繰り返しの内容
			}
		  
という意味です。最初にi=0にして、「繰り返しの内容」をやったあと、i++します(これはiに1を足すということ)。そして、i<5ならばまた「繰り返しの内容」をやります。最初i=0で、1,2,3,4と増えたあと、i=5になると「もうやめた!」と繰り返しを停止します。

 tama[i].strength=10000;では、tama(Ball)をより固くしてます(その方が動きがいいからです)。


 目次に戻る