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