Tuesday, April 23, 2013

Converting diagonal field of view and aspect ratio to horizontal and vertical field of view

Note: this post was refined on Apr 23, 2016 to reflect a more accurate method of calculation.

Continuing the reference section started in the post regarding "TV screen size vs. goggle field of view", here is the conversion between diagonal to horizontal and vertical field of view. The conversion depends on the aspect ratio of the screen (ratio between width and height). The conversion table is below following by some explanations and discussion:

Converting diagonal FOV to horizontal and vertical FOV for various aspect ratios

HMD and goggle manufacturers usually like to present the diagonal field of view because that is the larger number, just like you read about "40 inch" TVs and not "34.9 inch" TV which would be the horizontal measure of a 40 inch TV with 16:9 aspect ratio, the common ration for HD1080 images. The aspect ratio used to be 4:3 for traditional televisions, VGA monitors and more. Over time, that aspect ratio grew and common ones are 3:2 for an iPhone 4, 16:9 (1.78:1) for HDTV and 2.40:1 for wide screen cinema. Keep in mind that these values are for the full width of the screen. If you take a screen and divide it into two for left and right eyes, the width of the screen area each eye is halved and so is the aspect ratio. This is why the table above includes 1:1 aspect ratio which is roughly what happens when you take a 16:9 screen and divide it into two.

If you don't know the aspect ratio, you can usually get it from the number of pixels. Assuming square pixels, the aspect ratio is the horizontal resolution divided by the vertical resolution.

The math is straightforward, but it involves a bit of trigonometry. Let’s take it step by step:

  • If Df is the diagonal field of view and Ha:Va is the horizontal to vertical aspect ratio, we can find the corresponding diagonal size in the same units as the aspect ratio: 
Da = sqrt(Ha*Ha + Va*Va)
  • The screen height and width are proportional to the tangent of the half angle. We use this to convert between field-of-view space and aspect-ratio space: 
Da = tan(Df/2) and Df = atan(Da) * 2
  • If the tangent and arctangent functions operate in degrees, we get: 
Hf = atan( tan(Df/2) * (Ha/Da) ) * 2
  • Here the tan() function converts from FOV to aspect-ratio space, the ratio is scaled in that space and then converted back into FOV space.
Wonkish note: As the field of view gets larger, the difference between the horizontal and vertical diminishes. Once the diagonal field of view reached 180 degrees, the horizontal and vertical fields of view also reach 180 degrees – every direction lies in the plane of the eye.

4 comments:

thalsharif said...

Hello,

Thank you very much. I need these information from along time.
My DFOV is 75 degree, can you tell me the HFOV and VFOV with all possible aspect ratio, like what you mention in the table.

Thanks.

VRGuy said...

Thank you. If you don't want to go through the math, using the average between 70 and 80 degrees to get the HFOV and VFOV values for 75 degrees is a pretty good approximation.

Anonymous said...

Can this be used for webcams?

VRGuy said...

Yes, it can also be used as approximation for Webcams