
Hola a todos y feliz Navidad (aunque sea tarde jajaja). Me gustaría dibujar una lente bicóncava como la que aparece a continuación, pero realmente no lo consigo.
Esto es lo que logré escribir, pero no es el resultado que deseo obtener.
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=0.9]
\pgfmathsetmacro{\lensRadius}{2.6}
\pgfmathsetmacro{\lensHeight}{1.8}
\pgfmathsetmacro{\startAngle}{-asin(\lensHeight/\lensRadius)}
\draw [fill=lightgray!50, very thick] (0,\lensHeight)
arc[start angle=-\startAngle,delta
angle=2*\startAngle,radius=\lensRadius]
--++ (0:2)
arc[start angle=-\startAngle,delta angle=2*\startAngle,radius=-
\lensRadius]
-- cycle;
\end{tikzpicture}
\end{document}
Respuesta1
Esto atrae tales lentes. Le permite elegir los radios de manera diferente, pero, por supuesto, puede igualarlos. Las ubicaciones de los puntos focales se calculan con laecuación del fabricante de lentes. En lugar de macros se utilizan claves pgf. Los parámetros son la altura h
, el espesor d
, el índice de refracción n
y los R1
radios R2
. El parámetro alpha
simplemente indica la pendiente de las líneas cian discontinuas.
\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
angle={-2*startangle(\pv{h},\pv{R1})},radius=\pv{R1}]
--++ ({\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
angle={2*startangle(\pv{h},\pv{R2})},radius=\pv{R2}]
-- 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}