2015-01-09 62 views
2

我在OpenGL中編寫項目,翻譯和旋轉模型視圖矩陣後,確定對象的位置時遇到了問題。 爲了想象這一點,想象地球如何圍繞太陽旋轉,基本上,我需要在運行時確定地球的位置。確定旋轉對象的位置

我會分我的代碼放到了幾步,假設我們是在開始的(0,0,0)的位置和我們的旋轉等於0

while(true) 
{ 
modelViewMatrix.PushMatrix();    // 
    modelViewMatrix.Translate(1, 1, 0); // 1 
    modelViewMatrix.Rotate(k++, 0, 1, 0); // 2 
    object.Draw();       // 3 
modelViewMatrix.PopMatrix();    // 
} 

1 - 此時位置確定是容易的,它是(1,1,0)
2 - 現在,我們在一些不斷遞增值旋轉物體保持它周圍的位置移動(0,0,0)
3 - 繪製對象

現在我知道modelViewMatrix存儲旋轉和位置等信息,但我不知道如何利用它來翻譯和旋轉後找出我的物體的實際位置。

這裏是我試圖描繪我正在談論的內容,紅色問號(?)表示我試圖找到的對象的示例位置。

enter image description here

回答

2

你應該能夠在(0,0,0)創建VEC3和您的矩陣變換它。這會給你你的'地球'的位置 - 你的對象可能已經有了一個位置,所以你真的應該使用你的矩陣來改變你的對象的實際位置,而不是改變你的整個模型 - 視圖矩陣來繪製對象。

如果你很好奇這些矩陣是如何工作的,谷歌的「齊次變換矩陣」來讀取它們。

+0

啊,解決方案非常接近!我曾經有過這樣的想法:「不管我只是乘以m * v而且那會是位置」,但是我放棄了這個想法,現在它變成了解決方案!謝了哥們! :) – 2015-01-09 20:41:50

+0

很高興它的工作。肯定會閱讀這些矩陣 - 理解它們真的很好。 – mbgda 2015-01-09 20:54:05