初期位置(,)、初速度(,)

このプログラムは落体の運動に、空気抵抗を加えたものである。空気抵抗を加えるために編集した部分は、

ps.makeAir();

を、ps(すなわち、系)を定義した後で加えた(このmakeAirという関数が何をしているのかも、また後で説明しよう)。


 このページではそのほかに、初期位置と初速度を変えて再スタートさせる機能がつけられている。まずはいろんな初期位置、初速度で運動を見てみよう。

 これの説明をしておこう。

 まず初期位置と初速度であるが、ファイルの中に書かれた

初期値(<input id="x0" value="0">,<input id="y0" value="2">)初速度(<input id="vx0" value="1">,<input id="vy0" value="0">)

の部分が、初期位置と初速度の入力を担当する部分で、<input id="x0" value="0">というのが「入力部分(input)」を表示させる部分である。id="x0"value="0"はその値が0であることを示す。この部分の値はキーボードから変更できる。

 その後ろに、

<button onClick="go();">再スタート</button>

という部分があるが、これが再スタートをするためのボタンで、ボタンが押されたら何が起こるか、を示しているのが、onClick="go();"の部分。このgoという関数は上の方で、

	function go() {
	   m1.pos.x=Number(document.getElementById("x0").value);
	   m1.pos.y=Number(document.getElementById("y0").value);
	   m1.v.x=Number(document.getElementById("vx0").value);
	   m1.v.y=Number(document.getElementById("vy0").value);
	 }

の部分で定義されている。このコードのm1.pos.x=Number(document.getElementById("x0").value);という部分は「x0という識別子を持つinputの値(value)をm1.pos.x(←これはm1という物体の現在位置のx成分)に入れろ」ということを意味する命令である(以下同様)。

 その下に力の表示と速度の表示をON/OFFするボタンがつけられているが、これは

   <p><span id="f"></span><span id="v"></span></p>
   <script type="application/javascript">
     var fflg=new TwoStateButton("f",true,function (x) { ps.drawFFlg=x;},"力の表示");
     var vflg=new TwoStateButton("v",true,function (x) { ps.drawVFlg=x;},"速度の表示");
   </script>

という部分で作られている。最初の<span id="f"></span>がそのボタンが置かれるところ(以下にあるプログラムが自動的に追加するので、ここに<button>などと書かなくてよい。

 scriptの部分で定義されているTwoStateButtonというのがON/OFFをするためのボタンを作るオブジェクトで、ON/OFFされた時に行うべきことが、function (x) { ps.drawFFlg=x;}の部分に書かれている。

自分のプログラムに力や速度の表示ON/OFF機能をつけたかったら、この部分をコピペすればよい。