我将相机放在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)
是否应该轮换?
答案 0 :(得分:1)
您需要围绕X轴旋转方向向量,即center - eye
,而不是center
。总体计算应为center = eye + Rot(center - eye)
。