●は右のボタンで加速・減速ができる。
まずは↑のボタンで加速・減速して遊んでみよう。
このプログラムの主要部分は以下の通り。
gs=new Phystem("canvas1",10,10,0.6); gs.makeEdge(0.3); gs.makeGravity(1); M=new NonDynamicalObject(gs,0,0,"rgba(0,100,100,0.5)"); M.r=0.1; m1=new DynamicalObject(gs,-2,0,0,Math.sqrt(0.5),1,"rgba(255,0,0,0.5)"); m1.r=0.3; bane=new Bane(gs,M,m1,1,0,"rgba(0,100,0,0.5)"); gs.start();
最初の3行は「系を作り、壁と重力を加える」という作業である。
このプログラムには三つの物体がある。
一つ目の物体はMである。M=new NonDynamicalObject(gs,0,0,"rgba(0,100,100,0.5)");で、「動かない物体(NondDynamicalObject)を作り、系gsの場所(0,0)に置いている。色をrgba(0,100,100,0.5)にした。次の行のM.r=0.1;で、半径を0.1にしている。
二つ目の物体はm1であり、m1=new DynamicalObject(gs,-2,0,0,Math.sqrt(0.5),1,"rgba(255,0,0,0.5)");で、系gsの場所(-2,0)に(最初は)置かれる。
初速度は(0,Math.sqrt(0.5))にしている。その後の1は質量が1であることを指定し、最後で色をrgba(255,0,0,0.5)にした。
最後の物体が大事で、バネである。
bane=new Bane(gs,M,m1,1,0,"rgba(0,100,0,0.5)");が新しいバネを作る(Baneというオブジェクトの定義は、bane.jsにある)。
Baneの第1の引数は例によって所属する系だが、第2,第3の引数は「そのバネが何と何をつないでいるか」を示す。今の場合はM,m1なので、固定点Mと動く物体m1がバネで繋がれているのである。
第4、第5の引数はバネ定数と自然長である(ここでは1と0に設定した)。最後の引数は例によって色である。
このファイルではボタンを2個用意して、ボタンを押すと物体の運動が変わるようにしてある。
<button onClick="m1.v.mul(1.1);">10%加速</button> <button onClick="m1.v.mul(0.9);">10%減速</button>
がその部分で、これによりボタンを作る。 onClick="m1.v.mul(1.1);"が「ボタンがクリックされたらこの動作を行え」という部分で、今はm1.v(つまりm1の速度)を1.1倍(または0.9倍)にするという動作を行わせている。
<button>と</button>の間にある文字列(10%加速)は、ボタンに表示される文字列である。
課題