\documentclass[]{revtex4}
\usepackage{pst-optexp}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[showgrid=true](13,14)
\pnodes(2,10){A}(3,10){MIP}(3,12.5){LIP}(3,13){MIIP}(5,13){LIIP}
\pnodes(8,13){MIIIP}(8,8){MIVP}(14,8){LIIIP}(10,8){LIVP}(12,8){MVP}(12,3){d}
\pnodes(12,1){MVIP}(10,1){LVIP}(6,1){C}
\psset{mirrortype=extended, mirrordepth=0.2}
\begin{optexp}
\optsource[innerlabel, compname = start](A)(MIP){Beam}
\mirror[compname = mi, labelangle=45](A)(MIP)(LIP){$M_1$}
\lens[compname = li, n=1.57](MIP)(LIP){$L_1$}
\mirror[compname= mii, labelangle=-45](LIP)(MIIP)(LIIP){$M_{2}$}
\lens[compname= lii, n=1.517](MIIP)(LIIP){$L_{2}$}
\mirror[compname= miii, labelangle=-45](LIIP)(MIIIP)(MIVP){$M_{3}$}
\mirror[compname= miv, labelangle=45](MIIIP)(MIVP)(LIIIP){$M_{4}$}
\lens[compname= liii, n=1.517](MIVP)(LIIIP){$L_{3}$}
\mirror[compname= mv, labelangle=-45](MIVP)(MVP)(d){$M_{5}$}
\mirror[compname= mvi, labelangle=-45](d)(MVIP)(LVIP){$M_{6}$}
\lens[compname= lensfour, n=1.517](MVIP)(LVIP){$L_{4}$}
\optsource[innerlabel](C)(C){Comp.}
\end{optexp}
\addtopsstyle{Beam}{fillstyle=solid, fillcolor=green!20!white}
\drawwidebeam[beamwidth=0.4, beaminsidelast]{1-5}
\drawwidebeam[loadbeampoints]{5-12}
\end{pspicture}
\end{document}
答案1
调试你的设置
pst-optexp
为您提供不同的调试可能性:
- 使用
\psset{pswarning}
您可以在 Postscript 级别启用警告。例如,您会收到“警告 pst-optexp:上光束错过了一个接口” - 默认情况下,
pst-optexp
遵循组件的数值孔径。如果其中一个外光束未击中下一个界面,则光束绘制停止。\psset{useNA=false}
您可以暂时禁用此功能以查看哪个光束出错。对于您的设置,结果是
您会看到,M3
镜子太小(或光束太宽),所以光束路径被中断。
可能的解决方案
为了根据您的需要定制光束,您可以微调n
所有透镜的折射率,也可以分别为平行和聚焦部分分段绘制光束。
配方如下:
- 用 绘制第一个平行部分
\drawwidebeam[beamwidth=0.4, stopinside]{1-3}
,该部分追踪光束直到第一个透镜的第二个界面(仅绘制到第一个界面)。 - 现在用 在第一和第二个透镜之间画出光束
\drawwidebeam[loadbeampoints, beamdiv=-20, stopinside]{3-5}
。这将加载上一次调用的端点\drawwidebeam
,但允许您调整光束发散度。 - 从第二个透镜继续
\drawwidebeam[loadbeampoints]
再次加载前一个光束端点,但继续使用平行光线。
等等。
\documentclass[pstricks,margin=12pt]{standalone}
\usepackage{pst-optexp}
\begin{document}
\begin{pspicture}[showgrid=true](13,14)
\pnodes(2,10){A}(3,10){MIP}(3,12.5){LIP}(3,13){MIIP}(5,13){LIIP}
\pnodes(8,13){MIIIP}(8,8){MIVP}(14,8){LIIIP}(10,8){LIVP}(12,8){MVP}(12,3){d}
\pnodes(12,1){MVIP}(10,1){LVIP}(6,1){C}
\psset{mirrortype=extended, mirrordepth=0.2}
\psset{mirrorwidth=1.1}
\addtopsstyle{Beam}{fillstyle=solid, fillcolor=green!20!white}
\begin{optexp}
\optsource[innerlabel, compname = start](A)(MIP){Beam}
\mirror[compname = mi, labelangle=45](A)(MIP)(LIP){$M_1$}
\lens[compname = li](MIP)(LIP){$L_1$}
\drawwidebeam[beamwidth=0.4, stopinside]{1-3}
\mirror[compname= mii, labelangle=-45](LIP)(MIIP)(LIIP){$M_{2}$}
\lens[compname= lii](MIIP)(LIIP){$L_{2}$}
\drawwidebeam[loadbeampoints, beamdiv=-20, stopinside]{3-5}
\mirror[compname= miii, labelangle=-45](LIIP)(MIIIP)(MIVP){$M_{3}$}
\mirror[compname= miv, labelangle=45](MIIIP)(MIVP)(LIIIP){$M_{4}$}
\lens[compname= liii](MIVP)(LIIIP){$L_{3}$}
\drawwidebeam[loadbeampoints, stopinside]{5-8}
\mirror[compname= mv, labelangle=-45](MIVP)(MVP)(d){$M_{5}$}
\mirror[compname= mvi, labelangle=-45](d)(MVIP)(LVIP){$M_{6}$}
\lens[compname= lensfour](MVIP)(LVIP){$L_{4}$}
\drawwidebeam[loadbeampoints, beamdiv=-6.3, stopinside]{8-11}
\optbox[innerlabel](C)(C){Comp.}
\drawwidebeam[loadbeampoints]{11}{12}
\end{optexp}
\end{pspicture}
\end{document}
顺便说一句:使用pst-optexp
-setups编译xelatex
无法正常工作。