2011-12-02 110 views
-2

目前,我在openGL中有一個具有多個座標系的太陽系。也就是說,太陽有自己的軌道座標系,用於圍繞軌道運行的行星以及代表太陽的圓的自身座標系。每個行星都有自己的軌道CS和CS。圖形 - 從世界座標確定TRIANGLE_FAN圓和局部座標的半徑

我使用GL_TRIANGLE_FAN爲行星製造球體。

然後,當我收到鼠標座標時,我使用glUnProject將它們從窗口轉換爲世界座標。然後,我嘗試將這些世界座標轉換爲本地座標,以確定鼠標點擊是否在行星形狀內。如果是這樣,它輸出星球的名字 - 難的部分是讓星球點擊識別工作。

我似乎無法弄清楚如何正確地做到這一點。我使用的公式如果((pow(target_LCS [0],2)+ pow(target_LCS [1],2))< pow(radius,2))看起來沒有正常工作,而不是確定點擊是否在形狀中,它從來就不是真的。我也不知道如何用TRIANGLE_FAN正確確定半徑。

回答

0

OpenGL對對象一無所知。當你用GL_TRIANGLE_FAN創建一個球體時,你必須有代碼告訴opengl在哪裏繪製球體以及半徑是多少。如果你想做交叉測試,你需要跟蹤行星半徑和行星位置你自己。所以只需使用繪圖代碼中指定的位置和半徑。