0

这就是我计算视线向量和向上向量的方式。

    ly = sin(inclination);
    lx = cos(inclination)*sin(azimuth);
    lz = cos(inclination)*cos(azimuth);
    uy = sin(inclination + M_PI / 2.0);
    ux = cos(inclination + M_PI / 2.0)*sin(azimuth + M_PI);
    uz = cos(inclination + M_PI / 2.0)*cos(azimuth + M_PI);

倾角是视线矢量与 xz 平面的角度,方位角是 xz 平面中的角度。

这工作正常,直到我的倾角达到 225 度。在这一点上,由于某种原因,旋转出现了不连续性。(注意 225 度,我的意思是它超过了倒置点)

关于为什么会这样的任何想法?

编辑:没关系,想通了。方位角不需要 180 度。向上矢量倾斜。

4

1 回答 1

1

我认为您在谈论 90 度 (pi) 的极限角。你得到的是正常的行为。使用 gluLookAt 时,您指定一个“向上”向量,用于确定相机的滚动。在您倒置的特殊情况下,“向上”向量与眼睛方向向量平行,因此无法确定相机的滚动(这个问题是无限数量的解决方案,因此是任意一个由 gluLookAt 选择)。可能你应该使用你的倾角和方位角计算这个“向上”向量。

于 2011-12-05T07:18:01.667 回答