1.0.0等速円運動は、多くの場合三角関数で表します。その場合、運動の式を位置の動きで立てるほかに、速度の変化で扱う考え方もあります。後者は、数学的には「微分」で導かれる関数が使われます。解説では先にJavaScriptコードを示し、数学の考え方は興味ある読者のために後で説明します。等速円運動をアニメーションで見せたいときは、三角関数のsinとcosを使うのが便利です。sinとcosは半径1の「単位円」で定義されます。sinθ)と定められています(図001)。sinθそこで上記の方程式にもとづいて、円運動をJavaScriptコードの関数(rotate())で書いてみます。centerY)、円の半径をangleという変数でもちます。動かすインスタンスがinstanceで、xとyのプロパティにより位置を変えます。関数は一定間隔で呼出されるものとし[*1]、回す角度をspeedとしています。Math.sin(angle);}同じ三角関数のsinとcosを使いつつ、また違った方程式で等速円運動を表すことができます。y')を位置ベクトル(座標)に加えるのです。y')成分は、つぎの式で表されます。経過時間をtとし、一定の角速度はω(オメガ)としています。cos(ωt)この方程式を用いると、前掲JavaScriptコードと同じ等速円運動はつぎのような計算式で示されます。centerY)は使わずに済みます。ふたつの円運動が同じ動きになることは、以下に掲げたCodePenのサンプルコードから確かめられるでしょう。関数をwindow.setTimeout()やwindow.setInterval()メソッドから呼出すか、EaselJSでTicker.tickイベントのリスナーに定めればよいでしょう。前項01のひとつ目の方程式は、円運動の位置座標を表しました。それに対して、ふたつ目の方程式は円運動の速度を定め、一定間隔で位置座標に加えることにより動きを計算します。これらふたつの方程式の関係について、興味ある読者のために数学的な説明を加えます。単純な等速直線運動で考えます。y)を求めると、つぎの方程式になります。aは時間あたりにx座標が動く大きさ、bは直線の傾きを示す係数です(「直線の式(方程式)」参照)。y0けれど、等速直線運動は位置座標で扱うと煩わしくなりがちです。ほとんどの場合、速度を位置座標に加えて、アニメーションさせます。一般に、位置の方程式を時間(t)で微分すると、速度の方程式が導かれます。上記の方程式をtで微分すると、xy方向ともに定数になります[*2]。ab微分などというむずかしいことを考えなくても、等速直線運動がつぎのようなJavaScriptコードで定められることは、よく知られています。startY)で、関数が呼ばれるごとに水平方向にspeedX、垂直方向にはspeedY動きます。直線軌道の傾きはspeedY/speedXとなります。speedY;}等速円運動でも考え方は同じです。前項01のひとつ目の方程式は、円運動の位置座標を表しています。sinθこの方程式をθ=ωtとして、tで微分するとつぎのようになります[*3]。つぎのようなn次関数f(x)を考えます。各項の係数k0〜knは定数とします。微分・積分の考え」1「微分・積分の考え」参照)。三角関数のsinとcosについて、角度θで微分した導関数はつぎのとおりです(Wikipedia「三角関数の公式の一覧」17「微積分」参照)。-sinθけれど、本文ではθ=ωtとして、時間tで微分したいのです。θをtで微分すると導関数θ'(tで微分したことを示すときはdθ/dtで表す)はつぎのようになります。「合成関数の微分」は、ふたつの導関数を掛け合わせます。そこで、sinとcosを角速度ωにおける経過時間tで微分すると、導関数はつぎのよう導けます(RETURN「sin(aθ)の微分」参照)。速度を用いた円運動の応用例として、以下にCodePenのサンプルコードを掲げます。クラス(Particle)に定めたメソッド(move())により円運動のアニメーションを行っています。プロパティspeedXとspeedYは、円運動するオブジェクトごとの定数です。ふたつの値(の絶対値)が異なると、軌道が楕円になります。つぎに抜書きしたコードは、一部簡略化しています。サンプルをjsdo.itからCodePenに差し替え。