Monitor Match Mathematics

Here is an expose of the type of mathematics used when converting between different sensitivities:


Let $r \in \left[0,1\right]$ be the monitor match ratio, $\theta$ be the FOV you’re converting from, $\theta’$ be the FOV you’re converting to, $\alpha$ and $\alpha’$ be the angle of the match ratio in each FOV respectively.

We form 4 trangles, where $f$ is the focal length i.e. the base of each triangle:

$$ \tan \alpha = \frac{r}{f},\quad \tan \alpha’ = \frac{r}{f’}$$ $$ \tan \frac{\theta}{2} = \frac{1}{f},\quad \tan \frac{\theta’}{2} = \frac{1}{f’}$$

Solving for $r$

$$ r = \frac{\tan \alpha}{\tan \frac{\theta}{2}} = \frac{\tan \alpha’}{\tan \frac{\theta’}{2}}$$ $$ \implies \alpha = \arctan \left( r\cdot\frac{\theta}{2} \right), \quad \alpha’ = \arctan \left( r\cdot\frac{\theta’}{2} \right)$$

We know that sensitivity is proportional to degrees per count. Let’s call sensitivity at each FOV $s$ and $s’$, the proportionality constant $k$, and number of counts $N$ and $N’$.

$$ s = k\cdot \frac{\alpha}{N},\quad s’ = k\cdot \frac{\alpha’}{N’}$$

We know we want the distance our mouse moves to the point $r$ on the screen to be the same, therefore $N’=N$ and we can solve for $s'$

$$ s’ = \frac{\alpha’}{\alpha} s = \frac{\arctan \left( r\frac{\theta’}{2} \right)}{\arctan \left( r\frac{\theta}{2} \right)} s$$

Error Analysis

First, given a point $x$ on the screen, and a match ratio $r$ we can calculate how many counts we will actually need to move to $x$ given the match ratio.

$$\text{WillMove}(x,r,\theta,\theta’) \vcentcolon= \frac{\tan^{-1}\left(r\tan \left(\frac{\theta }{2}\right)\right) \tan ^{-1}\left(x \tan \left(\frac{\theta’}{2}\right)\right)}{\tan ^{-1}\left(r \tan \left(\frac{\theta’}{2}\right)\right)}$$

$$\text{WantMove}(x,r,\theta,\theta’) \vcentcolon= \tan ^{-1}\left(x \tan \left(\frac{\theta }{2}\right)\right)$$

$$\text{Absolute Error} \vcentcolon= \text{WantMove}(x,r,\theta,\theta’) - \text{WillMove}(x,r,\theta,\theta’)$$

$$\text{Percentage Error} \vcentcolon= 1 - \frac{\text{WillMove}(x,r,\theta,\theta’)}{\text{WantMove}(x,r,\theta,\theta’)}$$

Converting from a Hipfire FOV to a Scoped FOV, we get the following graph. Above the x-axis, we get it feeling too fast, blow the x-axis, we get it feeling too slow (Assuming you were doing the motion in one instantanous flick from normalised screen position 0 -> x) SensError

An interactive version can be found here:

Can then overlay with a 2D Density plot onto a scope, here with 0.25 vertical as the match percentage SensError