- ベストアンサー
3Dベクトルを3Dの軸ベクトルに沿って回転させる方法
3Dベクトルを3Dの軸ベクトルに沿って回転させる方法 ベクトルA(1, 1, 1)をベクトルB(1, 0, 0)を軸に たとえば90度(時計回りに)回転させたいと思った場合 どう計算すれば良いのでしょうか・・?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
参考URL http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%A2%A5%D5%A5%A3%A5%F3%CA%D1%B4%B9_3DCG のアフィン変換で、X軸中心に「-90°」回転する回転行列Mを使えばいいでしょう。平行移動を伴わなければ(4列目と4行目を除いた)3行*3列の行列でもいいですね。 A:(1,1,1) θ=-90°、sin(-90°)=-1,cos(-90°)=0なので M: (1,0,0) (0,0,1) (0,-1,0) 従って、 回転後のベクトルC:(x,y,z)は C=A*M で計算できます。 C:(x,y,z)= (1,1,1)* (1,0,0) (0,0,-1) (0,1,0) =(1,1,-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 http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%A2%A5%D5%A5%A3%A5%F3%CA%D1%B4%B9_3DCG
その他の回答 (3)
- Mr_Holland
- ベストアンサー率56% (890/1576)
高校数学のレベルで求めてみます。 「ベクトルA(1, 1, 1)をベクトルB(1, 0, 0)を軸に回転」させることは、ベクトルAをx軸を軸にして回転させることに相当します。 いま、ベクトルAの始点を原点に合わせると、ベクトルAの終点は x=1 の平面上にあります。 そこで、ベクトルの回転を x=1 の平面上で考えます。 この平面を+xから-xの方向に見ます。 このとき、ベクトルAの終点は 座標(y、z)=(1,1)にあります。 ここで、この点を時計回りに90°回転させるのですから、 平面:x=1 上の原点(0,0)を中心に -90°回転させることになります。 原点を中心に-90°回転させる変換は、次の1次変換で得られます。 y’=+z、 z’=-y 従って、ベクトルAを回転させたベクトルA’の平面:x=1 上の座標は(y’、z’)=(1,-1)にあります。 ベクトルA’の終点は平面:x=1上にあることから、ベクトルAを回転させたベクトルA’は 次のようになります。 ベクトルA’=(1,1,-1)
お礼
ご回答ありがとうございます。
- alice_38
- ベストアンサー率43% (75/172)
回転は一次合同変換なので、 アフィン変換まで話を拡げる意味は疑問。 特にポイントは、平行移動の有無よりも、 斜行しない変換の合成であることによって、 最終的な合成変換を、途中の変換で幾何的に 解釈できるところにある。 人間は、CADソフトと違い、計算する前に 見通しを得たほうがよい。
お礼
ご回答ありがとうございます。
- alice_38
- ベストアンサー率43% (75/172)
つい先日、ほぼ同じ質問に回答しました。 このサイトの QNo.5590811 にあります。 ご参考になれば幸い。
お礼
ご回答ありがとうございます。
お礼
ご回答ありがとうございます。