Computing FOVX (openGL)

Mike2012 picture Mike2012 · Mar 31, 2011 · Viewed 7.2k times · Source

When working with openGL perspectives I am not quite sure how to compute the fovx from the fovy. I read different things in different places and in I don't get the right behavior by using either method that I found. So can someone please tell me, given the fovy of the camera and the aspect ratio, how to I calculate the fovx of the camera? If any other data is needed that is fine just let me know what I need. Thank you so much in advance!

Answer

Macke picture Macke · Mar 31, 2011

Correct:

fieldOfViewX = 2 * atan(tan(fieldOfViewY * 0.5) * aspect)

Wrong, especially for large aspects, see @gman's comments below:

Aspect ratio === width/height
fovy ~= "height" 
==> fovx = fovy * aspect

Test:

Fovy = 60 degs
Aspect = 4:3 ~= 1.33
Fovx = 60*1.33 = 80
80/60 = 4:3 (fovs match, yay)

For "reasonable" fovs/aspects, simple method is "reasonably" near the truth, but if you have extreme aspects you will get fovx > 180 degrees, which you don't want.