# Biconcave lens in Tikz

Hi everybody and merry Christmas (even if it's late lol). I wish to draw a biconcave lens like the one below, but I really don't manage.

This is what I managed to write, but it's not the result I wish to get.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=0.9]
\pgfmathsetmacro{\lensHeight}{1.8}

\draw [fill=lightgray!50, very thick]  (0,\lensHeight)
arc[start angle=-\startAngle,delta
--++ (0:2)
-- cycle;
\end{tikzpicture}
\end{document}

• Please, give a fully compilable code. Dec 29, 2019 at 16:56
• Do the curves have to be arcs? Dec 29, 2019 at 17:26
Dec 29, 2019 at 17:33
• You wrote the hard part. What's really bothering you now? Dec 29, 2019 at 17:39
• Holy, I was editing the wrong parameter and i didn't even notice... I should not work that hard. Problem solved
Dec 29, 2019 at 17:47

This draws such lenses. It allows you to pick the radii differently, but of course you can set them equal. The locations of the focal points are computed with the lensmaker equation. Instead of macros pgf keys are used. The parameters are the height h, the thickness d, the refractive index n and the radii R1 and R2. The parameter alpha just indicates the slope of the dashed cyan lines.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[bullet/.style={circle,black,fill,inner sep=1.8pt},
every label/.append style={black},
declare function={lensf(\n,\d,\Rone,\Rtwo)=1/(
(\n-1)*(1/\Rone-1/\Rtwo+(\n-1)*\d/(\n*\Rone*\Rtwo)));
startangle(\h,\r)=asin(\h/\r);},
lens/.cd,n/.initial=1.7,R1/.initial=3.6,R2/.initial=-3.9,d/.initial=0.6,
h/.initial=1.8,alpha/.initial=20]
%short cut
\def\pv#1{\pgfkeysvalueof{/tikz/lens/#1}}

\draw [fill=lightgray!50, very thick]
({-\pv{d}/2-cos(90-startangle(\pv{h},\pv{R1}))},\pv{h})
arc[start angle={startangle(\pv{h},\pv{R1})},delta
--++ ({\pv{d}+cos(90-startangle(\pv{h},\pv{R1}))+cos(90+startangle(\pv{h},\pv{R2}))},0)
arc[start angle={-startangle(\pv{h},\pv{R2})},delta
-- cycle;
\draw[very thick,dashed] (0,-1.2*\pv{h}) --  (0,1.2*\pv{h});
\draw[very thick] (-1.2*\pv{R1}-\pv{d}/2,0) -- (-1.2*\pv{R2}+\pv{d}/2,0);
\draw[cyan,dashed,thick] ({-\pv{d}/2-\pv{R1}},0)
node[bullet,label=below:$C_1$]{}
-- node[sloped,above]{$R_1$} ++ (\pv{alpha}:\pv{R1});
\path ({-lensf(\pv{n},\pv{d},\pv{R1},\pv{R2})},0)
node[bullet,label=below:$F_2$]{};
\draw[cyan,dashed,thick] ({\pv{d}/2-1*\pv{R2}},0)
node[bullet,label=above:$C_2$]{}
-- node[sloped,below]{$R_2$} ++ (\pv{alpha}:\pv{R2});
\path ({lensf(\pv{n},\pv{d},-1*\pv{R2},-1*\pv{R1})},0)
node[bullet,label=above:$F_1$]{};
\end{tikzpicture}
\end{document}