プロが教える店舗&オフィスのセキュリティ対策術

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)方向です。
よろしくお願いいたします。

A 回答 (4件)

> 自分で挑戦してみます。



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

#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を除けば得られます。
    • good
    • 0

(平行移動が出てこないのに、同次座標を使う理由って…)


無意味なことはよして、簡潔にいきましょう。

(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) です。
成分計算は、自分でどうぞ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/08/24 09:32

参考URL


http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%A2 …

のアフィン変換を使って、そこで定義されている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]

この回答への補足

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

補足日時:2011/08/24 09:36
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/08/23 15:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!