• ベストアンサー

3D空間内の2つの図形の間の角度を求めるには?

3D空間で、顔テクスチャーを貼り付けた、立方体Aと立方体Bを適当に配置したときに、立方体Aの方向を向くように立方体Bを回転させる方法について調べています。 2次元の場合は 回転角=Math.atan2(図形BのY座標-図形AのY座標,図形BのX座標-図形AのX座標)*180/Math.PI; のように、アークタンジェントを使えばよいのですが、3次元の場合はどのように考えればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • m035
  • ベストアンサー率44% (38/86)
回答No.1

回転角=Math.atan2(図形BのY座標-図形AのY座標,図形BのX座標-図形AのX座標)*180/Math.PI; のY座標やX座標を別の座標に置き換えてみると言うのはどうでしょう? 3次元を2次元に置き換え、正面、横、真上から見たときの座標 (XY、ZY、XZのうちのどれか?)をXY座標として、 上記の式に当てはめて回転するとそれらしく見えるかと思ったのですが、 自信ないです…。

quick-nono
質問者

お礼

m035さんご解答ありがとうございます。 >3次元を2次元に置き換え、正面、横、真上から見たときの座標 (XY、ZY、XZのうちのどれか?)をXY座標として、 上記の式に当てはめて回転する そうですね。2次元の場合のX,Yを、3次元のX軸とZ軸に置き換え、回転軸をY軸と考えると少なくともX-Z平面上で向かせられそうな感じはしますね。 (X-Z平面 Yは高さ。Y軸方向から見るので高さは無視) 一度2つの軸づつ計算して、計算結果を保存しておき、 次の2軸の計算結果を追加するとよいのかも。 あー頭がこんがらがる!?

関連するQ&A