2015-05-13 191 views
1

我無法在OpenGL中旋轉橢圓。所以,我有一些代碼來繪製一個橢圓如下:opengl:旋轉橢圓

glPushAttrib(GL_CURRENT_BIT); 
glColor3f(1.0f, 0.0f, 0.0f); 
glLineWidth(2.0); 
glPushMatrix(); 
glTranslatef(0, 0, 0); // ellipse centre 
glBegin(GL_LINE_LOOP); 
float inc = (float) M_PI/500.0; 
for (GLfloat i = 0; i < M_PI * 2; i+=inc) 
{ 
    float x = cos(i) * 0.4; 
    float y = sin(i) * 0.4; 
    glVertex2f(x, y); 
} 
glEnd(); 
glPopMatrix(); 
glPopAttrib(); 

這將產生一個畫面像這樣:enter image description here

現在我想要做的就是這個橢圓按順時針方向旋轉。所以我在兩者之間增加了一個glrotate,但結果並不是我所期望的。

所以,我不喜歡的東西:

glPushAttrib(GL_CURRENT_BIT); 
glColor3f(1.0f, 0.0f, 0.0f); 
glLineWidth(2.0); 
glPushMatrix(); 
glTranslatef(0, 0, 0);  
glRotatef(-90, 1, 1, 0); 
glBegin(GL_LINE_LOOP); 
float inc = (float) M_PI/500.0; 
for (GLfloat i = 0; i < M_PI * 2; i+=inc) 
{ 
    float x = cos(i) * 0.4; 
    float y = sin(i) * 0.4; 
    glVertex2f(x, y); 
} 

glEnd(); 
glPopMatrix(); 
glPopAttrib(); 

這產生這是簡單地倒塌的圖像。我想要做的是沿指定的中心旋轉橢圓。此外,我試着玩弄glRotatef的各種參數,但無法按預期做到。由此產生的圖像看起來像:

enter image description here

回答

6

你在XY平面工作,所以你不能真正圍繞XY矢量旋轉。相反,您想沿着Z軸單位旋轉(glRotate (angle, 0, 0, 1);)。設想你的屏幕是XY座標系,Z軸向內。你想要的是圍繞Z軸旋轉,所以你的XY平面保持在XY平面上。

+0

是的,我發現就像我發佈,但我也有其他問題!我會發佈一個新的問題來強調......! – Luca