1
我正在試驗LWJGL2我希望能夠判斷相機是否能夠看到3D空間中的某個點。我試圖自己去看看我能不能做到,並且最終得到了一些有用的東西,只能在Y軸上旋轉。在三維空間中計算點的可見性
此代碼有效,但不在兩個軸上。我不確定這是否是正確的方法。
public boolean isInFrame(float x, float y, float z){ //The z isn't used
float camera = rotation.y; //The cameras y rotation
double object = Math.atan2(y, x)*(180/Math.PI);
object += (180 - camera);
if (object <0) object += 360;
if (object >360) object -= 360;
return 270>object&&90<object; //set to 180˚ for test
}
對於代碼,我假設攝像頭是以0,0,0爲中心。
我只是想知道我該如何改變它,以便它適用於x和y旋轉的相機。例如,它可以告訴我一個點是否可見,而不管攝像機旋轉。
注意: 我不擔心任何阻礙觀點的觀點。
感謝您的幫助提前。
哇,這簡化了我所做的一切,非常感謝! –
我明白你在這裏說什麼,但我不確定我知道如何從LWJGL2中獲取視圖和投影矩陣。在LWJGL2中,你所做的就是像這樣定義它: 'glMatrixMode(GL_PROJECTION); gluPerspective((float)100,640f/480f,0.01f,100);' 如何從中獲得原始矩陣? –
我對LWJGL並不熟悉。在普通的OpenGL中,矩陣堆棧的狀態可以通過例如'glGetFloatv(GL_MODELVIEW_MATRIX,...)'和'glGetFloatv(GL_PROJECTION_MATRIX,...)',它們返回16個浮點數組。 – jsb