Comment réaliser des schémas d’optique géométrique avec TikZ ?#

Pour tracer des schémas, on peut utiliser le package tikz.

Note

Pour construire le schéma, en particulier les rayons lumineux, on utilise les bibliothèques TikZ decorations.markings et arrows.meta.

Leur fonctionnement et leur intérêt pour ces schémas sont détaillés dans la question Comment tracer une ligne avec une flèche au milieu ?.

Pour bien comprendre cette réponse, il est nécessaire d’être familier avec les bases de tikz, en particulier la gestion des coordonnées (polaires et cartésiennes) ainsi que la gestion des coordonnées relatives. Si ce n’est pas le cas, on pourra se reporter à sa documentation, ou à l’excellent TikZ pour l’impatient.

Astuce

Il existe une bibliothèque TikZ spécialement pour les schémas d’optique qui semble fonctionner: circuitikz. Mais elle n’a pas été mise à jour depuis 2017 et n’est pas référencée dans la documentation officielle de tikz. Elle ne sera donc pas abordée dans cette réponse.

1.  Construction d’une image réelle par une lentille mince convergente#

1.1.  Le code#

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{decorations.markings, arrows.meta}
\usepackage{babel}

\begin{document}

\begin{tikzpicture}
	% Définitions des styles 
	\tikzset{simple/.style={postaction={decorate,decoration={
		markings, mark= at position .5with{\arrow{Straight Barb[] };}}}}}
	\tikzset{double/.style={postaction={decorate,decoration={
        markings,mark=at position .5 with{\arrow{Straight Barb[] Straight Barb[]};}}}}}
	\tikzset{triple/.style={postaction={decorate,decoration={
        markings,mark=at position .5 with{\arrow{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}
	
	% Figure
	%% paramètres modifiables 
	\newcommand \tailleL {3.5}; % taille de la lentille 
	\newcommand \tailleOb {2.8}; % hauteur de l'objet 
	\newcommand \xA {-5}; % position de l'objet 
	\newcommand \f {2}; % focale de la lentille 
	%% Calculs
	\newcommand \xAA {(\xA*\f)/(\xA+\f)}; % position de l'image 
	\newcommand \tailleIm {(\xAA*\tailleOb)/\xA}; % hauteur de l'image
	%% Définitions des points
	\coordinate (O) at (0,0);
	\coordinate (F') at (\f,0);
	\coordinate (A) at (\xA,0);
	\coordinate (B) at (\xA,\tailleOb);
	\coordinate (A') at ({\xAA},0);
	\coordinate (B') at ({\xAA},{\tailleIm});
	%% Lentille
	\draw (O) node[below left] {O}; 
	\draw (\f,-2pt) --++ (0,4pt) node[above, xshift=4pt] {F'}; 
	\draw ({-\f},2pt) --++ (0,-4pt) node[below] {F}; 
	\draw[ultra thick ,<->,] (0,-\tailleL)--(0,\tailleL) 
		node[above, yshift=-.1cm]{Lentille};
	%% Axe optique
	\draw[ultra thick,->](\xA-0.5,0)--({\xAA+2.5},0);
	%% Objet
	\draw [ultra thick,->, >=latex](A) node[below]{A} -- (B) node [above]{B};
	%% Image
	\draw [ultra thick,->,>=latex](A') node[above right]{A'} 
		--++(0,{\tailleIm}) 
		node [below,right]{B'};
	%% Rayons
	%%% Parallèle à l’axe optique
	\draw[red,simple,thick] (B)--(0,\tailleOb);
	\draw[red, simple,thick] (0,\tailleOb)--(B'); 
	%%% Passant par F
	\draw[green!50!black,triple,thick] (B)--(0,{\tailleIm});
	\draw[green!50!black,triple,thick] (0,{\tailleIm})--(B');
	%%% Passant par F'
	\draw[blue,double,thick] (B)--(O);
	\draw[blue,double, thick] (O)--(B'); 
\end{tikzpicture}

\end{document}

1.2.  Explications#

La définition des styles de tikz est détaillée dans Comment tracer une ligne avec une flèche au milieu ?.

On comprend ici q’ils sont utilisés pour les trois rayons.

Note

Ici les styles sont définis dans l’environnement tikzpicture, ils ne seront donc valables que dans cet environement et devront être redéfinis pour une autre figure.

Si on les définit en dehors de l’environnement, ils pourront être utilisés dans toutes les figures du document.

Pour le tracé du graphique, après avoir choisi la taille de la lentille ainsi que la position et la taille de l’objet, on calcule celles de l’image.

Attention

Les « variables » qui sont « calculées », doivent être mises entre accolades dans les commandes \draw ou \coordinate pour que la compilation réussisse.

Dans le cas présent \tailleOb n’en nécessite pas tandis que \tailleIm ou \xAA si.

On définit ensuite les différents points d’intérêt pour le tracé.

Note

Il est possible de réduire la longueur du code, mais cette proposition a le mérite d’être explicite pour les débutant·es et (on l’espère) facilement modifiable et adaptable.

1.3.  Ajout d’une grille et d’une échelle#

Sur le schéma précédent (et tous les suivants) on peut indiquer une échelle et, en commentant certaines lignes faire un schéma à compléter.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{decorations.markings, arrows.meta}
\usepackage{babel}

\begin{document}

\begin{tikzpicture}
	% Définitions des styles 
	\tikzset{simple/.style={postaction={decorate,decoration={
		markings, mark= at position .5with{\arrow{Straight Barb[] };}}}}}
	\tikzset{double/.style={postaction={decorate,decoration={
        markings,mark=at position .5 with{\arrow{Straight Barb[] Straight Barb[]};}}}}}
	\tikzset{triple/.style={postaction={decorate,decoration={
        markings,mark=at position .5 with{\arrow{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}

	% Figure
	%% Graduations
	%%% Dimensions du repere
	\newcommand\xmin {-6}
	\newcommand\xmax {6}
	\newcommand\ymin {-4}
	\newcommand\ymax {4}
	%%% Grilles
	\draw [step=0.1cm,gray!20,ultra thin]  (\xmin,\ymin) grid (\xmax,\ymax);
	\draw [step=0.5cm,gray, thin] (\xmin,\ymin) grid (\xmax,\ymax);
	\draw [step=1cm,gray, thick] (\xmin,\ymin) grid (\xmax,\ymax);
	\draw [step=5cm,gray,very thick] (\xmin,\ymin) grid (\xmax,\ymax);
	%% Echelle
	\newcommand \xC {4}
	\newcommand \yC {2}
	\coordinate (C) at (\xC,\yC);
	\draw[->, ultra thick, >=latex] (C)--(\xC,\yC+1) 
	node[midway,left] {1~cm};
	\draw[->, ultra thick, >=latex] (C)--(\xC+1,\yC) 
		node[midway,below] {10~cm};
	%% paramètres modifiables 
	\newcommand \tailleL {3.5}; % taille de la lentille 
	\newcommand \tailleOb {2.8}; % hauteur de l'objet 
	\newcommand \xA {-5}; % position de l'objet 
	\newcommand \f {2}; % focale de la lentille 
	%% Calculs
	\newcommand \xAA {(\xA*\f)/(\xA+\f)}; % position de l'image 
	\newcommand \tailleIm {(\xAA*\tailleOb)/\xA}; % hauteur de l'image
	%% Définitions des points
	\coordinate (O) at (0,0);
	\coordinate (F') at (\f,0);
	\coordinate (A) at (\xA,0);
	\coordinate (B) at (\xA,\tailleOb);
	\coordinate (A') at ({\xAA},0);
	\coordinate (B') at ({\xAA},{\tailleIm});
	%% Lentille
	\draw (O) node[below left] {O}; 
	\draw (\f,-2pt) --++ (0,4pt) node[above, xshift=4pt] {F'}; 
	\draw ({-\f},2pt) --++ (0,-4pt) node[below] {F}; 
	\draw[ultra thick ,<->,] (0,-\tailleL)--(0,\tailleL) 
		node[above, yshift=-.1cm]{
	Lentille};
	%% Axe optique
	\draw[ultra thick,->](\xA-0.5,0)--({\xAA+2.5},0);
	%% Objet
	\draw [ultra thick,->, >=latex](A) node[below]{A} -- (B) 
		node [above]{B};
	%% Image
	\draw [ultra thick,->,>=latex](A') node[above right]{A'} 
		--++(0,{\tailleIm}) node [below,right]{B'};
	%% Rayons
	%%% Parallèle à l’axe optique
	\draw[red,simple,thick] (B)--(0,\tailleOb);
	\draw[red,simple,thick] (0,\tailleOb)--(B'); 
	%%% Passant par F
	\draw[green!50!black,triple,thick] (B)--(0,{\tailleIm});
	\draw[green!50!black,triple,thick] (0,{\tailleIm})--(B');
	%%% Passant par F'
	\draw[blue,double,thick] (B)--(O);
	\draw[blue,double, thick] (O)--(B'); 
\end{tikzpicture}

\end{document}

2.  Construction d’une image virtuelle par une lentille mince convergente#

2.1.  Le code#

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{decorations.markings, arrows.meta}
\usepackage{babel}

\begin{document}
% Définition des styles
\tikzset{simple/.style={postaction={decorate,decoration={
        markings, mark= at position .75 with{\arrow{Straight Barb[] };}}}}}
\tikzset{double/.style={postaction={decorate,decoration={
        markings,mark=at position .75 with{\arrow{Straight Barb[] Straight Barb[]};}}}}}
\tikzset{triple/.style={postaction={decorate,decoration={
        markings,mark=at position .75 with{\arrow{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}


\begin{tikzpicture}
    % paramètres modifiables 
    \newcommand \tailleL {4}; 
    \newcommand \tailleOb {1.2};
    \newcommand \xA {-2.5}; % position de l'objet
    \newcommand \f{4}; % focale de la lentille
    % calculs 
    \newcommand \xAA {(\xA*\f)/(\xA+\f)}; % position de l'image
    \newcommand \tailleIm {(\xAA*\tailleOb)/\xA}; % taille de l'image
    % Définitions  des points
    \coordinate (O) at (0,0);
    \coordinate (F') at (\f,0);
    \coordinate (F) at (-\f,0);
    \coordinate (A) at (\xA, 0);
    \coordinate (B) at (\xA, \tailleOb);
    \coordinate (A') at ({\xAA}, 0);
    \coordinate (B') at ({\xAA}, {\tailleIm}) ;
    % Schéma 
    \draw (O) node[below left]{O};
    \draw (\f,-2pt) --++ (0,4pt) node[above] {F'};
    \draw ({-\f},2pt) --++ (0,-4pt) node[below] {F};
    \draw[shift={(O)},ultra thick ,<->,](0,-\tailleL)--(0,\tailleL) 
		node[above]{ Lentille};
    % axe optique
    \draw[thin,->]({\xAA*1.2},0)--({-\xAA*1.2},0);
    % objet
    \draw[thick,->,>=latex] (A) node[below]{A} -- (B) node [above]{B};
    % image
    \draw [thick,->,>=latex](A') node[below=0.04cm]{A'}--++(0,{\tailleIm}) 
		node [below,left]{B'};
    % rayons
	%% Passant par O
    \draw[blue,double] (B)--(O);
    \draw[blue,dashed] (O)--(B');
    \draw[blue, double] (O)--({-\xAA},{-\tailleIm});
    %% Passant par F
    \draw[green!50!black,triple] (B)--(0,{\tailleIm});
    \draw[green!50!black, dashed](0,{\tailleIm})--(B');
    \draw[green!50!black,triple] (0,{\tailleIm})--(2*\f,{\tailleIm});
    \draw[green!50!black,dashed] (-\f,0)--(B);
    % Parallèle à l’axe optique
    \draw[red,simple] (B)--(0,\tailleOb); 
    \draw[red,dashed] (0,\tailleOb)--(B');
    \draw[red, simple] (0,\tailleOb)--(2*\f, -\tailleOb);
\end{tikzpicture}
\end{document}

2.2.  Explications#

Si la construction de l’image réelle est bien comprise, ce code ne devrait pas poser de difficultés. Les calculs sont les mêmes, et on a simplement ajouté le prolongement des rayons en pointillés.

Note

Dans la défintion des styles, on peut choisir la position des flèches sur la ligne. Ici, on a choisi de les placer au 3/4 de la longeur du chemin pour plus de visibilité.

On pourra essayer de les remettre au milieu comme la partie précédente avec mark at position .5 afin d’observer la différence.

3.  Construction de l’image d’un objet à l’infini par une lentille mince convergente#

3.1.  Le code#

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{decorations.markings, arrows.meta}
\usepackage{babel}

\begin{document}
% Définition des styles
\tikzset{simple/.style={postaction={decorate,decoration={
	markings, mark= at position .8with{\arrow{Straight Barb[] };}}}}}

\tikzset{simpleInv/.style={postaction={decorate,decoration={
	markings,mark=at position .8 with{\arrowreversed{Straight Barb[]};}}}}}

\tikzset{double/.style={postaction={decorate,decoration={
	markings,mark=at position .8 with{\arrow{Straight Barb[] Straight Barb[]};}}}}}

\tikzset{doubleInv/.style={postaction={decorate,decoration={
	markings,mark=at position .2 with{\arrowreversed{Straight Barb[] Straight Barb[]};}}}}}

\tikzset{triple/.style={postaction={decorate,decoration={
	markings,mark=at position .5 with{\arrow{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}

\tikzset{tripleInv/.style={postaction={decorate,decoration={
	markings,mark=at position .5 with{\arrowreversed{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}

\begin{tikzpicture}
    % Paramètres modifiables 
	\newcommand\tailleL{3}; 
	\newcommand\tailleIm{-1}
	\newcommand\f{2};
    % Calculs 
	\newcommand \angleB {\fpeval{atand(-1*\tailleIm / \f)}}
    % Définitions  des points
	\coordinate (O) at (0,0);
	\coordinate (F') at (\f,0); 
	\coordinate (A') at (\f,0);
	\coordinate (B') at (\f,\tailleIm);
    % Schéma 
	%% plan focal image
	\draw[gray!80!white, dashed] (\f,{-\tailleL})
		node[below]{\textcolor{gray!80!white}{Plan focal image}}
		-- (\f,{\tailleL});
    %% Lentille
	\draw[ultra thick ,<->,>=latex] (0,-\tailleL)--(0,\tailleL)
		node[above]{Lentille} node[midway, below left]{O};
	%% Axe optique
	\draw[thin,->](-\f*4,0)--(\f*2,0);
    %% Image
	\draw [thick,->,>=latex](A')--++(0,\tailleIm) node [below,right]{B'};
    %% Rayons
	%%% issus de A
	\draw[blue, simple] (-\f*3, \tailleL/2) node [above, left, blue]{$A_\infty$}
		-- (0, \tailleL/2);
	\draw[blue, simple] (0,\tailleL/2) -- (A');
	\draw[blue, simple] (-\f*3, -\tailleL/2) node [above, left, blue]{$A_\infty$}
		--(0, {-\tailleL/2});
	\draw[blue, simple] (0, -\tailleL/2) --(A') node[above right]{A};
    %%% issus de B
	\draw[red, doubleInv] (B') -- (O);
	\draw[red, doubleInv] (O) --++ (180-\angleB:7) node [above, left, red]{$B_\infty$};
	\draw[red, doubleInv] (B') -- (0, \tailleIm);
	\draw[red, doubleInv] (0, \tailleIm) --++ (180-\angleB:7)
	node [above, left, red]{$B_\infty$};
\end{tikzpicture}

\end{document}

3.2.  Explications#

Pour ce schéma, on commence par fixer la taille de l’image et la focale de la lentille.

La position de l’image est définie de fait dans cette situation par la focale de la lentille.

Les rayons issus de A ne posent pas de problèmes à tracer.

Important

L’astuce ici est de calculer l’angle entre le rayon passant O et l’axe optique puis de s’en servir pour tracer les rayons issus de B « à l’envers », c’est à dire en partant de B’. C’est pour cela qu’on a créé trois nouveaux styles dans lesquels les flèches sont à l’envers.

Note

On remarque qu’en utilisant les coordonées polaires, il n’est pas nécessaire de mettre les « variables » calculées, ici \angleB, entre accolades.

4.  Construction d’une image à l’infini par une lentille mince convergente#

4.1.  Le code#

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{decorations.markings, arrows.meta}
\usepackage{babel}

\begin{document}

% Définition des styles
\tikzset{simple/.style={postaction={decorate,decoration={
	markings, mark= at position .8with{\arrow{Straight Barb[] };}}}}}

\tikzset{double/.style={postaction={decorate,decoration={
	markings,mark=at position .8 with{\arrow{Straight Barb[] Straight Barb[]};}}}}}

\tikzset{triple/.style={postaction={decorate,decoration={
	markings,mark=at position .5 with{\arrow{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}

\begin{tikzpicture}
    % Paramètres modifiables 
	\newcommand\tailleL{3} 
	\newcommand\tailleOb{1}
	\newcommand\f{2}
    % Calculs 
	%% Angle entre les rayons issus de B et l’axe optique
	\newcommand \angleB {\fpeval{atand(\tailleOb / \f)}} 
    % Définitions des points
	\coordinate (O) at (0,0); 
	\coordinate (F) at (-\f,0); 
	\coordinate (A) at (-\f,0);
	\coordinate (B) at (-\f,\tailleOb);
    % Schéma 
	%% Lentille
	\draw[ultra thick ,<->,>=latex] (0,-\tailleL)--(0,\tailleL)
		node[above]{Lentille};
    %% Axe optique
	\draw[thin,->](-\f*2,0)--(\f*2.5,0);
	%% Placements des points
	\draw (O) node[below left] {O}; 
	\draw (-\f,4pt) --++ (0,-4pt) node[below left] {F}; 
	\draw (\f,4pt) --++ (0,-4pt) node[above right, yshift=3pt]{F'};
    %% Objet
	\draw[thick, ->, >=latex] (A) node[below right]{A'} -- (B) node[above right]{B};
    %% Rayons issus de B
	\draw[blue, simple] (B) -- (O);
	\draw[blue, simple] (O) -- (-\angleB:4)node[right]{$B_\infty$};
	\draw[red, double] (B) -- (0,\tailleOb);
	\draw[red, double] (0, \tailleOb) --++ (-\angleB:4)node[right]{$B_\infty$};
	%% Prolongement des rayons
    \draw[red, dashed] (0, \tailleOb) --++ (180 - \angleB:4);
    \draw[blue, dashed] (B) --++ (180 - \angleB:2);
\end{tikzpicture}

\end{document}

4.2.  Explications#

Ici l’astuce est de calculer l’angle entre le rayon bleu et l’axe optique.

Ensuite, on utilise cet angle, et les coordonnées polaires et relatives pour tracer la deuxième partie du rayon rouge, ainsi que le prolongement des rayons.

5.  La lunette astronomique#

5.1.  Le code#

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\usepackage{tikz}
\usetikzlibrary{decorations.markings, arrows.meta}
\usepackage{babel}

\begin{document}

% Définition des styles
\tikzset{simple/.style={postaction={decorate,decoration={
	markings, mark= at position .8with{\arrow{Straight Barb[] };}}}}}

\tikzset{simpleInv/.style={postaction={decorate,decoration={
	markings,mark=at position .8 with{\arrowreversed{Straight Barb[]};}}}}}

\tikzset{double/.style={postaction={decorate,decoration={
	markings,mark=at position .8 with{\arrow{Straight Barb[] Straight Barb[]};}}}}}

\tikzset{doubleInv/.style={postaction={decorate,decoration={
	markings,mark=at position .2 with{\arrowreversed{Straight Barb[] Straight Barb[]};}}}}}

\tikzset{triple/.style={postaction={decorate,decoration={
	markings,mark=at position .5 with{\arrow{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}

\tikzset{tripleInv/.style={postaction={decorate,decoration={
	markings,mark=at position .5 with{\arrowreversed{Straight Barb[] Straight Barb[] Straight Barb[]};}}}}}

\begin{tikzpicture}
  \newcommand{\oeil}[1][]
  {
    \draw[#1,thick,rounded corners] (-15:1)--(0,0)--(15:1);
    \draw[#1] (-15:0.8) arc (-15:15:0.8);
    \draw[#1,fill=black] (0:0.75) ellipse(0.05 and 0.1);
  } 
  % Paramètre modifiables
  \newcommand \tailleLUn {3}
  \newcommand \tailleLDe {3}
  \newcommand \fUn {4}; % focale de l’objectif
  \newcommand \fDe {2}; % focale de l’oculaire
  \newcommand \tailleIm {1.1} % taille image intermédiaire
  \newcommand \RDeAO {\fpeval{ \fUn / 2 }} %intersection R2 et axe optique

  % Calculs
  \newcommand \posLDe {\fUn + \fDe} % position L2
  \newcommand \aUn {\fpeval{atand(\tailleIm / \fUn)}} % alpha 1
  \newcommand \aDe {\fpeval{atand(\tailleIm / \fDe)}} % alpha 2
  \newcommand \RUnLDe {\fpeval{ ( \posLDe ) / \fUn * \tailleIm }} % rayon 1 sur L2
  %% angle du rayon 2 avec l’axe optique
  \newcommand \aRDe {\fpeval { atand(\tailleIm / ( \fUn - \RDeAO))}} 
  %% hauteur de l’intersection entre les rayons et les lentilles
  \newcommand \RDeLUn {\fpeval{ tand(\aRDe) * \RDeAO}} % rayon 2 sur L1
  \newcommand \RDeLDe {\fpeval{ tand(\aRDe) * (\posLDe - \RDeAO)}} % rayon 2 sur L2

  % Définition des points
  \coordinate (O1) at (0,0);
  \coordinate (O2) at (\posLDe,0);
  \coordinate (FUn) at ({-\fUn},0);
  \coordinate (FpUn) at ({\fUn},0);
  \coordinate (B1) at (\fUn, {-\tailleIm});
  \coordinate (R1L2) at (\posLDe, {-\RUnLDe}); % arrivée du rayon 1 sur L2
  \coordinate (R2L1) at (0, \RDeLUn); %rayon 2 sur L1
  \coordinate (R2L2) at (\posLDe, {-\RDeLDe}); %arrivé rayon 2 sur L2
  
  % Tracés
  %% Image 1
  \draw[thick, ->, >=latex] (FpUn) node[below left] {$F'_1$} 
    node[above left]{$F_2$} -- (B1)
  node[below left]{$B_1$};
  
  \draw[thin,->](-2.5,0) -- (13,0);
  \draw[shift={(O1)},ultra thick,<->] (0, {-\tailleLUn}) -- (0,\tailleLUn)
  node[above]{$L_1$} node[midway, below left]{$O_1$};
  \draw[shift={(O2)},ultra thick,<->] (0, {-\tailleLDe}) -- (0,\tailleLDe)
  node[above]{$L_2$} node[midway, below right]{$O_2$};

  %% Rayon 1 issu de B (passant par O1)
  \draw[simpleInv, blue] (O1) -- (180 -\aUn : 4);
  \draw[simpleInv, blue] (B1) -- (O1);
  \draw[blue] (B1) -- (R1L2);
  \draw[simple, blue] (R1L2) --++ (\aDe : 6);
  \draw[dashed, blue] (R1L2) --++ (180 + \aDe :5) 
	node[below left]{$B_{2\infty}$};

  %% Rayon 2 issu de B (quelconque)
  \draw[doubleInv, red] (B1) -- (R2L1); 
  \draw[doubleInv, red] (R2L1) --++ (180-\aUn:4);
  \draw[red] (B1) -- (R2L2);
  \draw[double, red] (R2L2) --++ (\aDe:6);
  \draw[dashed, red] (R2L2) --++ (180 + \aDe:5) 
	node[below left]{$B_{2\infty}$};

  %% Trait de construction
  \draw[dashed] (B1) -- (O2) --++ (\aDe:6);

  %% Angles
  \draw (-1.5,0) arc (180 : 180 - \aUn : 1.5) node[midway, left] {$\alpha_1$};
  \draw[shift={(O2)}] (-1,0) arc (180 : 180 + \aDe : 1) 
	node[midway, left] {$\alpha_2$};
  \draw[shift={(O2)}] (1,0) arc (0 :  \aDe : 1) 
	node[midway, right] {$\alpha_2$};
  % oeil -- à placer manuellement
  \oeil[shift={(12,1.5)},rotate={180 + \aDe },scale=0.75] ;
\end{tikzpicture}

\end{document}

5.2.  Explications#

Pour la lunette astronomique, on reprend sensiblement les mêmes méthodes que pour les parties précédentes.

Dans ce cas, l’astuce concerne le rayon rouge et l’ordre dans lequel on fait la construction :

  • on fixe d’abord le point d’intersection (\RDeAO dans le code) entre ce rayon et l’axe optique ainsi que la taille de l’image intermédiaire;

  • comme on connait également la position de \(F_2\), on peut calculer la distance entre ce point et \(F_2\);

  • on en déduit la valeur de l’angle entre ce rayon et l’axe optique (\aDe);

  • avec cet angle, on peut calculer les points d’intersection entre ce rayon et chaque lentille (\RDeLUn et \RDeLDe);

  • les calculs de \(\alpha_1\) et \(\alpha_2\) se font sans difficultés puisqu’on a fixé la taille de l’image intermédiaire;

  • ce qui permet de terminer le tracé du rayon rouge : avec la partie avant la lentille 1 et celle après la lentille.

Note

Pour le tracé des angles, on pourra se référer aux pages 16 et 17 de TikZ pour l’impatient.


Sources

physagreg.fr