L’objectif de cet exercice est de reproduire par traitement d’image, à l’aide d’un programme Python, ce qu’on verrait sur un écran situé derrière une lentille convergente pour différentes positions de l’écran ; on fournit au programme un fichier image et des paramètres (le diamètre de la lentille $D$, sa distance focale $f’$, la distance lentille-objet $\overline{OA}$, la distance lentille-écran $\overline{OE}$, la taille de l’objet $\overline{AB}$), et il produit une image correspondant à ce qu’on verrait sur l’écran.
À un point objet ne correspond plus sur l'écran un point image mais une tâche de diamètre $d$.
$\displaystyle \overline{OA'} = \frac{\overline{OA}\cdot f'}{\overline{OA}+f'}$
$\displaystyle \overline{A'B'} = \overline{AB}\times\frac{\overline{OA'}}{\overline{OA}}$
- $\displaystyle d = D\times\frac{|\overline{OE}-\overline{OA'}|}{\overline{OA'}}$
- Le schéma nous montre que $H-A'B'$ est proportionnel à $|\overline{OE}-\overline{OA'}|$ $\Rightarrow$ $\displaystyle \frac{H-A'B'}{|\overline{OE}-\overline{OA'}|} = cste$.
Et comme lorsque $\overline{OE}=0$, $H=D$, on a :
$\displaystyle \frac{H-A'B'}{|\overline{OE}-\overline{OA'}|} = \frac{D-A'B'}{|0-\overline{OA'}|}$
On en déduit que $\displaystyle H = A'B'+\frac{D-A'B'}{\overline{OA'}}\times |\overline{OE}-\overline{OA'}|$
Le programme Python est déjà écrit à l’exception de la fonction centrale qui contient la physique du problème :
def calcule_taille(D:float, fprime:float, OA:float, OE:float, AB:float) -> tuple:
"""
Entrées:
D: diamètre de la lentille (en m)
fprime: 0 distance focale de la lentille (en m)
OA: distance lentille-objet (en m)
OE: distance lentille-écran (en m)
AB: taille objet (en m)
Sorties:
tuple (H,d) avec:
H: hauteur de la figure sur l'écran (en m)
d: diamètre des tâches sur l'écran (en m)
"""
# CODE À COMPLÉTER
Exemple de solution :def calcule_taille(D, fprime, OA, OE, AB): OAprime = fprime * OA / (fprime + OA) d = (abs(OE - OAprime) / OAprime * D) AprimeBprime = AB * OAprime / OA H = abs(AprimeBprime) + (D - abs(AprimeBprime)) / OAprime * (abs(OE - OAprime)) return H, d