初期位置(,)、初速度(,)
このプログラムは落体の運動に、空気抵抗を加えたものである。空気抵抗を加えるために編集した部分は、
を、ps(すなわち、系)を定義した後で加えた(このmakeAirという関数が何をしているのかも、また後で説明しよう)。
このページではそのほかに、初期位置と初速度を変えて再スタートさせる機能がつけられている。まずはいろんな初期位置、初速度で運動を見てみよう。
これの説明をしておこう。
まず初期位置と初速度であるが、ファイルの中に書かれた
の部分が、初期位置と初速度の入力を担当する部分で、<input id="x0" value="0">というのが「入力部分(input)」を表示させる部分である。id="x0"value="0"はその値が0であることを示す。この部分の値はキーボードから変更できる。
その後ろに、
という部分があるが、これが再スタートをするためのボタンで、ボタンが押されたら何が起こるか、を示しているのが、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;}の部分に書かれている。