首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算FOVX (openGL)

计算FOVX (openGL)
EN

Stack Overflow用户
提问于 2011-04-01 02:36:39
回答 4查看 7.5K关注 0票数 4

在使用openGL透视图时,我不太确定如何从fovy计算fovx。我在不同的地方阅读不同的东西,在使用我发现的任何一种方法时,我都得不到正确的行为。那么,有没有人可以告诉我,考虑到相机的凹陷和纵横比,我如何计算相机的fovx?如果需要任何其他数据,请让我知道我需要什么。提前谢谢你!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-01 02:46:56

正确:

代码语言:javascript
运行
复制
fieldOfViewX = 2 * atan(tan(fieldOfViewY * 0.5) * aspect)

错误,特别是对于大的方面,请参阅@gman的以下评论:

代码语言:javascript
运行
复制
Aspect ratio === width/height
fovy ~= "height" 
==> fovx = fovy * aspect

测试:

代码语言:javascript
运行
复制
Fovy = 60 degs
Aspect = 4:3 ~= 1.33
Fovx = 60*1.33 = 80
80/60 = 4:3 (fovs match, yay)

对于“合理的”For /方面,简单的方法是“合理的”接近事实,但如果你有极端的方面,你会得到fovx > 180度,这是你不想要的。

票数 11
EN

Stack Overflow用户

发布于 2013-01-02 10:50:50

这里有一个很好的链接:

http://wiki.panotools.org/Field_of_View

请注意,纵横比与视场比不是一回事,本页给出的正确关系应用于关联视场角度。

票数 3
EN

Stack Overflow用户

发布于 2011-11-04 19:12:46

Java:

代码语言:javascript
运行
复制
double d = (viewportHeight * 0.5) / Math.tan(Math.toRadians(fovY * 0.5));

fovX = (float) (2 * Math.toDegrees(Math.atan((viewportWidth * 0.5) / d)));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5504635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档