我试图理解投影矩阵背后的数学,我发现this page。此页面中的矩阵:
我发现这个矩阵类似于Xna的矩阵。
我理解他们如何得到矩阵的m33和m44列,但他们如何得到m11和m22?而且我不明白为什么我必须给出纵横比,如果我已经给出了视角。
我想知道的最后一件事是:从ndc空间转移到窗口空间的等式是什么以及它们如何得到这个等式?
答案 0 :(得分:0)
m11可以作为在宽度方向上缩放FOV的方法。 m22可以被认为是一种在高度方向上缩放FOV的方法。
答案 1 :(得分:0)
你可以通过缩放生成的x和y坐标来改变视野:你缩放它们,你会得到更小的视野(放大),你缩小它们你会得到更大的视野(缩小)。 3D软件中使用的透视投影是直线的,因此如果您的视野足够大,边缘处的失真将非常严重,并且您不能有超过180°的视野。
你需要宽高比,因为OpenGL和Direct3D中的剪辑坐标从-1到1运行。在水平方向上-1是左边,1是右边。在垂直方向上-1是底部,1是顶部。因此,如果您希望正方形显示为正方形,则需要使用纵横比缩小X坐标。