Distance: (inch)

### Information and Calculator of FOV

The field of view (FOV) needs to be specified in SOS for non-standard
projector layouts.

The FOV is not used for pre-rendered data, but is used for the dynamically rendered data, so a correct value will help align the two as well as possible. If the FOV is incorrect, the dynamically rendered data may still look ok, since alignment is done with a dynamic grid, but the pre-rendered data will all be off by some amount. The pre-rendered data will never be perfect for a non- standard projector layout, since we don't adjust perspective calculations, but the proper FOV will get it as close as possible.

The "Classic" SOS FOV is 18.72 degrees.

Historic note: The original SOS FOV was 19.5 degrees with a target image size of 800x800. That image was truncated on display to 800x768, since the original projectors were 1024x768. When we switched the display engine to OpenGL, the imagery became scaled down to 768 instead of truncated. To compensate, we adjusted the FOV by a factor of 768/800, so the classic FOV became 19.5*768/800 = 18.72.

When adjusting the FOV to compensate for differing projector to sphere
center distances (d), we strive for a constant height (h) to be
illuminated by the projector at the sphere center. This height is a
few inches taller than strictly needed to illuminate a sphere of a
given radius (r), to allow for some mechanical shift in the projector
positioning, which we can then compensate for in software. It turns
out that

h = 2 d sin(FOV/2),

so that given the classic FOV of 18.72 degrees, and d of 6.61 sphere
radii (r),

h = 2.15 r,

and for the current sphere where r = 34 inches,

h = 73.1 inches.

So treating h as a constant, we calculate FOV by

FOV = 2 arcsin(h / (2 d)),

where h is 2.15 if d is in sphere radii, or 73.1 if d is in inches.