• ベストアンサー

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

  • 三次元座標の回転角度

    左手系三次元座標A(X,Y,Z)がB(x,y,z)に移動したとき、原点からみたZ軸の回転角度Θの算出は、 Θ=Atan(y/x)-Atan(Y/X) でいいですか。よろしくお願いします。

  • 極座標における角度の表し方

    極座標における角度の表し方 極座標で点の位置を表す際、よく『長さ∠角度』で表し 角度に関してはatan(アークタンジェント)を用いることが多いと思います。 その際、例えば第3象限にある『-1-j1』(=135°)の角度は atan(-1/-1) = atan(1/1) = 45° となってしまい、第3象限を表現したいのに第1象限の角度になってしまいます。 atanθの形式を用い、確実に第3象限を表す際はどのようにすればよいのでしょうか? ご存じの方がいらっしゃいましたら、是非ご教授お願い致します。

  • 3次元上にある物体の向きを中心に向かわせたい

    3次元上にある物体の向きを中心に向かわせたい 原点 0,0,0 を中心にした球体面上を回転移動している物体A、 例えば矢印があるとして、これを常に原点の方向を指すためには、 矢印のY軸回転・X軸回転・Z軸回転などをどのように制御すると良いでしょうか。 アングルは正面(Yが垂直 Xが水平 Zは奥行)から見た場合です。 物体Aの座標(x y z)がわかれば、全て導き出せるでしょうか? 2次元ですと、タンジェントの逆関数であるアークタンジェントを使い、 xとy座標がわかれば角度を導き出せるようですが、 3次元の場合もこの組み合わせになるのですか? 座標は原点 0, 0, 0を中心に 上に行くほどYが「減少」 右に行くほどXが「増加」 奥に行くほどZが「増加」 Y減少 ↑ _ Z増加 │/` ├─→ X増加 という形になっています。(前回の質問: http://okwave.jp/qa/q5954803.html から引用) 以上宜しくお願い致します。

  • 図形の回転

    0≦y≦x≦1の図形を回転行列を使って1/2π回転せると、移動後の座標(x',y')=(-y,x)となって0≦x≦-y≦1という右に1/2π回転させた図形になってしまったのですが、なぜでしょうか?

  • エクセル、VBAで図形の回転角度指定?

    こんにちは。 直角三角形をその片方の鋭角分回転させるというマクロを作成したいと思っているのですが、 なかなか上手くいかずご教示いただければと思い投稿いたしました。 選択図形をb度回転させるには Selection.ShapeRange.Rotation b(数値)で良いのだと思うんですが、 bに鋭角の角度を指定する方法がわかりません。 鋭角を求める式はエクセル関数では 「斜辺と辺 X の間の鋭角の角度:α = DEGREES(ATAN(y/x))」で求められんのですが、 この角度をbに指定したいんです。 私がVBAに詳しくないので、いろいろ試してみてもどこが間違っているのかさえわからなくて・・・ Selection.ShapeRange.Rotation=Application.WorksheetFunction.Degrees(Atan(y/x)ではエラーになってしまいます。 鋭角の角度を数値として認識してないんでしょうか? 原因がおわかりになる方がいらっしゃいましたら、ぜひご教示いただきたく存じます。 よろしくお願いします。

  • 図形の反転

    2次元図形ABCDEFGHがある。頂点の座標をそれぞれA(0,0),B(0,1),C(4,1),D(4,1.5),E(6,1),F(6,0),G(4,-0.5),H(4,0)とする。 この図形を直線y=2x+1に対して反転せよ。 と言う問いなのですが、 答えはA(0,0),B(2,0),C(2,2),D(3,2),E(2,3),F(0,3),G(-1,2),H(0,2)になりますでしょうか。

  • 三次元空間においた図形の方程式

    三次元における図形の方程式の表し方が分かりません。 ・n次元の図形の方程式は『等号』が(n-1)個で表現される。 という文章も目にしましたがその理由も分からず。。。 例えば,三次元における円の方程式として,『円の中心座標,O1(x0,y0,z0)』と『円周上の三点,P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3)』がそれぞれ得られた場合,どのような方法でどのような方程式が求められますか? 一つ考えた方法としまして,三点を通る球と平面をそれぞれ求め,それらの連立を解いてみましたが,それだけだと確実に変数が一つ無くなってしまいます。 上記の『三次元は等号が二つ』という事が関係してくるのでしょうか。。。 三次元空間に対しての知識が不足していますので,出来れば『具体的な式』や,さらには『具体的な係数など』まで頂けると非常に助かります。 お願い致します。

  • 座標空間における図形 (激難)

    座標空間における図形 (激難) 座標軸に垂直な平面の方程式、P(a,b,c)とする。 点Pを通り、x軸に垂直な平面の方程式はx=a 点Pを通り、y軸に垂直な平面の方程式はx=b 教えてほしいところ 確かに、xyz空間上の点(x,y,z)の条件とみれば平面になりますが、何故それが1の場合、垂直、2の場合、平行といえるんですか??

  • エクセルで回転する座標の出し方

    エクセルで回転する座標の出し方 (例) 座標X100、Y100の点から好きな角度を回したときのX、Yの座標の求め方 回転中心はX0、Y0 回転方向は反時計回り 例で言えば X141.421、Y0  が0度       X0、Y141.421  が90度       X-141.421、Y0 が180度       X0、Y-141.421 が270度 エクセルでの問題点は 1.角度計算がラジアンになる デグリも関数はあるけど書式がわからない  無理やり(PI()/180)などを使ってるがアークタンジェントでは書式がわからない 2.正と負の計算式・答えが負になるときの処理ができない  回転角度が270度とか 今電卓で打っているのは 100/100=ATAN ----------------------最初の角度 100*100+100*100の答えのルート--------回転中心からの直線距離 最初の角度+動かしたい角度------------求めたい座標の角度 SIN求めたい座標の角度*直線距離-------Y座標 答え COS求めたい座標の角度*直線距離-------X座標 答え 最初のX、Y座標と 動かしたい角度を入れると答えが出るような 物が作りたいです よろしくお願いします エクセル2000 WINXP

  • 空間での座標回転角度の求め方とは

    空間上にある点A(x,y,z)をX,Y,Zを基準として(θx、θy、θz)で回転させます。この回転でできた点をBとします。 そのBを同じ様にX,Y,Zで回転させて元へ戻したい場合、 X,Y,Zの順番で回転させているので、 戻すにはZ,Y,Xの順番に回転させればB=Aとなると思います。 tanや内積などを使い、回転角度を考えその角度で回転させることを考えました。 しかし、tanを用いた場合も内積で考えた場合も多少誤差が生じます。(θx=60度になるはずが、計算すると57度になったりする) 正しく回転角度(θx、θy、θz)を求めたい場合はどうすればいいのでしょうか? 一応回転の式はグラフィックス関係の本から調べました。 また自分でθx、θy、θzを入力した場合A=Bとなるので、 式は問題ないと考えています。 現状ではBを逆回転する際のθzを tan(√(Bx^2+By^2)/√(Bz^2))=θz Z軸逆回転したものをB'とすればθyは tan(√(Bx'^2+Bz'^2)/√(By'^2))=θy さらにY軸逆回転したものをB~とすればθyは tan(√(By~^2+Bz~^2)/√(Bx~'^2))=θx となりこれで求める事ができると考えています。 内積で考えた場合は内積の式からcosθを求め、acos(cosθ)で求めています。 長々とすみませんが、よろしくお願いします。

専門家に質問してみよう