1

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

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

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

在此处输入图像描述

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

在此处输入图像描述

它运行良好,直到它达到 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)在这种情况下也应该通过旋转吗?

4

1 回答 1

1

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

于 2013-05-26T09:33:24.933 回答