• ベストアンサー

ある視点位置,注視点でのXYZ座標軸の傾きを求める式を教えてください.

視点位置(X1,Y1,Z1),注視点(X2,Y2,Z2)でレンダリングした際にx軸,y軸,z軸それぞれが(レンダリングした画像上で)どの程度傾くかを調べたいのですが,求める式を教えていただけないでしょうか. (初期位置はz軸上の点(0,0,Z3),注視点(0,0,0)とし,傾きは初期位置でのx軸が0度とする) わかりづらくて申し訳ございませんが,よろしくお願いいたします.

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

  • ベストアンサー
noname#47050
noname#47050
回答No.13

>交点は点((X1-X2)t0+X1,(Y1-ty-Y2)t0+Y1,(Z1-Z2)t0+Z1) この点を点YRとします。t0はtyの関数なので、点YRもtyによって変化する軌跡となります。つまり任意のtyがty=-∞~+∞に変化した時に点YRの描く軌跡はy軸そのものです。点YRの描く軌跡を明確にします。 t0とtyの関係が分かっているので、tyをt0で表して代入して整理するとやはり直線の式になります。 t0=1/(1+Dty) ただし D=Yd/(Xd^2+Yd^2+Zd^2) Xd=X2-X1 Yd=Y2-Y1 Zd=Z2-Z1 t0とtyの関係を見ると、tyが任意なのでt0もやっぱり任意です。上記の交点の式からtyを消去すると X=(X1-X2)t0+X1 Y=(Y1-Y2+1/D)t0-1/D+Y1 Z=(Z1-Z2)t0+Z1 私はY軸をレンダリングする際にどれでもいいから1点でやりましたが、質問者様は任意の点としたので、交点の軌跡つまりy軸の式が直接計算できたのです。つまり#8において4.は不要となります。 y軸が求まったので、順にx軸の計算→x軸とX軸のなす角の計算とやっていけばいいのです。

neonao
質問者

お礼

matchamanさん,面倒な計算に最後までお付き合いいただきありがとうございました.おかげさまで求めたい角度を算出することができました. また,conan_001さん,pascal3141さん,わかりづらい質問に回答していただきありがとうございました.この場を借りてお礼させていただきます. 皆様本当にありがとうございました.

その他の回答 (13)

noname#47050
noname#47050
回答No.3

#2へのコメントを読みました。 この直線に垂直な平面は計算出来ると思います。例えば (x2-x1)x+(y2-y1)y+(z2-z1)z=0 この平面は原点を通りますが、任意の点を通るように出来ます。 点(x0,y0,z0)を通り視点位置から注視点を見た直線に垂直な平面 (x2-x1)(x-x0)+(y2-y1)(y-y0)+(z2-z1)(z-z0)=0 その後ですが、平面に各軸を射影した時の「射影」とは正確に表現すると何ですか?また、水平方向との角度の「水平方向」とはどの方向でしょうか?

neonao
質問者

補足

matchamanさん,ありがとうございます. >その後ですが、平面に各軸を射影した時の「射影」とは正確に表現すると何ですか? 「平面上で(各軸の)直線がどう見えるか」を表す意味で使いました.射影という言葉ではわかりづらかったかもしれません.この直線がどれくらい傾いているかを知りたいと思っております. >また、水平方向との角度の「水平方向」とはどの方向でしょうか? 極座標系で言うとシータが0度の位置のことです. 平面上での各軸の直線の傾き,つまりシータが何度か求める式を教えていただけないでしょうか? たびたび申し訳ございませんが,よろしくお願いいたします.

回答No.2

視点位置(X1,Y1,Z1),注視点(X2,Y2,Z2)を結ぶ直線とx軸,y軸,z軸それぞれとの成す角度を求めればいいと解釈します。すると、注視点を原点に平行移動して、視点位置(X1-X2,Y1-Y2,Z1-Z2)と原点(0,0,0)を結ぶ線とx軸,y軸,z軸それぞれとの成す角度を求めればいいことになります。R=√(X1-X2)^2+(Y1-Y2)^2+(Z1-Z2)^2として、視点位置まで結んだ線の単位ベクトルは、((X1-X2)/R,(Y1-Y2)/R,(Z1-Z2)/R)、x軸の単位ベクトルは(1,0,0)なので、この2つの内積をとって、x軸との成す角度θxはcosθx=(X1-X2)/R。これからθxをcosの逆関数で求めます。y軸、z軸も同様です。

neonao
質問者

補足

pascal3141さん,ありがとうございます. >視点位置(X1,Y1,Z1),注視点(X2,Y2,Z2)を結ぶ直線とx軸,y軸,z軸それぞれとの成す角度を求めればいいと解釈します。 視点位置(X1,Y1,Z1),注視点(X2,Y2,Z2)を結ぶ直線との角度ではなく,この直線に垂直な平面にx軸,y軸,z軸を射影したときの(水平方向との)角度の求め方を教えていただけないでしょうか? よろしくお願いいたします.

noname#60187
noname#60187
回答No.1

レンダリングって何? 視点位置から注視点を見た時の視線が、x軸y軸z軸とのなす角が知りたいのですか?また(初期位置~)も意味不明です。

neonao
質問者

補足

conan_001さん,ご指摘ありがとうございます. >レンダリングって何? 説明不足で申し訳ございませんでした. 「数値データとして与えられた物体や図形に関する情報を計算によって画像化すること。」です.詳しくは, http://e-words.jp/w/E383ACE383B3E38380E383AAE383B3E382B0.html に載っていますが,与えられた視点位置から注視点を見た画像を表示することです. >視点位置から注視点を見た時の視線が、x軸y軸z軸とのなす角が知りたいのですか? 違います. x軸y軸z軸上にそれぞれ直線があるとして,それらがレンダリングした画像上でどれくらい傾いているかを知りたいと思っています. >また(初期位置~)も意味不明です。 初期位置から注視点を見た画像をレンダリングするとY軸上の線が縦線として,X軸上の線が横線として表されますが,このX軸上の線の傾きが0度とすることを意味しています. まだわかりにくいかもしれませんが,ご指摘ください. よろしくお願いいたします.

関連するQ&A