\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
не работает должным образом.