2010-10-11 79 views
0

我正在寫一個繪製2D三角形的應用程序,並根據它的位置圍繞它的z軸旋轉它。當用鼠標拖動三角形時,其中間(t1.tx,t1.ty)不斷變化。問題是,當我將三角形拖到另一個位置時,而不是停留在其處並旋轉的位置,它會圍繞其中心點以圓形路徑旋轉。使用glTranslate和glRotate移動和旋轉?

我做錯了什麼?我希望它在它的位置上旋轉。

void drawTriangle() { 
    glBegin(GL_POLYGON); 

    glColor3f((float)200/255, (float)200/255, (float)200/255); 
    glVertex2f(t1.tx, t1.ty + .2); // top point of triangle 
    glVertex2f(t1.tx - .2, t1.ty - .2); // left point 
    glVertex2f(t1.tx + .2, t1.ty - .2); // right point 

    glEnd(); 
} 

void display() { 
    glClear(GL_COLOR_BUFFER_BIT); 
    glLoadIdentity(); 

    glPushMatrix(); 
     glTranslatef(t1.tx, t1.ty, 0); // move matrix to triangle's current center point 
     glRotatef(theta, 0, 0, 1.0); // rotate on z-axis 
     drawTriangle(); 
    glPopMatrix(); 

    glutPostRedisplay(); 
    glutSwapBuffers(); 
} 

回答

1

它已經有一段時間,因爲我做這個東西,但根據你說的話,我的第一個猜測將是交換的glTranslatef和glRotatef的順序。你想旋轉模型空間然後轉換到世界空間。

1

我修好了。問題在於我正在翻譯矩陣,然後繪製到已翻譯的矩陣上。我所做的就是在矩陣的中心繪製我的三角形,所以它在矩陣轉換時仍然移動並在當前位置旋轉。感謝您的幫助。

+5

將其標記爲不讓此問題顯示爲未答覆的答案。 – rockeye 2011-12-23 09:42:03