Почему мой луч не распространяется дальше второго зеркала?

Почему мой луч не распространяется дальше второго зеркала?

Схема с изгибом балки

\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всех линз, либо нарисовать луч по частям для параллельной и фокусирующей частей по отдельности.

Рецепт следующий:

  1. Нарисуйте первую параллельную часть с помощью \drawwidebeam[beamwidth=0.4, stopinside]{1-3}, которая прослеживает луч до второго интерфейса первой линзы (рисует только до первого интерфейса).
  2. Теперь нарисуйте луч между первой и второй линзой с помощью \drawwidebeam[loadbeampoints, beamdiv=-20, stopinside]{3-5}. Это загрузит конечные точки предыдущего \drawwidebeamвызова, но позволит вам настроить расхождение луча.
  3. Со второй линзы продолжайте, \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не работает должным образом.

Связанный контент