
Hallo zusammen und frohe Weihnachten (auch wenn es spät ist, lol). Ich möchte eine bikonkave Linse wie die unten zeichnen, aber ich schaffe es wirklich nicht.
Das ist, was ich geschafft habe zu schreiben, aber es ist nicht das Ergebnis, das ich erzielen möchte.
\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}
Antwort1
Dies zeichnet solche Linsen. Sie können die Radien unterschiedlich wählen, aber natürlich können Sie sie auch gleich setzen. Die Positionen der Brennpunkte werden mit demLensmaker-Gleichung. Anstelle von Makros werden pgf-Schlüssel verwendet. Die Parameter sind die Höhe h
, die Dicke d
, der Brechungsindex n
und die Radien R1
und R2
. Der Parameter alpha
gibt lediglich die Steigung der gestrichelten cyanfarbenen Linien an.
\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}