はじめまして.yukihiroといいます. プログラマーやってる者ですが,最近DirectXの勉強も兼ねつつ 趣味でテニスゲームでも作ろうかなと思ってます. そのボールの運動について疑問が出てきたので教えていただければと思います.
例えばボールが回転しながら飛んでいるとします. 地面に衝突してバウンドするとき,衝突後の回転ベクトルは 衝突前の回転ベクトルと,地面との摩擦によって生じた回転ベクトルとを 合成したものになる気がするのですが,それを計算で求めることはできるのでしょうか?
つまり,一般に2つの回転ベクトルを合成して1つの回転ベクトルとすることはできるのでしょうか?
これに関してググってみたところ以下の資料を見つけました.
16ページから17ページにクォータニオンによる2つの回転の合成の方法が書いてあります. これを読んで確かに一瞬なるほどと思ったのですが, 式(5.21)の直前にある一言が気になって再考察したところ, この求め方は無理があるのではと思うに至ったのです.
『合成回転の回転角が2πを越えない範囲とすれば』・・・
要するにこれで得られる回転ベクトルの大きさ, つまり回転の角速度は0〜2πの範囲(あるいは-π〜πとか)になってしまうのです.
よく考えてみたら当たり前です. 私の適当な解釈を交えた不確かな知識によると, クォータニオンは最短経路での回転を表すものであり, 一旦クォータニオンを介する以上,2π以上の角速度を扱うことはできないと思うのです. というかクォータニオンで角速度の概念を考えること自体に無理があるのでしょうね.
そもそも,例えば今角速度2π/s以上で回っているボールに,別の回転軸ですこし回転を加えた場合, その合成された運動は1つの回転ベクトルで表せそうにない気がし始めているのですが, 実際のところどうなんでしょうか?
物理のかぎしっぽにも「四元数」「無限小回転」の記事があるので, まず読んでみてください.
失礼しました. 「四元数」は読んでたのですが,「無限小回転」は見落としてました.
なるほど,2つの回転ベクトルの合成結果の微小時間における微小な移動量は, 単に2つの無限小回転の和として表せるということですね. すなわち合成結果の回転ベクトルは元の回転ベクトルの和になると.
もやもやとしてたものがスッキリしました. ありがとうございます.
て,よく見たら私が示した資料の中にも無限小回転に関する内容がありました・・・. 重ね重ね失礼しました.