2014-02-13 57 views
3

我正在研究圍繞地球旋轉的月球的圖形模型。現在,月球在繞地球旋轉的同時繞y軸旋轉。我怎樣才能防止月球旋轉,但仍然允許它的軌道?下面的代碼..OpenGL - 繞太陽旋轉月亮而不旋轉?

編輯: 新增的動畫視頻來演示問題:

http://www.youtube.com/watch?v=ltGV4pXD5Cs

void DrawInhabitants(GLint nShadow) 
{ 
    static GLfloat yRot = 0.0f;   // Rotation angle for animation 

    if(nShadow == 0) 
    { 
     yRot += 0.2f; 
    } 

    // Draw the randomly located spheres 
    glBindTexture(GL_TEXTURE_2D, textureObjects[MOON_TEXTURE]); 

    glPushMatrix(); 
     glTranslatef(0.0f, 0.1f, -2.5f); 

     glPushMatrix(); 
      glRotatef(-yRot * 2.0f, 0.0f, 1.0f, 0.0f); 
      glTranslatef(1.0f, 0.0f, 0.0f); 
      gltDrawSphere(0.1f,21, 11); 
     glPopMatrix(); 

     if(nShadow == 0) 
     { 
      // Torus alone will be specular 
      glMaterialfv(GL_FRONT, GL_SPECULAR, fBrightLight); 
     } 

     glRotatef(-yRot, 0.0f, 1.0f, 0.0f); 
     glBindTexture(GL_TEXTURE_2D, textureObjects[EARTH_TEXTURE]); 
     gltDrawSphere(0.3f, 21, 11); 
     glMaterialfv(GL_FRONT, GL_SPECULAR, fNoLight); 
    glPopMatrix(); 
} 
+1

嘗試* un * - 旋轉剛翻譯後。 –

+0

你好,我添加了一個視頻鏈接到我的帖子,以顯示發生了什麼。 – Phil

+0

@luserdroog,謝謝:)正在旋轉的技巧。 – Phil

回答

3

的問題是,你爲了把月球旋轉座標系其期望的相對位置。這種旋轉是全球性的,所以它也會影響月球的方向。你需要在翻譯後撤消旋轉,所以你有「翻譯三明治」

rotate a 
translate 
rotate -a