考虑下面的透视 - 投影矩阵,它只使用调用者给出的垂直视场和宽高比来工作(非常精细):
func (me *Mat4) Perspective (fovY, aspect, near, far float64) {
tfY = near * math.Tan(fovY * math.Pi / 360)
tfX = tfY * aspect
me.Frustum(-tfX, tfX, -tfY, tfY, near, far)
}
如何扩展此函数的主体以支持此功能:调用者现在可以指定垂直(fovY)或水平(fovX)视野,但不能同时指定两者,以及宽高比。该函数如何能够从给定的纵横比和fovX计算缺失的fovY?
答案 0 :(得分:3)
这应该有效:
near
和width/2
以及角度fovx/2
。)near
和height/2
以及角度fovy/2
)。