2010-02-18 181 views
0

我有一個轉變在OpenGL設置如下:如何將轉換後的座標轉換爲OpenGL中的世界座標?

glPushMatrix(); 
glTranslated(pntPos.X(), pntPos.Y(), pntPos.Z()); 
glRotated(dx, 1, 0, 0); 
glRotated(dy, 0, 1, 0); 
glRotated(dz, 0, 0, 1); 

//I use this to Render a freely placeable textbox in 3d 
//space which is based on the FTGL-Toolkit [1] (for TTF support). 

m_FTLayout.Render(m_wcCaption, m_iCaptionSize); 
glPopMatrix(); 

可正常工作。

但是,我想計算三維邊界框,這將界定我的文字在字空間。我知道這個邊界框相對於與我的GL變換的座標。

但我很難從這些計算他們的世界座標。 你能否告訴我一些關於如何檢索邊界框中四個頂點的世界座標的知識?

[1] http://sourceforge.net/projects/ftgl/

回答

2

最簡單的方法就是問什麼GL當前的模型視圖矩陣是glGetFloatv(GL_MODELVIEW_MATRIX, m),並通過所產生的矩陣變換你的邊界框的頂點。

   m[0] m[4] m[8] m[12]  v[0] 
      m[1] m[5] m[9] m[13]  v[1] 
    M(v) = m[2] m[6] m[10] m[14] X v[2] 
      m[3] m[7] m[11] m[15]  v[3] 

這會給你你的頂點的視空間四維齊次位置。

或者,你可以計算的模型觀察自己的基礎上,可用在glTranslated的手冊頁和glRotated

+0

謝謝你的提示數學。 – sum1stolemyname 2010-02-18 13:11:50

相關問題