2011-01-24 22 views
0

、私は非常に単純なことをやろうとしているが、それはうまく動作しません.... 私はその後、私は次のようでした軸(XYZ) を描いた:単純な回転変換の問題

glMatrixMode(GL_MODELVIEW); 

glPushMatrix(); 

glRotated(45 , 1 , 0 , 0);//around X 
glRotated(-45 , 0 , 1 , 0); //around Y 

glBegin(GL_LINES); 
    glVertex3d(0,0,0); 
    glVertex3d(1,1,1); 
glEnd(); 

glPopMatrix(); 

しかし、どういうわけか、私が描く線(1,1,1)はZ軸に正確に描かれていません.... 誰かが私にその理由を教えてもらえますか?

更新:

それでは、私は理解するOpenGLはglRotatedでシーンを回転させることである(45、1、0、0)、従ってY軸は、0ではない1、0もう従って、次の動作が(glRotated -45、0、1、0)は、元のY軸を中心に回転しません。私は正しいですか?

私は何をする必要があるか教えてください: 私はユーザーからAx + By + Cz + D = 0という式で飛行機を取得します。この飛行機を画面上に描画する必要があります。 だから、私はmaindを持っていたのは、XY上に無限の飛行機を描いてから、彼を正しい場所に移動+翻訳することです。 私は彼の正常な状態でZ軸を統一することによって飛行機を彼の場所に移動させることを意味しました。 誰かが私に3つの正しい操作を与えることができます:回転+回転+翻訳?

答えて

1

あなたの回転軸は元の(基準)平面と同じ角度ではありませんので、ベクトル(1,1,1)は直接 "上向き"を指しません。最初の(そして2番目の)回転の後、元のY軸は45度の角度になりますが、オリジナルのZ軸とX軸は回転しません。彼らは実際に元の45度の平面に横たわっていますが、その平面では2つの端末方向だけが45度の角度になります。これは2回目の回転後のZとXの場合とは異なります。
最初の回転で60度、秒で45度の角度を使用してください。このようにして、すべての軸は基準平面に対して30度の角度になり、ベクトル(1,1,1)は直接指向します。

+0

こんにちはみんなありがとう! – talel

0

結果は正しいです。これは次のようになります。

座標軸に平行な辺を持つ立方体の対角線から始まる行です。ある軸を通って他の軸と45度の角度をなすと、その立方体との交点は四角形ではなく四角形ではなく、四角形の一辺(座標軸に平行)は立方体であるが、もう1つは長さが2の平方根である面対角である。あなたの線はこの矩形の対角線であるため、辺との角度は45度ではありません。これは、あなたの構築がZ軸に正確に揃うようにする必要があります。