- ベストアンサー
3次元で回転させた座標値の計算方法
点(Ax、Ay、Az)を3次元空間にある、点(Bx、By、Bz)から、点(Cx、Cy、Cz)に向かう直線を軸に任意の角度で回転させたときの、点(A’x、A’y、A’z)の座標値の計算方法を教えてください。ただし自分の数学レベルは中学生並でベクトルが少しだけ理解できるていどです。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
オイラー角による座標変換だと 任意の方向ベクトルを軸にした回転はややこしくなるので 四元数を使った座標変換がオススメです 参考URLを見て頂ければここに書くことはないと思います (ただ私の知識がないだけですが...) また、任意の点を中心に回転させたいなら ゲタを履かせて座標変換してから、ゲタを取ればいいだけなので簡単にできるはずです ゲタを履かせるの意味がわからないかも知れませんが Aを中心にBを回転させるとすると BからAを引き、平行移動させてAを原点に持ってきて 同じく平行移動させた(B-A)を回転させ、その結果(B-A)'にAを足してもう一度平行移動させて ってことです、解るかな? B → (B-A) → (B-A)' → (B-A)'+A
その他の回答 (2)
- 12m24
- ベストアンサー率23% (193/817)
ベクトルうんたらと考えてるとちょっとややこしい(でしょう)ので、平行移動と回転移動の組み合わせで考えてみてください。ただし、これは行列の乗算の知識が必要となります。 z軸を中心にした回転座標は以下の行列の式から求められます。 [ Ax ] [ cosθ sinθ 0 ][ Bx ] [ Ay ]= [-sinθ cosθ 0 ][ By ] [ Az ] [ 0 0 1 ][ Bz ] 求める座標値はA、元の座標値はB、回転角はθです。これと平行移動を繰り返せば、質問のB-C方向をZ軸に置き換えることができ、また元に戻すことができます。 なお、上の式のAとBは質問のものとは無関係です。
お礼
回答ありがとうございます。 この式から求める座標Aというのは、XY平面の(0,0,0)のZ軸で回転させるということで理解できましたが、 例えば、(5、10、0)を原点に回転させるときは行列をどう変更すればいいのかわかりません。よろしければ教えていただきたいのですが。よろしくお願いします。
- springside
- ベストアンサー率41% (177/422)
この問題は、少なくとも、空間座標系、三角関数、行列といった知識が必要でしょうから、失礼ながら、 >>自分の数学レベルは中学生並でベクトルが少しだけ理解できるていど では無理だと思いますが...。
お礼
回答ありがとうございます。 参考URLを元によく考えてみます。