Photographie

TODO

  • ...

In [ ]:
%matplotlib inline
import math
import numpy as np
import matplotlib.pyplot as plt

import ipywidgets
from ipywidgets import interact

Constantes

Sources:

  • Obtenez le maximum du Canon EOS 80D, Vincent Burgeon, ed. Dunod, p.14

In [ ]:
CAPTEUR_DICT = {"APS-C Canon (15x23 mm)": (14.9, 22.3),
                "Full frame (24x36 mm)": (24, 36)}

Angle de champ

$$\text{angle} = 2 \arctan \left( \frac{\frac{D}{2}}{f} \right) = 2 \arctan \left( \frac{D}{2f} \right)$$

avec $D$ la dimension (horizontale, verticale ou diagonale) du capteur et $f$ la focale de l'objectif.

Sources:

  • Tous photographes !, Jacques Croizer, ed. Dunod, p.247

In [ ]:
def angle(focale, capteur):
    angle = 2. * math.atan(float(capteur)/(2. * focale))
    return angle

In [ ]:
@interact(focale=(8, 300, 1), capteur=CAPTEUR_DICT)
def square(focale, capteur):
    print("Capteur: {}x{} mm".format(capteur[0], capteur[1]))
    print("Focale: {} mm".format(focale))
    angle_verticale = round(math.degrees(angle(focale, capteur[0])), 1)
    angle_horizontale = round(math.degrees(angle(focale, capteur[1])), 1)
    print("Angle horizontale: {}°".format(angle_horizontale))
    print("Angle verticale: {}°".format(angle_verticale))

Distance au sujet

TODO

taille_horizontale_sujet taille_verticale_sujet focale capteur

return: distance

Profondeur de champ

TODO