- 締切済み
3次元以上の直交変換(回転)を、2つのベクトルから求める方法。
3次元以上の直交変換(回転)を、2つのベクトルから求める方法。 ユークリッド空間上で、例えば、ある2つのベクトルa,bが、 a = [1,0,0]; b = [0,1,0]; のように与えられたとき、aベクトルをbベクトルへ「視覚的に」重ね合わせる直交変換を探しています。 つまり、 b = Xa を満たす直交変換(回転行列)Xの求め方を探しています。 私のイメージとしては、3Dのポリゴンで描かれた自動車をマウスでグリグリ回転させるときに、正面を向いた状態から真横に向ける回転になるでしょうか。 無論、求める直交変換が一意に定まらないことは承知しております(ベクトルと垂直な面方向の自由度など)。また、sinやcosを使う方法は存じ上げておりますが、現在研究中のテーマに不適であるため、あえて利用しません。 どうにか、a,bの成分のみで直交変換を求める(または、直交変換の条件を決定する)一般的な方法があればご教授願います。 また、3次元よりも大きな場合に、例えば、 a = [1,0,0,0]; b = [0,1,0,0]; としたときの、aからbへの回転行列は自由度が高いのですが、 b = Xa を満たす回転行列Xをa,bを用いてどのように求めることができるのでしょうか。 支離滅裂な説明になっているかもしれませんが、もしご存知であればその参考となるURL等をご教授下さい。
- みんなの回答 (7)
- 専門家の回答
補足
>だいぶ話が煮詰まっているらしいところへぜんぜん違うこと書いてすみません。 とんでもございません!回答ありがとうございます。 回答者様のご提案は、先ほどの回答者様のご提案とほぼ同じ考え方と捉えてよろしいでしょうか。 (以下引用) ・n個の互いに直交する単位ベクトルの組 ek (k=1,2,…,n) を、そのうち一つがaの向きになるようにとる。 ・同様に一つがbと同じ向きになるような単位ベクトルの組 e'kをとる。 ・ekがe'kに移るように表現行列を定める。 (以上引用) ekが単位ベクトルの組ということで、行列eで表すこととして、 直感的には、eとe'の各ベクトルを一対一に対応する必要がありますよね。 また、「eのうちの一つのベクトルekがaの向きになるようにとる」ことは、任意の組み合わせから一つを選ぶことになり、「e'のうちの一つのベクトルek'がbの向きになるようにとる」ことも同様に、任意の組み合わせから選択することになると思います。 そこで、「e,e'の各単位ベクトルの位置関係を保ったままekをek'」に移すということでしょうか?それとも、位置関係は無視しても結果は同じになるでしょうか。 そのあたりを疑問に思いました。 すみません、ekの生成方ですが、 「ai≠0 となる最小のiをmとする。」 の部分がまだ把握できていないので、検証した上で、また後ほどお礼を差し上げます。 ありがとうございました。