在OpenGL中,如何确定给定深度的视图边界

BZo*_*Zor 3 opengl math

我正在玩OpenGL,我有一个问题,我无法找到答案,或者至少没有找到正确的方式来询问搜索引擎.我有一个非常简单的设置.800x600视口和投影矩阵,具有45度视野,近和远平面为1.0和200.0.为了便于讨论,模型视图矩阵是单位矩阵.

我想要确定的是给定深度的视图边界.例如,(0,0,0)是屏幕的中心.我正朝-Z方向看.

我想知道,如果我在平面上绘制几何图形100个单位进入屏幕(0,0,-100),视图的界限是什么?我可以在此平面中在x和y方向上绘制多远,并且几何图形仍然可见.

更一般地说,给定一个平行于近平面和远平面(以及它们之间)的平面,该平面的可见边界是什么?

此外,如果我想要确定的是一个共同的名称或是一个常见的操作,它叫什么?这样我就可以追踪更多的阅读材料

Han*_*esh 10

你的视角是45度,你有一个距离相机一个距离的平面,有一个未知的高度h.整件事看起来像这样: 图 请注意,此处的角度是视野的一半.

除了高中数学书籍,我们得到:

tan(angle) = h/a
Run Code Online (Sandbox Code Playgroud)

重新排列h并替换半视野:

h = tan(FieldOfView / 2) * a;
Run Code Online (Sandbox Code Playgroud)

这是您的平面沿Y轴向上延伸的程度.

由于屏幕不是方形,因此平面的宽度与高度不同.更确切地说,宽度是纵横比乘以高度.即w = h * aspectRatio

我希望这回答了你的问题.