Правильно:
fieldOfViewX = 2 * atan(tan(fieldOfViewY * 0.5) * aspect)
Неправильно, особенно для крупных аспектов, см. Комментарии @ gman ниже:
Aspect ratio === width/height
fovy ~= "height"
==> fovx = fovy * aspect
Тест:
Fovy = 60 degs
Aspect = 4:3 ~= 1.33
Fovx = 60*1.33 = 80
80/60 = 4:3 (fovs match, yay)
Для "разумных" областей / аспектов простой метод "разумно" близок к истине, но если у вас есть экстремальные аспекты, вы получите fovx> 180 градусов, что вам не нужно.