考虑以下透视投影矩阵,它仅在调用者给出的垂直视野和纵横比下工作(非常好):
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?