床面と衝突する剛体球運動の計算アルゴリズム
これまでは斜面や曲面上を転がる剛体球についての計算アルゴリズムの導出を行ったね。今回は斜面に衝突したときの挙動を計算するためのアルゴリズムを導出するよ。
重心に加わる衝突力
斜面への衝突は一瞬の出来事です。計算時間間隔を$${\Delta t}$$とし、衝突前と衝突後の運動量ベクトルを$${\boldsymbol{ p }}$$、$${\boldsymbol{ p '}}$$と表して、剛体に加えられた衝突力を$${\boldsymbol{f} _{\rm coll}}$$とすると、次のような関係があるよ。
$$
\boldsymbol{ p' } = \boldsymbol{ p } + \boldsymbol{f} _{\rm coll}\,\Delta t
$$
この式は「運動量の変化」=「力積」を意味するね。この$${ \boldsymbol{f} _{\rm coll}}$$は斜面の法線ベクトル$${\hat{\boldsymbol{n}}}$$と同じ方向であることを踏まえて、斜面との反発係数$${e}$$が与えられているとすると、
$$
\boldsymbol{v'}\cdot \hat{\boldsymbol{n}} = -e(\boldsymbol{v}\cdot \hat{\boldsymbol{n}})
$$
から導出することができるね。結果は次のとおりだよ。
$$
\boldsymbol{f} _{\rm coll} = \frac{ -M(1+e)(\boldsymbol {v} \cdot \boldsymbol {n} )}{ \Delta t}\,\hat{ \boldsymbol{n}}
$$
となります。$${e}$$は通常$${0\leq e \leq1}$$となり、$${e=1}$$で弾性衝突(エネルギー減衰なし)、$${e=0}$$で衝突後のなし非弾性衝突(エネルギー減衰のある場合)となるね。もし摩擦力が一切働かない場合、衝突時の並進運動に関する運動方程式は
$$
M\,\frac{d^2\boldsymbol{R}}{dt^2} =M\boldsymbol{g}+\boldsymbol{f} _{\rm coll}
$$
となるね。
角運動量から並進運動量への交換で生じる推進力
回転している剛体が斜面と衝突した場合、回転による斜面との摩擦力で剛体の重心運動に推進力が与えられるね。また、同時にその推進力は回転を弱めるトルクとして作用することにもなるね。この推進力の正体は摩擦力なので、剛体球に静止摩擦力あるいは動摩擦力が働くことになるね。斜面を転がる場合と異なるのは、剛体球が斜面を押す力が垂直抗力から前項で示した衝突力となる点だよ。このことを踏まえると、推進力は回転運動が重心運動と一致しているかを判定する判別式$${\boldsymbol{D}}$$の単位ベクトルを用いて
$$
\boldsymbol f_{\rm rot}=\left\{\begin{matrix} \boldsymbol{f}_{\mu} = -\mu|\boldsymbol{f} _{\rm coll}|\hat{\boldsymbol{D}} \cr \boldsymbol{f}_{\mu^*} = -\mu^*|\boldsymbol{f} _{\rm coll}|\hat{\boldsymbol{D}} \end{matrix} \right.
$$
と表されるよ。上段が静止摩擦力、下段が動摩擦力だよ。どちらの摩擦力が適用されるかは、前回の議論と同じとなるのだけれども、どちらの摩擦力が適用されるにせよ力学的エネルギーが増加するほどの摩擦力は通常ありえないので、次項で摩擦力の最大値を計算するよ。なお、衝突時の運動方程式は次のとおりだよ。
$$
M\,\frac{d^2\boldsymbol{R}}{dt^2} =M\boldsymbol{g}+\boldsymbol{f} _{\rm coll}+ \boldsymbol{f}_{\rm rot}
$$
$$
I\,\frac{d^2\boldsymbol{\theta}}{dt^2} =-a\hat{\boldsymbol{n}}\times\boldsymbol{f}_{\rm rot}
$$
力学的エネルギー保存則を満たす条件
前項で示した回転による推進力は、衝突力から見積もられる摩擦力として導出したね。この場合、摩擦力は衝突力に比例するので、摩擦力は原理的にいくらでも大きな値を取ることができてしまうね。摩擦力の上限は力学的エネルギーが保存するところと考えることができるので、剛体球が斜面に衝突する前後の力学的エネルギーが保存する条件から摩擦力の上限値を見積もるよ。
運動量の変化=力積
運動量保存則から衝突前後の並進運動量と角運動量の変化は力積(力×時間)で与えられるね。そのため、斜面との衝突後の並進速度と角加速度は、衝突力を$${\boldsymbol{f}_{\rm col}}$$、回転による摩擦力を$${\boldsymbol{f}_{\rm rot}}$$と表した場合、
$$
\boldsymbol{v'} = \boldsymbol{v}+\frac{\Delta t}{m}\, (\boldsymbol{f}_{\rm col} +\boldsymbol{f}_{\rm rot})
$$
$$
\boldsymbol{\omega'}=\boldsymbol{\omega}+\frac{a\Delta t}{I} (\boldsymbol{f}_{\rm rot} \times\hat{\boldsymbol{n}})
$$
となるね。この衝突後の速度と角速度を用いて衝突前後の力学的エネルギーを計算し、力学的エネルギーが保存する場合の条件式から摩擦力の最大値を導出するよ。なお、回転エネルギーを含めた衝突前後の力学的エネルギーは次のとおりだよ。
$$
E=\frac{1}{2}\,M \boldsymbol{v}^2+\frac{1}{2} \,I \boldsymbol{\omega}^2
$$
$$
E'= \frac{1}{2}\,M\left[ \boldsymbol{v}+\frac{\Delta t}{M}\, (\boldsymbol{f}_{\rm col} + \boldsymbol{f}_{\rm rot}) \right]^2+\frac{1}{2}\,I\left[\boldsymbol{\omega}+\frac{a\Delta t}{I} (\boldsymbol{f}_{\rm rot} \times\hat{\boldsymbol{n}}) \right]^2
$$
摩擦力の方向は角加速度ベクトルと斜面の法線ベクトルの外積方向
$$
\hat{\boldsymbol{t}} = \hat{\boldsymbol{\omega}}\times \hat{\boldsymbol{n}}
$$
となるね。摩擦力を
$$
\boldsymbol{f}_{\rm rot}= f_{\rm rot} \,\hat{\boldsymbol{t}}
$$
と表すことができるね。これを踏まえて力学的エネルギー保存則
$$
E'-E= \frac{1}{2}\,M\left[ \frac{2\Delta t}{M}\, \boldsymbol{v}\cdot(\boldsymbol{f}_{\rm col} +\boldsymbol{f}_{\rm rot}) + \left(\frac{\Delta t}{M}\right)^2(\boldsymbol{f}_{\rm col} + \boldsymbol{f}_{\rm rot})^2\right]+\frac{1}{2}\,I\left[\frac{2a\Delta t}{I}\, \boldsymbol{\omega}\cdot(\boldsymbol{f}_{\rm rot} \times\hat{\boldsymbol{n}}) +\left(\frac{a\Delta t}{I}\right)^2 (\boldsymbol{f}_{\rm rot} \times\hat{\boldsymbol{n}})^2\right]=0
$$
の各ベクトル量を注意深く計算すると、摩擦力の最大値は次のとおりになるよ。
$$
\boldsymbol{f}_{\rm rot}= \frac{1}{\Delta t}\,\frac{2M}{1+\left( \frac{Ma^2}{I} \right)} \left[ a|\boldsymbol{\omega}|-\boldsymbol{v}\cdot\hat{\boldsymbol{t}} \right] \hat{\boldsymbol{t}}
$$
なお、この表式導出する過程で反発係数$${e=1}$$を用いているよ。
シミュレーション結果
床面と剛体球の最大摩擦力が♾️のときの計算結果を示すよ。もし良かったら見に来てくださ‐い!
もしよろしければ、これからも応援お願いしまーす!