※ ChatGPTを利用し、要約された質問です(原文:任意軸回転行列の、回転量を少し減らしたいのですが…)
任意軸回転行列の回転量を少し減らす方法は?
このQ&Aのポイント
任意軸回転行列の回転量を少し減らす方法について質問します。3D物理シミュレータで物体の回転を扱う際、アクセルという行列に任意軸回転行列を左から掛けていきます。しかし、回転量を少し減らしたい場合にどのような方法があるのかわかりません。解決策として回転軸と回転角を保持し、ベロシティに回転軸とデルタ×回転角を掛ける方法や、完成した任意軸回転行列から回転軸と回転角を逆算してベロシティに掛ける行列を再構成する方法を考えましたが、具体的な方法がわかりません。どなたか教えていただけますか?
アクセルという行列に任意軸回転行列を掛けていく際、回転量を少し減らしたいと考えています。具体的な方法がわからず困っています。回転軸と回転角を保持しておいて、ベロシティに回転軸とデルタ×回転角を掛ける方法や、完成した任意軸回転行列から回転軸と回転角を逆算してベロシティに掛ける行列を再構成する方法を考えましたが、うまく解決できません。どなたかアドバイスをいただけないでしょうか?
任意軸回転行列の回転量を少し減らす方法について質問です。アクセルという行列に任意軸回転行列を左から掛けていきますが、回転量を弱める方法がわかりません。回転軸と回転角を保持しておいて、ベロシティに回転軸とデルタ×回転角を掛ける方法や、任意軸回転行列から回転軸と回転角を逆算してベロシティに掛ける行列を再構成する方法を考えましたが、うまく動作しません。解決策を教えていただけないでしょうか?
任意軸回転行列の、回転量を少し減らしたいのですが…
皆様、いつもお世話になっております。
任意軸回転行列関係でひとつ疑問が出たので質問させていただきます。
3D物理シミュレータで物体の回転を扱うときに出た疑問です。
「アクセル」という行列に、単位行列を初めとして、さまざまな任意軸回転行列を、左から掛けていきます。
これが終わると「アクセル」はある回転行列になるはずです。
次に、問題があります。「ベロシティ」という行列に、「アクセル」という回転行列を、左からそのまま掛けるのではなく、回転量をちょっと少なくした、弱い回転を、しかしながら回転軸は同じものを、掛けたいのです。
--
・まず思いついた解決策:
回転角と回転軸を保持しておいて、ベロシティに「回転軸」と「デルタ×回転角」を掛ける、という方法。
=>しかしアクセルの時点で、行列を左から掛けていきたいので、この過程で回転角と回転軸を更新し続ける手法がわかりません。そもそも存在するのでしょうか。
・次に思いついた方法:
アクセルで左から任意軸回転行列をかけていった完成品は、これもまた任意軸回転行列のはずですから、この完成した行列から回転軸と回転角を逆算して、ベロシティに掛ける行列を「回転軸」と「デルタ×回転角」から再構成する、という方法。
=>任意軸回転行列から回転角と回転軸を逆算する方法がわかりません。
・次に思いついた方法:
任意軸回転行列から角度と軸を逆算しなくとも、任意軸回転行列に、何かしら手を加えると、回転角度に定数を掛け、回転量を調節することができる。
=>どんな方法があるのだろうか
--
これらの推測はしましたが、どれも解答にたどり着けませんでした。
どうかよろしくお願い致します。
不明な点がございましたら随時補足いたします。
お礼
qwertfk様、わかりやすい解説ありがとうございます。 クォータニオンならば回転軸と角を復元できるのですね。 > 回転量の合成を行う前にスケーリングして正規化し、合成後の回転量に逆の変換を行うことで正しい結果を得ることが出来ます。 こちらも参考にさせていただきます。 自分の質問について間違いがありました。 ・任意軸回転行列同士の積は必ずしも任意軸回転行列ではない。なぜなら任意の姿勢に持っていくためには回転は最低でも二度必要だからだ。 という点です。 よって(クォータニオンではなく、任意軸回転行列の場合)出来上がった行列から角度と軸を1つだけ抽出することはできないという結論に至りました。 1日悩んだ結果、この解法として、自分がやりたいのは積としての回転行列の回転量にdtを掛けるということだったので、あらかじめ回転量にdtを掛けた回転行列達の積をとることを思いつきました。 これが予期する動作を見せるか全く検討がつきません。 将来的にはこちらでご回答いただいたクォータニオンやスケーリングのお話を参考にさせていただくことになると思います。 ありがとうございました。
補足
お礼の「任意軸回転行列同士の積は必ずしも任意軸回転行列ではない。なぜなら任意の姿勢に持っていくためには回転は最低でも二度必要だからだ。」 やっぱりこれ間違ってますよね。一度でいけますよね。XYZではなく任意軸ならば。 角度と軸を抽出するならクォータニオンがよいということですよね。失礼いたしました。