概述
在项目中遇到这样一个问题:已知摄像机垂直方向的FOV为FOVY
,摄像机与近裁剪平面的距离为n
,裁剪平面的宽高比为aspect
,求摄像机水平方向的FOVFOVX
。
设近裁剪平面窗口的宽度为w
,高度为h
,则:
tan(FOVY / 2) = h / (2n);
tan(FOVX / 2) = w / (2n) = aspect * h / (2n) = aspect * tan(FOVY / 2);
于是可以求出FOVX
:
FOVX = 2 * atan(aspect * tan(FOVY / 2));
但是这种算法涉及到tan
和atan
,效率比较低。在实际应用中,当aspect
和FOVY
的值相对较小时,有一种近似的写法:
FOVX = FOVY * aspect;
我们来测试一下。令FOVY
为60
,aspect
为4:3
,即1.3333
,则实际的FOVX
值为75
。根据近似算法:
FOVX = 60 * 1.3333 = 80.
可以看出两者的结果比较接近。
最后
以上就是从容奇迹为你收集整理的OpenGL由FOVY计算FOVX的全部内容,希望文章能够帮你解决OpenGL由FOVY计算FOVX所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复