2012-03-24 78 views
3

我試圖繞軸旋轉的立方體和我在做什麼是:OpenGL的glRotate和glTranslate命令

glTranslatef(0.0f, 0.0f, -60.0f); 
    glRotatef(angle, 0.0f, 1.0f, 0.0f); 

我期待它移動至-60℃,繞Y軸旋轉在圓圈中,而是在-60座標上自轉。當我這樣寫:

glRotatef(angle, 0.0f, 1.0f, 0.0f); 
    glTranslatef(0.0f, 0.0f, -60.0f); 

我得到我需要的但我不明白爲什麼? 他們爲什麼要反對? 有人可以請解釋。

+1

矩陣乘法不可交換... – 2012-03-24 15:31:56

回答

4

當您應用轉換時,它將在本地應用。把它想象成一個你正在移動的座標系統。您從代表視圖的座標系開始,然後將該座標系相對於其自身進行轉換。因此,在第一種情況下,您正沿着座標系的Z軸平移座標系-60,然後在新的原點上圍繞新的Y軸旋轉座標系。然後你繪製的任何東西都將繪製在新的座標系中。

這實際上提供了一個更簡單的方法來思考一旦習慣了轉換。您不必考慮兩個獨立的座標系:一個用於應用變換的座標系,另一個用於繪製幾何圖形的座標系。