• 締切済み

回転行列

z軸(0,0,1)に関する極座標 x=r*sinΘcosφ y=r*sinΘsinφ z=r*cosΘ を、中心はそのままで、立方体の最長の対角線が軸となるようにしたい時、 どのような回転行列をを用いればよいでしょうか? イメージとしては、 地球の地軸がずれている経度と緯度のような感じです。 立方体の対角線の軸は(1,1,1),(-1,1,1),(1,-1,1),(-1,-1,1)方向です。 よろしくお願いいたします。

みんなの回答

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.4

> 自分で挑戦してみます。 それが大事。与えられた答えだけ暗記しても 何の意味もありませんから、 なぜそうなるのか、自分で考えてみてください。 No.2 がガイドになれば幸い。

  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.3

#1です。 A#1の補足質問の回答 >理解を深めるために、自分で計算しようとしていますが、 それぞれの4パターンの φやθがよくわかりません。 よろしかったら教えて頂ければ幸いです。 たとえば M1の導出の場合で説明すると 行ベクトル(1,1,1)を球座標に直すと (1,1,1)=(r1*sinθ1cosφ1,r1*sinθ1sinφ1,r1*cosθ1), r=√3,φ=45°,sinθ1=√(2/3),cosθ1=1/√3 となります。 A#1の参考URLのアフィン変換ではベクトルを行ベクトルで扱っています。 このときの4x4の回転行列がM1です。 手順1) 行ベクトルX(1,1,1)をz軸のまわりに反時計方向にφz=45°だけ回転してやると ベクトルX(1,1,1)はyz平面に移動します。 移動後のベクトルをX1,回転行列をN1とすると X1=X N1で表せます。 ここで、 N1= [cos45°,sin45°,0,0] [-sin45°,cos45°,0,0] [0,0,1,0] [0,0,0,1] = [1/√2,1/√2,0,0] [-1/√2,1/√2,0,0] [0,0,1,0] [0,0,0,1] 次にベクトルX1をx軸のまわりに反時計方向にθx=θ1だけ回転してやると ベクトルX1はz軸正方向に重ねることが出来ます。 移動後のベクトルをX2,回転行列をN2とすると X2=X1 N2で表せます。 ここで、 N2= [1,0,0,0] [0,cosθ1,sinθ1,0] [0,-sinθ1,cosθ1,0] [0,0,0,1] = [1,0,0,0] [0,1/√3,√(2/3),0] [0,-√(2/3),1/√3,0] [0,0,0,1] X2=X1 N2=X N1 N2=X M1 M1=N1 N2= [1/√2,1/√2,0,0] [-1/√2,1/√2,0,0] [0,0,1,0] [0,0,0,1] * [1,0,0,0] [0,1/√3,√(2/3),0] [0,-√(2/3),1/√3,0] [0,0,0,1] = [1/√2,1/√6,1/√3,0] [-1/√2,1/√6,1/√3,0] [0,-√(2/3),1/√3,0] [0,0,0,1] と(1)の場合の回転行列M1が得られます。 4x4のマトリックスとベクトルを1x4の行ベクトルで扱いますので4つ目の要素として1を加えます。 X=(1,1,1,1) とすると X2=(1,1,1,1)*M1 に上のM1を代入すると X2=(0,0,√3,1) と得られます。…計算して正しいことを確認してください。 実際の移動後のベクトルX2は4番目の1を除けば得られます。

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.2

(平行移動が出てこないのに、同次座標を使う理由って…) 無意味なことはよして、簡潔にいきましょう。 (0,0,1) を (1,1,1) 方向に移す回転を見つければよいのでしょう? 回転でベクトルの長さは変わらないから、 (0,0,1) を (1,1,1)/√3 に移す回転ならよいことになります。 その回転軸は、外積 (0,0,1)×(1,1,1)/√3 方向であり、 回転角 θ は、内積を使って cosθ = (0,0,1)・(1,1,1)/√3 です。 w = (0,0,1)×(1,1,1)/√3, v = w/|w|, u = (0,0,1)×v, t = u/|u| と置くと、 { v, (0,0,1), t } が三次元空間の正規直交基底になりますから、 v, (0,0,1), t を各列ベクトルとして並べた正方行列を P、 目的の回転行列を A とすれば、 (P^-1)AP が、x軸を軸とする角 θ の回転 1  0  0 0 cosθ -sinθ 0 sinθ cosθ になります。この行列を R として、A = PR(P^-1) です。 成分計算は、自分でどうぞ。

bear-bear_2010
質問者

お礼

回答ありがとうございました。 自分で挑戦してみます。

  • info22_
  • ベストアンサー率67% (2650/3922)
回答No.1

参考URL http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%A2%A5%D5%A5%A3%A5%F3%CA%D1%B4%B9_3DCG のアフィン変換を使って、そこで定義されている4x4行列で回転行列を表現することにします。 立方体の対角線の軸が (1)(1,1,1)方向の場合の回転行列M1, (2)(-1,1,1)方向の場合の回転行列M2, (3)(1,-1,1)方向の場合の回転行列M3, (4)(-1,-1,1)方向の場合の回転行列M4 を最初に方向ベクトルがz軸の周りにy軸に重なるようにφだけ回転し、次にx軸の周りにz軸に重なるようにθだけ回転する時の回転行列を求めてやれば良いです。 各場合の回転行列を求めた結果は以下の通りです。 M1= [1/√2,1/√6,1/√3,0] [-1/√2,1/√6,1/√3,0] [0,-√(2/3),1/√3,0] [0,0,0,1] M2= [1/√2,-1/√6,-1/√3,0] [1/√2,1/√6,1/√3,0] [0,-√(2/3),1/√3,0] [0,0,0,1] M3= [-1/√2,1/√6,1/√3,0] [-1/√2,-1/√6,-1/√3,0] [0,-√(2/3),1/√3,0] [0,0,0,1] M4= [-1/√2,-1/√6,-1/√3,0] [1/√2,-1/√6,-1/√3,0] [0,-√(2/3),1/√3,0] [0,0,0,1]

bear-bear_2010
質問者

お礼

早速のご回答ありがとうございました。 M1-4の回転ベクトルも大変助かりました。

bear-bear_2010
質問者

補足

理解を深めるために、自分で計算しようとしていますが、 それぞれの4パターンの φやθがよくわかりません。 よろしかったら教えて頂ければ幸いです。

関連するQ&A