내 광선이 두 번째 거울 너머로 전파되지 않는 이유는 무엇입니까?

내 광선이 두 번째 거울 너머로 전파되지 않는 이유는 무엇입니까?

빔 벤딩이 포함된 다이어그램

\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제대로 작동하지 않습니다.

관련 정보