Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 透视投影矩阵-剪辑空间坐标_Opengl - Fatal编程技术网

Opengl 透视投影矩阵-剪辑空间坐标

Opengl 透视投影矩阵-剪辑空间坐标,opengl,Opengl,我一直在阅读,试图理解透视矩阵 本教程使用平截头体比例fatorS定义透视矩阵,如下所示 Xclip = S * Xcamera Yclip = S * Ycamera 但也有其他教程,如定义 xclip = 2 * n / (r-l) yclip = 2 * n / (t-b) 如果它们是一样的,请有人帮我理解一下好吗 当您分别分配S=2n/(r-l)或S=2n/(t-b)时,您最终得到相同的方程式(不要忘记第二种情况下与x\u camera和y\u camera的乘法)。在第一个方程中,

我一直在阅读,试图理解透视矩阵

本教程使用平截头体比例fator
S
定义透视矩阵,如下所示

Xclip = S * Xcamera
Yclip = S * Ycamera
但也有其他教程,如定义

xclip = 2 * n / (r-l)
yclip = 2 * n / (t-b)

如果它们是一样的,请有人帮我理解一下好吗

当您分别分配
S=2n/(r-l)
S=2n/(t-b)
时,您最终得到相同的方程式(不要忘记第二种情况下与
x\u camera
y\u camera
的乘法)。在第一个方程中,比例因子是根据其他常数预先计算的。请注意,x和y的比例因子通常不同,因为视锥体的底面不是正方形。

但在本教程中s的计算方式不同。它的FOV*pi/180。FOV=视野角度,单位为度。这会给出与第二个方程式相同的值吗?您确定这是准确的公式(参考?)。这似乎在任何方面都不合理。通常,这类似于
1/tan(fov/2)
。然后我们知道
2*n*tan(fov/2)=t-b
。重新排列这个方程会产生
S=2*n/(t-b)=1/tan(fov/2)
这是一个参考,方法名是CalcFrustumScale(),我很困惑,因为我在其他地方没有看到这个公式。但我在几乎所有其他教程中都看到了公式2*n/(t-b)=1/tan(fov/2),如
CalcFrustumScale()
返回
1/tan(fov/2)
。公式
tan(fov/2)=(t-b)/2/n
基本上是应用于从上面看的平截头体(眼睛处的三角形)的tangens的纯粹定义。