0
回転についてZ軸45度:glRotatef(45.0,0.0,0.0,1.0);
ポイント(10.0、-5.0,0.0)の周りをZ軸回りに45度回転させるには、翻訳する必要がありますか?OpenGLのz軸回りの回転
回転についてZ軸45度:glRotatef(45.0,0.0,0.0,1.0);
ポイント(10.0、-5.0,0.0)の周りをZ軸回りに45度回転させるには、翻訳する必要がありますか?OpenGLのz軸回りの回転
glRotatef()関数に関することは、原点を回転させるだけであるということです。したがって、特定の点を回転させるには、その点を原点に変換し、回転を行い、元に戻す必要があります。だから、あなたのポイントのために(10、-5、0)あなたはどうなる:私は例示なぜ
glPushMatrix(); // you do this to avoid disturbing the transformation matrices for any code following the below lines
glTranslatef(-10, +5, 0); // translate so that (10, -5, 0) lies at the origin
glRotatef(45, 0, 0, 1); // now rotate
glTranslatef(10, -5, 0); // translate back
// now you have rotated the scene by 45 degrees arround z-axis, at point (10, -5, 0)
// (draw your object *here*)
glPopMatrix(); // the old matrix is back
// now it is as if nothing happened
プッシュ/ポップ行列がしばしば誤解され、それはです。新しいOpenGLでは、暗黙的な行列スタックは存在しないため、行列を手作業で管理する必要があります。やや複雑になりますが、代わりに混乱はありません。
ポイント周りを回転するには、はい、翻訳する必要があります。翻訳したり、オブジェクトを回転させたり、次のトランスフォームをカスケードしないように変換したり、glPushMatrix()とglPopMatrix()の間にこれら2つを入れたい場合は、あなたに任されます。 –
push、gltranslatef、glrotatef、popありがとう! – rotate