openglcameraperspectivefieldofview

Computing FOVX (openGL)


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!


Solution

  • 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.