diff options
author | Karl Berry <karl@freefriends.org> | 2014-11-27 23:12:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-11-27 23:12:57 +0000 |
commit | e230e4df26ca959893b28b41dc5e4f189b7d5d7c (patch) | |
tree | 371c85bfe3aab74a850560e59c99843f6e025f1d /Master/texmf-dist/source/latex | |
parent | 92dfd63f1480de91bdf82d2ae9fd7a76110f39d7 (diff) |
pst-optexp (27nov14)
git-svn-id: svn://tug.org/texlive/trunk@35673 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx | 464 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins | 2 |
2 files changed, 460 insertions, 6 deletions
diff --git a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx index fa5b2dc0c53..3b42360117f 100644 --- a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx +++ b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx @@ -18,7 +18,7 @@ %<stylefile>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<stylefile>\ProvidesPackage{pst-optexp} %<*stylefile> - [2014/11/19 v5.1 Optical experimental setups with PSTricks] + [2014/11/26 v5.2 Optical experimental setups with PSTricks] %</stylefile> % %<*driver> @@ -110,7 +110,8 @@ oenodeRotref, oenodeBeam, oenodeBeamUp, oenodeBeamLow, oenodeCenter, oenodeIfc, oeBeamVec, oeBeamVecUp, oeBeamVecLow, oeBeamVecMedian, oeBeamCenter, optplate, optretplate, pinhole, crystal, optdetector, - optdiode, doveprism, glanthompson, polarization, mirror, parabolicmirror, oapmirror, + optdiode, doveprism, glanthompson, polarization, mirror, parabolicmirror, + oapmirror, axicon, optwedge, asphericlens, beamsplitter, optgrating, optprism, rightangleprism, pentaprism, optaom, optdipole, opttripole, optfiber, optamp, optmzm, optfilter, optsource, polcontrol, optisolator, optswitch, fiberdelayline, @@ -2805,7 +2806,127 @@ % gesetzt wird. % \fi % \end{optionlist} +% +% \ifGERMAN\section{Asphärische Linse}\fi +% \ifENGLISH\section{Aspheric lens}\fi +% +% \begin{ltxsyntax} +% \dipoledesc{asphericlens} +% \end{ltxsyntax} +% +% \ifGERMAN Eine asphärische Linse besitzt eine Oberfläche, deren Form durch die Gleichung +% \begin{equation*} +% z(y) = \frac{y^2}{R(1 + \sqrt{1 - (1+k)y^2/R^2})} + A_4y^4 + A_6y^6 + A_8y^8 + A_{10}y^{10} +% \end{equation*} +% gegeben ist. $z$ ist der Sagittalschnitt parallel zur optischen Achse, +% $y$ der Abstand zur optischen Achse und $R$ der +% Krümmungsradius. Desweiteren ist $k$ die konische Konstante und $A_4$, +% $A_6$, $A_8$ und $A_{10}$ die Asphärenkoeffizienten der 4. bis +% 10. Ordnung. +% \fi +% \begin{optionlist} +% \numitem[1]{asphereheight} +% \ifGERMAN Die Höhe der Linse.\fi +% \ifENGLISH The lens height.\fi % +% \numitem[0]{aspherewidth} +% \ifGERMAN +% Die Breite der Linse. Wird nur verwendet, wenn der angegebene Wert +% über dem minimal berechneten liegt. +% \fi +% \ifENGLISH +% The lens center thickness. Is use only, if the given value is larger +% than the minimum calculated value. +% \fi +% +% \numitem[1]{asphereradiusleft} +% \ifGERMAN Der Krümmungsradius der linken, asphärischen Oberfläche.\fi +% \ifENGLISH Curvature radius of the left, aspheric surface.\fi +% +% \numitem[0]{asphereradiusright} +% \ifGERMAN +% Der Krümmungsradius der rechten Oberfläche. Ist dieser gleich Null, +% dann ist die Oberfläche plan. +% \fi +% \ifENGLISH +% Curvature radius of the right surface. IF the value is zero, the +% surface is plane. +% \fi +% +% \numitem{asphereconstant} +% \ifGERMAN Die konische Konstante $k$ der linken Oberfläche.\fi +% \ifENGLISH The conic constant $k$ of the left surface.\fi +% +% \optitem{aspherecoefficients}{\prm{$A_4$} [\prm{$A_6$} [\prm{$A_8$} [\prm{$A_{10}$}]]]} +% \ifGERMAN +% Die Asphärenkoeffizienten $A_4$ bis $A_{10}$. Es können ein bis vier +% Zahlen angegeben werden. +% \fi +% \ifENGLISH +% The aspheric terms of fourth to tenth order. One to four values can be +% specified. +% \fi +% \end{optionlist} +% +% \ifGERMAN +% Als Beispiel nehmen wir die Parameter einer kommerziell erhältlichen +% asphärische +% Kondensorlinse\fnurl{http://www.thorlabs.de/thorproduct.cfm?partnumber=ACL25416U}: +% \fi +% \ifENGLISH +% As example we use the parameters of a commercially available condensor +% lens\fnurl{http://www.thorlabs.de/thorproduct.cfm?partnumber=ACL25416U}: +% \fi +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample} +\begin{pspicture}(0,-0.3)(5,2.3) + \pnodes(0,1){A}(5,1){B} + \asphericlens[% + plotstyle=cspline, + asphereheight=2.54, + aspherewidth=1.4, + asphereradiusleft=0.8818197, + aspherecoefficients=8.682e-3 6.376e-3 2.4073e-2 -1.719e-2, + asphereconstant=-0.9992, + asphereradiusright=6.99995](A)(B) + \multido{\r=-1+0.1}{21}{% + \drawbeam[beampos=\r, linewidth=0.3\pslinewidth](A){}(B)} +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% +% \ifGERMAN Ein weiteres Beispiel zeigt anschaulich den Unterschied +% einer asphärischen Linsen zu einer sphärischen Linse mit gleichem +% Krümmungsradius: +% \fi +% \ifENGLISH +% Another example illustrates the difference between an aspheric lens an +% a spheric lens with equal curvature: +% \fi +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample}[pos=t,linerange={2-11}] +\psset{unit=0.5cm} +\begin{pspicture*}(15,8) + \pnodes(0,4){A}(15,4){B} + \asphericlens[asphereheight=7.5, asphereradiusleft=3.12848, + asphereconstant=-1.991145, aspherecoefficients=4.98e-3](A)(B) + \multido{\r=-3.2+0.8}{9}{% + \drawbeam[beampos=\r, linewidth=0.5\pslinewidth](A){}(B)} + \lens[lens=3.12848 0 6 5.49, abspos=6.13, style=Refline, linestyle=dashed](A)(B) + \multido{\r=-2.8+0.8}{8}{% + \drawbeam[beampos=\r, linewidth=0.5\pslinewidth, linecolor=red](A){}(B)}% +\end{pspicture*} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% % \ifGERMAN\section{Optisches Plättchen}\fi % \ifENGLISH\section{Optical plate}\fi % @@ -3601,6 +3722,98 @@ % \ifENGLISH Affects the style of the polarisation symbols.\fi % \end{stylelist} % +% \ifGERMAN\section{Keil}\fi +% \ifENGLISH\section{Wedge}\fi +% +% \begin{ltxsyntax} +% \dipoledesc{optwedge} +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample} +\begin{pspicture}(3,2) + \optwedge[beam](0,1)(3,1){Wedge} +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% \end{ltxsyntax} +% +% \begin{optionlist} +% \numitem[0.8]{wedgeheight} +% \ifGERMAN Höhe des Keils.\fi +% \ifENGLISH The height of the wedge.\fi +% +% \numitem[10]{wedgeangleright} +% \ifGERMAN Der obere Winkel der rechten Grenzfläche bezogen auf die Vertikale.\fi +% \ifENGLISH The upper angle of the right interface with respect to a vertical line.\fi +% +% \numitem[0]{wedgeangleleft} +% \ifGERMAN Der obere Winkel der linken Grenzfläche bezogen auf die Vertikale.\fi +% \ifENGLISH The upper angle of the left interface with respect to a vertical line.\fi +% +% \optitem{wedgeangles}{\prm{left}[ \prm{right}]} +% \ifGERMAN +% Erlaubt beide Winkel gleichzeitig zu setzen. Wird nur ein Wert +% angegeben, dann wird dieser für beide Winkel verwendet. +% \fi +% \ifENGLISH +% Allows setting both angles at once. If only a single value is given, +% it is used for both angles. +% \fi +% \numitem[0]{wedgewidth} +% \ifGERMAN Ist der Wert größer als die berechnete Grundbreite, dann wird der Keil auf die angegebene Breite vergrößert.\fi +% \ifENGLISH If this value is larger than the calculated base width, then the wedge's width is increase to this value.\fi +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample} +\begin{pspicture}(2,1) + \optwedge[wedgeangles=10 0, wedgewidth=0.4](0,0.5)(2,0.5) + \drawwidebeam[beamwidth=0.5](0,0.5){}(2,0.5) +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% +% \end{optionlist} +% +% \ifGERMAN\section{Axikon}\fi +% \ifENGLISH\section{Axicon}\fi +% +% \begin{ltxsyntax} +% \dipoledesc{axicon} +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample} +\begin{pspicture}(3,2) + \axicon[label=1](0,1)(3,1){Axicon} + \drawwidebeam[beamwidth=0.5](0,1){}(3,1) +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% \end{ltxsyntax} +% +% \begin{optionlist} +% \numitem[1.5]{axiconheight} +% \ifGERMAN Die Höhe des Axikons.\fi +% \ifENGLISH The height of the axicon.\fi +% +% \numitem[0.4]{axiconwidth} +% \ifGERMAN Die Breite des Axikons.\fi +% \ifENGLISH The width of the axicon.\fi +% +% \numitem[10]{axiconangle} +% \ifGERMAN Der obere Winkel der rechten Grenzfläche bezogen auf die Vertikale.\fi +% \ifENGLISH The upper angle of the right interface with respect to a vertical line.\fi +% +% \end{optionlist} +% % \ifGERMAN\section{Spiegel}\fi % \ifENGLISH\section{Mirror}\fi % @@ -13693,15 +13906,20 @@ % % \begin{changelog} % \patchcmd{\release}{\setlength{\itemsep}{0pt}}{\setlength{\itemsep}{0pt}\setlength{\parsep}{0pt}}{}{} +% \begin{release}{5.2}{2014-11-26} +% \item Added component \cs{asphericlens}\see{comp:asphericlens} +% \item Added component \cs{axicon}\see{comp:axicon} +% \item Added component \cs{optwedge}\see{comp:optwedge} +% \end{release} % \begin{release}{5.1}{2014-11-19} -% \item Added component \cs{oapmirror}. +% \item Added component \cs{oapmirror}\see{comp:oapmirror} % \item Added support for filled beams with path interfaces. % \end{release} % \begin{release}{5.0}{2014-10-30} % \item Added support for arbitrary interface shapes (experimental, % requires the \opt{pst-intersect} package and \opt{pstricks} -% version 2.53. -% \item Added component \cs{parabolicmirror}. +% version 2.53). +% \item Added component \cs{parabolicmirror}\see{comp:parabolicmirror} % \end{release} % \begin{release}{4.10}{2014-06-04} % \item Added value \opt{firstcomp} to parameter \opt{beamalign}\see{prm:beamalign} @@ -14757,6 +14975,53 @@ lensradiusright=1 }% % \end{macrocode} +% +% \begin{macrocode} +\define@key[psset]{optexp}{asphereheight}{% + \pst@checknum{#1}\POE@key@asphereheight +}% +\define@key[psset]{optexp}{aspherewidth}{% + \pst@checknum{#1}\POE@key@aspherewidth +}% +\define@key[psset]{optexp}{asphereradiusleft}{% + \pst@checknum{#1}\POE@key@asphereradiusleft +}% +\define@key[psset]{optexp}{asphereradiusright}{% + \pst@checknum{#1}\POE@key@asphereradiusright +}% +\define@key[psset]{optexp}{asphereconstant}{% + \pst@checknum{#1}\POE@key@asphereconstant +}% +\define@key[psset]{optexp}{aspherecoefficients}{% + \pst@expandafter\POE@psset@@aspherecoefficients{#1} {} {} {} {} {}\@nil +}% +\def\POE@psset@@aspherecoefficients#1 #2 #3 #4 #5\@nil{% + \def\POE@key@asphereAfour{0}% + \def\POE@key@asphereAsix{0}% + \def\POE@key@asphereAeight{0}% + \def\POE@key@asphereAten{0}% + \ifx\\#1\\\else + \def\POE@key@asphereAfour{#1}% + \ifx\\#2\\\else + \def\POE@key@asphereAsix{#2}% + \ifx\\#3\\\else + \def\POE@key@asphereAeight{#3}% + \ifx\\#4\\\else + \def\POE@key@asphereAten{#4}% + \fi + \fi + \fi + \fi +}% +\psset[optexp]{% + aspherewidth=0, + asphereheight=1, + asphereconstant=-1, + asphereradiusleft=1, + aspherecoefficients=0, + asphereradiusright=0 +} +% \end{macrocode} % Pinhole % \begin{macrocode} \define@key[psset]{optexp}{innerheight}{% @@ -15138,6 +15403,51 @@ \psset[optexp]{oapmirroraperture=1} % \end{macrocode} % +% Axicon +% \begin{macrocode} +\define@key[psset]{optexp}{axiconheight}{% + \pst@checknum{#1}\POE@key@axiconheight +}% +\define@key[psset]{optexp}{axiconwidth}{% + \pst@checknum{#1}\POE@key@axiconwidth +}% +\define@key[psset]{optexp}{axiconangle}{% + \pst@checknum{#1}\POE@key@axiconangle +}% +\psset[optexp]{axiconheight=1.5, axiconwidth=0.4, axiconangle=10} +% \end{macrocode} +% +% Wedge +% \begin{macrocode} +\define@key[psset]{optexp}{wedgeangles}{% + \pst@expandafter\POE@psset@@wedgeangles{#1} {} {} {}\@nil +}% +\def\POE@psset@@wedgeangles#1 #2 #3\@nil{% + \pst@checknum{#1}\POE@key@wedgeangleleft + \ifx\\#2\\% + \pst@checknum{#1}\POE@key@wedgeangleright + \else + \pst@checknum{#2}\POE@key@wedgeangleright + \fi +}% +\define@key[psset]{optexp}{wedgeangleleft}{% + \pst@checknum{#1}\POE@key@wedgeangleleft +}% +\define@key[psset]{optexp}{wedgeangleright}{% + \pst@checknum{#1}\POE@key@wedgeangleright +}% +\define@key[psset]{optexp}{wedgeheight}{% + \pst@checknum{#1}\POE@key@wedgeheight +}% +\define@key[psset]{optexp}{wedgewidth}{% + \pst@checknum{#1}\POE@key@wedgewidth +}% +\psset[optexp]{% + wedgeangles=0 10, + wedgeheight=0.8, + wedgewidth=0 +}% +% \end{macrocode} % Grating % % These are the old \opt{optgrid*} parameters, which have been deprecated. @@ -18848,6 +19158,7 @@ % Define all free-ray dipoles % \begin{macrocode} \newOptexpDipole{lens} +\newOptexpDipole{asphericlens} \newOptexpDipole{pinhole} \newOptexpDipole{crystal} \newOptexpDipole{polarization} @@ -18860,6 +19171,8 @@ \newOptexpDipole{doveprism} \newOptexpDipole{glanthompson} \newOptexpDipole{parabolicmirror}{position=end, ref@angle=-90} +\newOptexpDipole{axicon} +\newOptexpDipole{optwedge} % \end{macrocode} % % Define all free-ray tripoles @@ -19725,6 +20038,77 @@ % \end{macrocode} % \end{macro} % +% \subsubsection{Aspheric lens} +% +% \begin{macro}{\asphericlens@nodes} +% \begin{macrocode} +\def\asphericlens@nodes{% + \def\POE@asphere##1{% + (##1)^2*(1/(\POE@key@asphereradiusleft*(1+sqrt(1-(1+\POE@key@asphereconstant)*(##1)^2/\POE@key@asphereradiusleft^2)))+% + (##1)^2*(\POE@key@asphereAfour % + + (##1)^2*(\POE@key@asphereAsix % + + ((##1)^2*(\POE@key@asphereAeight % + + \POE@key@asphereAten*(##1)^2)))))}% + \def\POE@arcright##1{% + (##1)^2/(\POE@key@asphereradiusright*sqrt(1-(##1)^2/\POE@key@asphereradiusright^2))}% + \POE@Verb{% + tx@Dict begin + /POEasphereleftx0 (\POE@asphere{0.5*\POE@key@asphereheight}) AlgParser cvx exec def + /POEasphererightx0 + \ifdim\POE@key@asphereradiusright pt>0pt + (\POE@arcright{0.5*\POE@key@asphereheight}) AlgParser cvx exec + \else + 0 + \fi + def + \POE@key@aspherewidth\space POEasphereleftx0 POEasphererightx0 add sub dup 0 gt { + POEasphererightx0 add /POEasphererightx0 exch def + } { + pop + } ifelse + end + }% + \pssavepath[linestyle=none, arrows=-,ArrowInside=-]{\oenode@Path{A}}{% + \psparametricplot[algebraic, plotstyle=cspline]% + {\POE@key@asphereheight\space -0.5 mul}% + {\POE@key@asphereheight\space 0.5 mul}% + {\POE@asphere{t}-POEasphereleftx0|t}}% + \ifdim\POE@key@asphereradiusright pt>0pt + \pssavepath[linestyle=none, arrows=-,ArrowInside=-]{\oenode@Path{B}}{% + \psparametricplot[algebraic, plotstyle=cspline]% + {\POE@key@asphereheight\space 0.5 mul}% + {\POE@key@asphereheight\space -0.5 mul}% + {-\POE@arcright{t}+POEasphererightx0|t}}% + \fi + \newOptexpComp{% + {POEasphereleftx0 neg 0} tx@IntersectDict /\PIT@name{\oenode@Path{A}} get 0 0 trans {PathIfc} + {POEasphererightx0 0} + \ifdim\POE@key@asphereradiusright pt>0pt + tx@IntersectDict /\PIT@name{\oenode@Path{B}} get 0 0 trans {PathIfc} + \else + {0 1} 0 0 trans {PlainIfc} + \fi + \POE@key@n }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\asphericlens@comp} +% \begin{macrocode} +\def\asphericlens@comp{% + \pscustom[arrows=-]{% + \pstracecurve{\oenode@Path{A}}% + \ifdim\POE@key@asphereradiusright pt>0pt + \pstracecurve{\oenode@Path{B}} + \else + \lineto(!POEasphererightx0 \POE@key@asphereheight\space 0.5 mul) + \lineto(!POEasphererightx0 \POE@key@asphereheight\space -0.5 mul) + \fi + \closepath}% +}% +% \end{macrocode} +% \end{macro} +% % \subsubsection{pinhole} % % \begin{macro}{\pinhole@ref} @@ -20680,6 +21064,76 @@ % \end{macrocode} % \end{macro} % +% \subsubsection{Axicon} +% +% \begin{macro}{axicon@nodes} +% \begin{macrocode} +\def\axicon@nodes{% + \POE@setref{% + /@@right \POE@key@axiconheight\space 0.5 mul \POE@key@axiconangle\space dup sin exch cos div mul def + @@right \POE@key@axiconwidth\space max 0.5 mul /@@x exch def + /@@y \POE@key@axiconheight\space 0.5 mul def + /@@right + }% + \pssavepath[linestyle=none, arrows=-,ArrowInside=-]{\oenode@Path{A}}{% + \psline(!\POE@dict{@@x @@right sub @@y}) + (!\POE@dict{@@x 0}) + (!\POE@dict{@@x @@right sub @@y neg}) + }% + \newOptexpComp{% + {@@x neg 0} {0 1} @@y neg @@y trans {PlainIfc} + {@@x 0} + tx@IntersectDict /\PIT@name{\oenode@Path{A}} get 0 0 trans {PathIfc} + \POE@key@n }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{axicon@comp} +% \begin{macrocode} +\def\axicon@comp{% + \pspolygon[arrows=-]% + (!\POE@dict{@@x neg @@y})(!\POE@dict{@@x @@right sub @@y}) + (!\POE@dict{@@x 0})(!\POE@dict{@@x @@right sub @@y neg}) + (!\POE@dict{@@x neg @@y neg}) + %(!\POE@key@axiconwidth\space neg \POE@key@axiconheight\space -0.5 mul) + %(!\POE@key@axiconwidth\space neg \POE@key@axiconheight\space 0.5 mul) + %(! 0 \POE@key@axiconheight\space 0.5 mul) + %(! \POE@key@axiconheight\space 0.5 mul \POE@key@axiconangle\space tan mul 0) + %(! 0 \POE@key@axiconheight\space -0.5 mul) +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{optwedge} +% +% \begin{macro}{optwedge@nodes} +% \begin{macrocode} +\def\optwedge@nodes{% + \POE@Verb{% + /@@xl \POE@key@wedgeheight\space \POE@key@wedgeangleleft\space tan mul def + /@@xr \POE@key@wedgeheight\space \POE@key@wedgeangleright\space tan mul def + /@@xa \POE@key@wedgewidth\space @@xl @@xr add sub dup 0 gt {0.5 mul}{pop 0} ifelse def + }% + \newOptexpComp{% + {@@xl @@xa add -0.5 mul 0} {\POE@key@wedgeangleleft\space tan 1} 0 0 trans {PlainIfc} + {@@xr @@xa add 0.5 mul 0} {\POE@key@wedgeangleright\space tan -1} 0 0 trans {PlainIfc} + \POE@key@n }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{optwedge@comp} +% \begin{macrocode} +\def\optwedge@comp{% + \pspolygon[arrows=-](!\POE@dict{@@xa} \POE@key@wedgeheight\space 0.5 mul) + (!\POE@dict{@@xa @@xr} add \POE@key@wedgeheight\space -0.5 mul) + (!\POE@dict{@@xa @@xl} add neg \POE@key@wedgeheight\space -0.5 mul) + (!\POE@dict{@@xa} neg \POE@key@wedgeheight\space 0.5 mul) +}% +% \end{macrocode} +% \end{macro} +% % \subsection{Fiber components} % % \subsubsection{optfiber} diff --git a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins index b16711e99e1..ec283f3effc 100644 --- a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins +++ b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins @@ -53,7 +53,7 @@ This is a generated file. Project: pst-optexp -Version: 5.1 (2014/11/19) +Version: 5.2 (2014/11/26) Copyright (C) 2007-2014 by Christoph Bersch <usenet@bersch.net> |