在gluLookAt中围绕X轴旋转相机外观(3个中心的arg)

时间:2013-05-26 08:45:36

标签: java opengl jogl

我将相机放在3D立方体中 -

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

看起来像那样 - (每种颜色 - 侧锁) -

enter image description here

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

enter image description here

效果很好,直到达到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)是否应该轮换?

1 个答案:

答案 0 :(得分:1)

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