Java 围绕gluLookAt中的X轴旋转相机外观(3中心和s arg)

Java 围绕gluLookAt中的X轴旋转相机外观(3中心和s arg),java,opengl,jogl,Java,Opengl,Jogl,我在3D立方体中找到了我的相机- public void display(GLAutoDrawable drawable) { ... glu.gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ); ... } 看起来是这样的-(每种颜色-侧锁)- 现在,我尝试绕X轴旋转和相机观察(三个centerX、centerY、centerZ)-根据此旋转公式- 它工

我在3D立方体中找到了我的相机-

public void display(GLAutoDrawable drawable) {
        ...
        glu.gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
        ...
}
看起来是这样的-(每种颜色-侧锁)-

现在,我尝试绕X轴旋转和相机观察(三个
centerX、centerY、centerZ
)-根据此旋转公式-

它工作良好,直到达到Z值变为负值的状态,然后相机的外观开始旋转到X轴的另一侧

我向您显示此错误范围内的
(centerX、centerY、centerZ)
值-

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 ... 
你建议我如何修复它并使它旋转360度

编辑:


(upX,upY,upZ)
在这种情况下也应该旋转吗

您需要围绕X轴旋转方向向量,即
中心-眼睛
,而不是
中心
。整体计算应为
center=eye+Rot(center-eye)

您需要围绕X轴旋转方向向量,即
center-eye
,而不是
center
。整个计算应该是
center=eye+Rot(center-eye)

这是您在问题中描述的旋转操作。所以您的意思是只有
center
应该更改,但正如您描述的那样?非常感谢!!它起作用了!:)请再问一个小问题-为了绕其他轴(Y或Z)旋转,是否也使用
center=eye+Rot(center-eye)
(根据更改为
Rot
)@URL87:对不起,我刚刚注意到上面的评论/问题。腐烂可以代表你想围绕中心做的任何扭曲的事情。它可以是围绕X的旋转乘以围绕Y的旋转,或者其他什么。因为我在另一篇文章中进一步澄清了这个问题,没有人回答我。欢迎您-这是您在问题中描述的旋转操作。您的意思是只有
中心
应该更改,但正如您描述的那样?非常感谢!!它起作用了!:)请再问一个小问题-为了绕其他轴(Y或Z)旋转,是否也使用
center=eye+Rot(center-eye)
(根据更改为
Rot
)@URL87:对不起,我刚刚注意到上面的评论/问题。腐烂可以代表你想围绕中心做的任何扭曲的事情。它可以是围绕X的旋转乘以围绕Y的旋转,或者其他什么。因为我在另一篇文章中进一步澄清了这个问题,没有人回答我。欢迎光临-