2012-04-04 23 views
0

Iは、Xの点で3次元ベクトルに沿って移動するオブジェクトを有するY、Z ...私は、各軸に係る物体を回転させる必要があります(X- y軸、およびz軸)を含む。度ベクトルのOpenGLの方向(X、Y、Z)

は、どのように私は度の面でこれらの測定値を得るのですか? this質問を見てみると

(私はOpenGLを使用してのみglRotatef(...)を知っています)[glRotatef(...)のドキュメントhere] 、答えは

viewvectorを与える= <x, y, z>

R = SQRT( X 2 +y²+ Z 2)

PHI =上記Arctan2(Y、X)

シータ= ARCCOS(Z/R)

しかしはthis wikiページから私は理解している:

PHI => Z軸

シータの周りに角度= [イグナシオ・バスケス - エイブラムスから編集]> Xとの間の角度/ y平面

が、私はYどのように見つけるのですか?または私はする必要がありますか?

本当の問題は、どのように私はこれはglRotatef(...)の用語で表現するんですか?

+0

3番目の角度は、移動方向に影響しないため、任意です。特定の値を強制したい場合は、別の制約が必要です。 –

+0

したがって、正しく理解するには、 'glRotatef(theta、1.0、1.0、0.0)'と 'glRotatef(phi、0.0、0.0、1.0)'が使えますか? – Wallter

+0

glRotatef(phi、0,0,1); glRotatef(theta、1,0,0); –

答えて

1

シータは、XY平面より上の角度です。 PhiはZ軸の周りの角度です。一般に、n次元の極座標は、n-1個の角度成分と1個の半径成分とを有する。

+0

清算してくれてありがとう - 今glRotatef(...)で回転させるにはどうすればいいですか? – Wallter

+0

まず、 'glRotate *()'は角度を使わずにベクトルを取るので、あなたはthetaとphiについて心配する必要はありません。ロールについては、それは自分で決定する必要があります。 –

関連する問題