« 経路線を背面に変更 | トップページ | 数式表示 MathJax -1- »

2012年6月25日 (月)

アニメーション機能の実装、その前に

FlatTable にアニメーション機能を実装する段階になりましたが、コーディングの前に解決しておかなければならない問題が有ります。それは球の運動です。FlatTable のアニメーションは配置図に基づいて実行されるのですが、その配置図には球の速度に関する直接の記述は有りません。アニメーションの為には、配置図から球の速度を導出しなければなりません。それについて説明します。

球の速度の決定には次の2つの力学要素を用います。

  1. 停止状態からの逆算
  2. 衝突からの逆算

停止状態からの逆算

説明図 転がっている球にはラシャの抵抗が一定の力で働いています。その時の球の速度と移動距離は次のようになっています。
\[\left\{ \begin{array}{rcl} v & = & -\alpha t + v_{0} \\ \ell & = & -\frac{1}{2}\alpha t^{2} + v_{0}t \end{array} \right.\] ここに、\(\alpha\) はラシャの抵抗による加速度(減速度)、\(v_{0}\) は球の初速度、\(\ell\) は球の移動距離です。この式の中で配置図から設定できるのは、球の移動距離です。さらに終速度(\(v_{c}\))も既知として方程式を解くと、初速度
\[ v_{0} = \sqrt{v_{c}^{2} + 2\alpha \ell} \tag{1} \] が求まります。特に終速度が0即ち球が停止する場合の初速度は、 \[ v_{0} = \sqrt{2\alpha \ell} \] となり、\(v_{c}\) の仮定は必要有りません。

衝突からの逆算

Collision 図のように手球が \(v_{0}\) の速度で的球に当たり、手球の速度は \(v_{1}\) 、的球の速度は \(u_{1}\) になったとします。この時、運動量保存およびエネルギー保存より、次の関係が成り立っています(質量はどれも同じなので省略しています)。
\[\left\{ \begin{array}{rcl} v_{0} & = & u_{1}\cos \alpha + v_{1}\cos \beta \\ 0 & = & u_{1}\sin \alpha + v_{1}\sin \beta \\ v_{0}^{2} & = & u_{1}^{2} + v_{1}^{2} \end{array} \right.\] この連立方程式を解いて行くと、散乱角に
\[ \alpha - \beta = \pm 90° \] の関係が有ることが分かります。それを用いて衝突前の手球の速度
\[ v_{0} = u_{1}\sqrt{1+\tan^{2}\alpha} \] が求まります。ただし、これは弾性衝突の場合であって、実際は \(1\) より小さな反発係数 \(k\) を考慮する必要が有ります。従って、衝突前の速度は
\[ v_{0} = \frac{1}{k} u_{1}\sqrt{1+\tan^{2}\alpha} \tag{2} \] となります。これで、衝突された球の速度から衝突した球の速度が求まりました。

« 経路線を背面に変更 | トップページ | 数式表示 MathJax -1- »

ビリヤードの配置図ソフト」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/584699/55046198

この記事へのトラックバック一覧です: アニメーション機能の実装、その前に:

« 経路線を背面に変更 | トップページ | 数式表示 MathJax -1- »