- ベストアンサー
3次元上にある物体の向きを中心に向かわせる方法
- 3次元上にある物体の向きを中心に向かわせるためには、矢印のY軸回転・X軸回転・Z軸回転を制御する必要があります。
- 3次元上の物体の座標(x, y, z)がわかれば、矢印の向きを導き出すことができます。
- 2次元の場合と同様に、3次元でもタンジェントの逆関数を使い、座標から角度を計算することができます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
座標(0,0,-100)にある物体を、X軸でθ回転、Y軸でφ回転したら物体が(x,y,z)に移動した。 このとき、x,y,zからθとφを求めたい。 という解釈でいいでしょうか。 そうだとして、 座標(0,0,-100)にある物体を、X軸でθ回転したときの座標を(x',y',z')とすると、 x'=0 y'=100*sinθ z'=-100*cosθ それをさらにY軸でφ回転すると座標(x,y,z)に移動するのだから、 x=x'*cosφ-z'*sinφ y=y' z=x'*sinφ+z'*cosφ となります。 これをまとめると、 x=100*cosθ*sinφ y=100*sinθ z=-100*cosθ*cosφ これから、 tanφが求まります。 また、 x^2+z^2=(100*cosθ*sinφ)^2+(-100*cosθ*cosφ)^2=(100*cosθ)^2 から、cosθも求まります。
その他の回答 (4)
- nag0720
- ベストアンサー率58% (1093/1860)
やはり、どうも質問内容がよく分かりません。 最初の質問では、矢印のY軸回転と書いていたり、#2の補足では物体のY軸回転と書いていたり・・・ 物体の向きを中心に向かわせたいとありますが、最初はどこを向いている? 矢印のY軸回転とはどういう意味? 矢印の始点は物体ですよね。 矢印の回転と言ったら、普通は矢印の始点を中心にして回転することをイメージしますが、Y軸回転したら始点も動きますよ。それでいいんでしょうか? 物体のY軸回転、X軸回転の場合、物体の位置が変わりますが、物体を回転させて最終的にどこへ持っていきたいのでしょうか? それらが書かれていないので、結局どこの角度を求めればいいのか分かりません。
補足
説明がわかりにくく申し訳ありません。 物体=矢印という考えです。 新しい例えをここに記載させて頂きます。 全く回転(自転)をしない、重力のある地球のような球があるとし、それを1つの視点から見ています。(そのX Y Zの向きは質問内容の通り) その球面上で人間が走り回ると、どこに移動しても、常に地球の中心・足・頭が1直線状になっています。 この体の足から頭の向き=人間のX軸回転&人間のY軸回転を、X Y Z だけの情報から求められるのか、というのが質問でした。 以前説明した物体・矢印とはこの人間のことです。 真正面から見て、人間が x:0 y:0 z:-100 に立っている(=頭しか見えない)時を、 人間のX軸回転:0 Y軸回転:0 とすると ↓中心 ↓=足 ■体 ○頭 ( ・ )=■○(人間 x:100 y:0 z:0 )(人間 X軸回転:0 Y軸回転:90度) ○■=( ・ ) (人間 x:-100 y:0 z:0 )(人間 X軸回転:0 Y軸回転:-90度) ○ ■(人間 x:0 y:100 z:0 )だと、(人間 X軸回転:-90度 Y軸回転:0) | | ⌒ ⌒ ・ ・ ─ ─ | | ■(人間 x:0 y:-100 z:0 )だと、(人間 X軸回転:90度 Y軸回転:0) ○ といった組み合わせになります。 これを x y z から求めたいと思っていますが、 3次元上でz座標がからんでくるとわからなくなってしまったという次第です。
- alice_44
- ベストアンサー率44% (2109/4759)
どうも問題がよく解らない。球面上に始点を持つ矢印を、 原点方向を指すように、始点を固定して回転させたい ということでしょうか? だったら、始点の座標 (x,y,z) の他に、終点の座標か 矢印の方向ベクトルか何かが必要でしょう。 始点が ↑r、終点が ↑r + ↑v であるような矢印を、 始点を通るある直線を軸として回転したら、 矢印が原点を向いたとします。 ↑v を -(|↑v|/|↑r|)↑r に移すような回転を 見つければよいですね。 ↑w = -(|↑v|/|↑r|)↑r と置いて、 ↑v×↑w を軸とし、回転角 arccos(↑v・↑w/|↑v||↑w|) の回転がソレです。
お礼
ありがとうございます。 中心点 0,0,0と x y z だけでは、2次元のように単純な式にはならないということですね。 ↑v が必要となると、自分の考えでは、x y z しか情報がないので、この座標をスケール変換して新たな座標を求めること、と考え、それを教えていただいた式に当てはまればよいのかな、と思いました。 勉強して理解を深められるようにしたいと思います。 また、質問内容のわかりにくさ、申し訳ありません。 新たな例えを #4の補足へ書かせて頂きますので、参考になれば幸いです。
- nag0720
- ベストアンサー率58% (1093/1860)
>物体Aの座標(x y z)がわかれば、全て導き出せるでしょうか? 導き出せます。 どこの角度を出したいんでしょうか? 2次元だと、物体と原点とを結ぶ直線とx軸との角度ですよね。 3次元の場合、いったいどこの角度を求めたいのですか? それがきちんと理解できてれば、2次元の場合と同様にご自分で計算できると思いますよ。
補足
>3次元の場合、いったいどこの角度を求めたいのですか? まさにそこをどう定めればいいのかがわからず悩んでいます。 自分がまず思いついたのはY軸回転とX軸回転を適用するという考えでした。 1. 物体のY軸回転 上面図 水平x と 垂直zとして、物体と原点とを結ぶ直線とx軸との角度をxと-zをatanに利用し適用 2. 物体のX軸回転 ~~~の角度を適用 このX軸回転の~~~も、物体と原点を繋いだ線に沿って垂直(Y軸)に切った断面部分を正面から見ることが出来れば言いと考えているのですが、この方法が思いつきません。 (この考え方も間違っているかもしれません)
- alice_44
- ベストアンサー率44% (2109/4759)
球面上に描かれた矢印が、 球の中心方向を指すことは あり得ません。
補足
球面上に描かれているのではなく、軌道が球面上、というとわかりやすいでしょうか。
お礼
とても参考になりました。 大変遅くなってしまいましたが、どうもありがとうございました。