- ベストアンサー
3D座標上のベクトルをを2D平面に投影・・・
まず、3次元座標上のあるベクトル(例:(x、y、z)=(1,1,1))をx-z平面上に投影します。 その投影された、ベクトルとx軸の成す角度を、ラジアンか角度で算出したいのですが、C++でどう書いていいのかわかりません。 アルゴリズムがわかっていても、C++でかけないという初心者です。 誰か、算出の方法を教えてください。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ベクトル、転置を~および ' で表します。3次元ベクトル p~=(a,b,c)' を x-z 平面に投影すれば ベクトル q~=(a,0,c)' が得られます。これと x 軸方向の単位ベクトル e~=(1,0,0)'とのなす角度をθとすれば |e~|=1 なので cos(θ) = (q~,e~)/|q~| = a/√(a^2+c^2) ------------------- (1) から θ = arccos(a/√(a^2+c^2)) ---------- (2) が得られます。私は C++ ではなく C 言語のレベルですが、この計算は C言語では下記のようになります。()はプログラムではなく説明文です。 //変数定義 double a,b,c; double theta; ::::: ::::: //実行段階 (ここで a,b,c に値を入れる) ::::: theta = acos(a/sqrt(a*a+c*c)); ::::: (ここで答え theta を表示、出力、あるいは利用する)
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6289)
atan2(x, z) でよいのではないでしょうか。
お礼
本当に参考になりました、わざわざありがとうございます。 こんなやり方もあったんですね。さっそく試してみたいと思います。
お礼
本当に参考になりました。 わざわざありがとうございます。 さっそく試してみたいと思います。