FOV (Field-Of-View) and aspect ratio
原理
透视矩阵中我们使用top、bottom、left、right、near、far来定义,但通常我们不这样做,而是使用fov、aspect ratio、near、far来定义,但他们本质上都是一样的,像人的眼睛也是有fov,叫做视度这么一说的,顾名思义,视度越大,我们看到的事物也就越多,例如fov90就比fov60看到的多,它是视点中心到视锥左侧与视点中心到视锥右侧所张开的角度,当然这样只能计算出左右侧的,还需要一个aspect ratio(屏幕纵横比)来计算上下侧的。
计算
根据三角函数
tan(2FOV)=adjacentopposite=ABBC=neartoptop=tan(2FOV)∗nearbottom=−top
如果我们的aspectratio(宽高比)为1的话,则
right=topleft=bottom=−top
但通常我们的屏幕的宽高比都不是1:1的,如
图中右边所示,我们有公式
heightwidth=topright
heightwidth=bottomleft
(宽与左右对应,高与上下对应) 则我们有
right=top∗aspectratioleft=bottom∗aspectratio
其中
aspectratio=heightwidth
bottom=−top