アプリ版:「スタンプのみでお礼する」機能のリリースについて

点(Ax、Ay、Az)を3次元空間にある、点(Bx、By、Bz)から、点(Cx、Cy、Cz)に向かう直線を軸に任意の角度で回転させたときの、点(A’x、A’y、A’z)の座標値の計算方法を教えてください。ただし自分の数学レベルは中学生並でベクトルが少しだけ理解できるていどです。よろしくお願いします。

A 回答 (3件)

この問題は、少なくとも、空間座標系、三角関数、行列といった知識が必要でしょうから、失礼ながら、



>>自分の数学レベルは中学生並でベクトルが少しだけ理解できるていど

では無理だと思いますが...。
    • good
    • 1

 ベクトルうんたらと考えてるとちょっとややこしい(でしょう)ので、平行移動と回転移動の組み合わせで考えてみてください。

ただし、これは行列の乗算の知識が必要となります。

 z軸を中心にした回転座標は以下の行列の式から求められます。

[ Ax ] [ cosθ sinθ 0 ][ Bx ]
[ Ay ]= [-sinθ cosθ 0 ][ By ]
[ Az ] [ 0   0  1 ][ Bz ]

 求める座標値はA、元の座標値はB、回転角はθです。これと平行移動を繰り返せば、質問のB-C方向をZ軸に置き換えることができ、また元に戻すことができます。
 なお、上の式のAとBは質問のものとは無関係です。
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
この式から求める座標Aというのは、XY平面の(0,0,0)のZ軸で回転させるということで理解できましたが、
例えば、(5、10、0)を原点に回転させるときは行列をどう変更すればいいのかわかりません。よろしければ教えていただきたいのですが。よろしくお願いします。

お礼日時:2005/02/24 13:37

オイラー角による座標変換だと


任意の方向ベクトルを軸にした回転はややこしくなるので
四元数を使った座標変換がオススメです

参考URLを見て頂ければここに書くことはないと思います
(ただ私の知識がないだけですが...)

また、任意の点を中心に回転させたいなら
ゲタを履かせて座標変換してから、ゲタを取ればいいだけなので簡単にできるはずです

ゲタを履かせるの意味がわからないかも知れませんが
Aを中心にBを回転させるとすると
BからAを引き、平行移動させてAを原点に持ってきて
同じく平行移動させた(B-A)を回転させ、その結果(B-A)'にAを足してもう一度平行移動させて
ってことです、解るかな?
B → (B-A) → (B-A)' → (B-A)'+A

参考URL:http://staff.aist.go.jp/toru-nakata/quaternion.h …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考URLを元によく考えてみます。

お礼日時:2005/03/03 09:46

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