Edit and compile if you like:
\documentclass[border=2pt]{standalone} %Drawing \usepackage{tikz} \tikzset{>=latex} \usetikzlibrary{calc, decorations.markings} %Styles %%Arrow in the Middle \tikzset{arrow inside/.style = {postaction=decorate,decoration={markings,mark=at position 0.52 with \arrow{stealth}}}} % Colors \definecolor{glass}{cmyk}{0.2,0,0,0} % Newcommand %% Mid Line Label \newcommand{\midlabelline}[3]{ \node (midlabel) at ($ (#1)!.5!(#2) $) {#3}; \draw[<-] (#1) -- (midlabel); \draw[->] (midlabel) -- (#2); } \begin{document} \begin{tikzpicture}[scale=2] % Grid % \draw[help lines] (-1,-2) grid (4,2); % \foreach \i in {0,0.5,1,1.5,...,5} % { % \node at (\i,-2ex) {$\i$}; % } % Lens \path[fill=glass, draw=black, line width = 0.6] (1,-2) .. controls (0.8,0) .. (1,2) .. controls (1.2,0) .. (1,-2); % Rays \draw[black!40, line width = 0.6, arrow inside] (0,1.25) -- (1,1.25) node[above, pos=0.5, black] {\small light ray}; % \draw[red, line width = 0.6, arrow inside] (1,1.25) -- (3.7,-0.3); \draw[green, line width = 0.6, arrow inside] (1,1.25) -- (3,-0.3); \draw[blue, line width = 0.6, arrow inside] (1,1.25) -- (2.3,-0.3); % \draw[black!40, line width = 0.6, arrow inside] (0,-1.25) -- (1,-1.25) node[above, pos=0.5, black] {\small light ray}; % \draw[red, line width = 0.6, arrow inside] (1,-1.25) -- (3.7,0.3); \draw[green, line width = 0.6, arrow inside] (1,-1.25) -- (3,0.3); \draw[blue, line width = 0.6, arrow inside] (1,-1.25) -- (2.3,+0.3); % Axis \draw[dashed, black!60] (1,-2) -- +(0,4); \draw[dashed, black!60] (-0.5,0) -- (4.3,0); % Focal Points \midlabelline{1,-1.7}{2.615,-1.7}{$f_\mathrm{green}$} \draw[dashed] (2.615,-1.7) -- (2.615,0); % \midlabelline{1,-2}{3.185,-2}{$f_\mathrm{red}$} \draw[dashed] (3.185,0) -- (3.185,-2); % \midlabelline{1,-1.4}{2.049,-1.4}{$f_\mathrm{blue}$} \draw[dashed] (2.049,-1.4) -- (2.049,0); \end{tikzpicture} \end{document}
Click to download: lens-colors.tex
Open in Overleaf: lens-colors.tex
This file is available on GitHub.
See more on the author page of Alexandros Tsagkaropolulos.