上で動いているのは「ニュートンのゆりかご」というおもちゃをコンピュータ・プログラムで再現したものです。
プログラムは以下の通り。
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(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)をより固くしてます(その方が動きがいいからです)。