gluLookAt中的不连续



这就是我如何计算我的视线矢量和向上矢量。

    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度

我想你说的极限角是90度(圆周率)。你得到的是一个正常的行为。当使用gluLookAt时,您指定一个"向上"向量,用于确定相机的滚动。在你朝下看的特殊情况下,"向上"向量与眼睛方向向量平行,所以不可能确定相机的滚动(这个问题有无限多的解决方案,所以gluLookAt选择任意一个)。也许你应该使用你的倾角和方位角来计算这个"向上"向量。

相关内容

  • 没有找到相关文章

最新更新