是否正确计算OpenGL投影矩阵的第一个元素?

是否正确计算OpenGL投影矩阵的第一个元素?,opengl,matrix,projection-matrix,Opengl,Matrix,Projection Matrix,我读到的几乎所有关于投影矩阵的理论资料中,第一个元素都是2n/(r-l),但我看到的大多数开源实现都是2n/((t-b)*a),这对我来说是有意义的,因为(r-l)应该是((t-b)*a),但当我实际运行这些数字时,有点不对劲 如果我们的垂直视野为65度,近平面为.1,纵横比为4:3,那么我似乎得到: 2n/(r-l) = .2 / (tan(65*(4/3)*.5) * .2) = 1.0599 但是 为什么我读的每件事和我看到的每件事都有区别?我没有注意到,直到我开始实现同一个分析逆,我看

我读到的几乎所有关于投影矩阵的理论资料中,第一个元素都是
2n/(r-l)
,但我看到的大多数开源实现都是
2n/((t-b)*a)
,这对我来说是有意义的,因为
(r-l)
应该是
((t-b)*a)
,但当我实际运行这些数字时,有点不对劲

如果我们的垂直视野为65度,近平面为.1,纵横比为4:3,那么我似乎得到:

2n/(r-l) = .2 / (tan(65*(4/3)*.5) * .2) = 1.0599
但是


为什么我读的每件事和我看到的每件事都有区别?我没有注意到,直到我开始实现同一个分析逆,我看到了它的第一个元素是(r-l)/2n,这不是这些其他实现的逆。

你不能将纵横比乘以角度。tangens不是一个线性函数。拥有65度的垂直视野并不意味着你将拥有86,67度的水平视野和4:3的视角,而是~80.69度。

Aha!这就是原因;谢谢我本以为这会给我带来更多的问题。
2n((t-b)*a) = .2 / (tan(65*.5) * (4/3) * .2) = 1.1773