Edit and compile if you like:
\documentclass[border=2pt]{standalone}
% Drawing
\usepackage{tikz}
% Tikz Library
\usetikzlibrary{decorations.markings, calc, arrows.meta, positioning, shadings}
% Styles
%% Laser
\tikzset{laser/.style={thick, black}}
%% Arrow in the Middle of a Line
\tikzset{arrow inside/.style = {postaction=decorate, decoration={markings, mark=at position .62 with \arrow{stealth}}}}
\tikzset{arrow inside1/.style = {postaction=decorate, decoration={markings,
mark=at position .62 with \arrow{stealth}}}}
%% Rays
\tikzset{ray/.style={very thick, red, arrow inside}}
\tikzset{ray1/.style={very thick, red, arrow inside1}}
%% Detectors
\tikzset{detector/.style={thick, draw=black, fill=black!40}}
%% Reflector
\tikzset{reflector/.style={thick, black, left color=black!50, right color=black!50, middle color=white}}
\tikzset{reflector1/.style={thick, black, top color=black!50, bottom color=black!50, middle color=white}}
\begin{document}
%Layers
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
%
\pgfsetlayers{background, main, foreground}
\begin{tikzpicture}
% % Grid
% \draw[black!20] (0,0) grid (10,10);
% \foreach \i in {0,...,10}
% {
% \node at (-2ex,\i) {\i};
% \node at (\i,-2ex) {\i};
% }
% Coordinates
%% Laser
\coordinate (a) at (0,6);
\coordinate (a') at (0.85,6);
\coordinate (b) at (1,3);
\coordinate (c) at (0.4,4.5);
%% Rays
\coordinate (A) at (4.94,9);
\coordinate (O) at (5,4.5);
\coordinate (Ol) at (4.85,4.5);
\coordinate (Or) at (5.06,4.58);
\coordinate (Ou) at (4.94,4.7);
\coordinate (Od) at (5,4.35);
\coordinate (B) at (8,4.58);
\coordinate (C) at (4.85,0);
\coordinate (D) at (1,4.5);
% Laser
\begin{pgfonlayer}{foreground}
\draw[laser, fill=black!20] (a) rectangle (b);
\draw[laser, fill=black!40] (a') rectangle (b);
\node[rotate=90] at (c) {Laser};
\end{pgfonlayer}
% Reflectors
\begin{pgfonlayer}{background}
\draw[rounded corners, thick] (7.5,4.58-1.1) rectangle (9.5,4.58+1.1);
\end{pgfonlayer}
%
\begin{pgfonlayer}{foreground}
\draw[detector] (4.94-1,9) rectangle (4.94+1,9.2);
\draw[reflector] (4.85-1,0) rectangle (4.85+1,-0.2);
\draw[reflector1] (8,4.58-1) rectangle (8.2,4.58+1);
\end{pgfonlayer}
%
\begin{pgfonlayer}{main}
\draw[reflector, rotate around={-45:(5,4.5)}] (4,4.4) rectangle (6,4.6);
\end{pgfonlayer}
% Lens
\begin{pgfonlayer}{foreground}
\draw[thick, top color = black!50, bottom color=black!50, middle color = white, even odd rule] (2.5,4.5) ellipse (0.1cm and 0.5cm) (2.53,4.5) ellipse (0.05cm and 0.4cm);
\draw[thick, fill=black!10] (2.53,4.5) ellipse (0.05cm and 0.4cm);
\end{pgfonlayer}
% Rays
\begin{pgfonlayer}{main}
\draw[ray] (Ou) -- (A);
\draw[ray] (Or) -- (B);
\draw[ray1] (B) -- (Or);
\draw[ray] (Ol) -- (C);
\draw[ray1] (C) -- (Ol);
\draw[ray] (D) -- (Ol);
\draw[ray1] (1,4.5) -- (2.4,4.5);
%
\draw[very thick, red] (Ol) -- (Or);
\draw[very thick, red] (Ol) -- (Ou);
\end{pgfonlayer}
% Arrows
\begin{pgfonlayer}{background}
\draw[latex-latex, thick, dashed] (7.6,3) -- (9.4,3);
\end{pgfonlayer}
% Nodes
\node at (4.94,9.5) {\small Viewing screen};
\node at (5.8,3.35) {$\mathrm{M_o}$};
\node at (4.85,-0.5) {$\mathrm{M_1}$};
\node at (8.6,4.58) {$\mathrm{M_2}$};
\node at (2.5, 3.7) {$\mathrm{L}$};
\node at (4.55, 2.3) {\small$1$};
\node at (6.53, 4.9) {\small$2$};
% Refinements
\begin{pgfonlayer}{foreground}
\draw[very thick, red, line cap=round] (2.55,4.5) -- ++(1,0);
\draw[fill=red, draw=red] (Ou) circle (0.4pt);
\draw[fill=red, draw=red] (Or) circle (0.4pt);
\end{pgfonlayer}
% % Axis
% \begin{pgfonlayer}{main}
% \node[circle, draw, inner sep=0pt, minimum size=5pt, label=below :{$x$}] (S) at (0,8) {};
% \draw[fill=black] (0,8) circle (1pt);
% \draw[-latex, thick] (S) -- (1,8) node[right] {$y$};
% \draw[-latex, thick] (S) -- (0,9) node [above] {$z$};
% \end{pgfonlayer}
\end{tikzpicture}
\end{document}
Click to download: interferometer.tex
Open in Overleaf: interferometer.tex
This file is available on GitHub.
See more on the author page of Alexandros Tsagkaropolulos.
