2013-05-26 32 views
1

我所在的3D立方體內我的相機 -旋轉攝像頭的外觀(3中心的ARG)繞X軸在gluLookAt

public void display(GLAutoDrawable drawable) { 
     ... 
     glu.gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ); 
     ... 
} 

它看起來像 - (每種顏色 - 側邊鎖固) -

enter image description here

現在我試圖旋轉和相機看(三centerX, centerY, centerZ)繞X軸 - 根據這個公式旋轉 -

enter image description here

它運作良好,直到它達到Z值變爲負值的狀態 - 之後相機開始旋轉到X軸的另一側。

我告訴你的(centerX,centerY,centerZ)值這個bug的範圍 - 你怎麼建議爲我解決這個問題,使之旋轉,在所有360度

1.0 -1.2817129 0.59767246 //ok 
1.0 -1.3289262 0.4836895 // ok 
1.0 -1.3660256 0.36602536 //ok 
1.0 -1.3927287 0.24557555 // ok 
1.0 -1.4088323 0.12325676 //ok 
1.0 -1.4142138 -9.784749E-8 // ok for last time 
1.0 -1.4088323 -0.12325695 // rotate to other side of X 
1.0 -1.3927287 -0.24557574 // so on ... 

編輯:

是否(upX,upY,upZ)應該在這種情況下,通過旋轉嗎?

回答

1

您需要繞X軸旋轉方向矢量,即center - eye而不是center。總體計算應該是center = eye + Rot(center - eye)

+0

你的意思是'腐爛'? – URL87

+0

這是您在問題中描述的旋轉操作。 –

+0

所以你的意思是隻有'center'應該改變,但是按照你描述的方式? – URL87