$$ \tan\left(\frac{IFOV}{2}\right)=\frac{\frac{res}{2}}{altitude} $$

Meaning...

$$ res = 2\cdot{}altitude\cdot \tan\left(\frac{IFOV}{2}\right) $$

In [1]:
import math

def ifov_to_m_pix(ifov, alt=400e3):
    """Calculate footprint size from IFOV and altitude.
    
    Parameters
    ----------
    ifov : float
        IFOV in micro-rad
    alt : float
        Altitude of S/C in meters
    
    Returns
    -------
    Footprint size in meters
    """
    return 2 * alt * math.tan(ifov*1e-6/2)

In [5]:
ifov_to_m_pix(1, 100e3)


Out[5]:
0.10000000000000832

In [6]:
%matplotlib inline

In [13]:
x = np.linspace(0, .1, 100)
plt.plot(x, np.tan(x)-x)


Out[13]:
[<matplotlib.lines.Line2D at 0x11748f748>]

In [ ]: