diff options
author | Karl Berry <karl@freefriends.org> | 2006-07-21 23:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-07-21 23:46:03 +0000 |
commit | 51e3a37989b9f2ace36eb360c42fee6dcff11458 (patch) | |
tree | c9205688e89e5e15f5d9c326c1fdbbc77cb1d76f /Master/texmf-dist/tex/generic | |
parent | fe0b11acdb1182a4e0a4068d1876666f270752e8 (diff) |
pst-optic 0.95
git-svn-id: svn://tug.org/texlive/trunk@1890 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic')
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex | 1077 |
1 files changed, 496 insertions, 581 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex b/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex index 88c7cfb7aec..90920f2e1be 100644 --- a/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex +++ b/Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex @@ -8,7 +8,7 @@ %% Manuel Luque <Mluque5130@aol.com> (France) %% Herbert Voss <voss@perce.de> (Germany) %% -%% February 16, 2003 +%% 2006-07-20 %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives @@ -20,14 +20,15 @@ \csname PSTopticLoaded\endcsname \let\PSTopticLoaded\endinput % Requires PSTricks, pst-node, pstcol, pst-plot, pst-3d, multido packages +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi \ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi \ifx\PSTplotLoaded\endinput\else\input pst-plot.tex\fi % parametric-plot \ifx\PSTthreeDLoaded\endinput\else\input pst-3d.tex\fi % symplan \ifx\PSTMultidoLoaded\endinput\else\input multido.tex\fi \ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi % -\def\fileversion{0.92} -\def\filedate{2004/11/09} +\def\fileversion{0.95} +\def\filedate{2006/07/20} \message{`PST-Optic' v\fileversion, \filedate\space (Manuel Luque and Herbert Voss)} % % DPC interface to the `keyval' package (until keyval based version of PSTricks) @@ -90,191 +91,133 @@ \define@key[psset]{pst-optic}{rightRay}[false]{\@nameuse{Pst@rightRay#1}% } % -\psset{lensGlass=false} -\psset{drawing=true} +\psset[pst-optic]{lensGlass=false,drawing=true} % % ------- the global definitions for the pspicture frame ------ % -\define@key[psset]{pst-optic}{xLeft}{\edef\psk@optic@xLeft{#1}} -\define@key[psset]{pst-optic}{xRight}{\edef\psk@optic@xRight{#1}} -\define@key[psset]{pst-optic}{yBottom}{\edef\psk@optic@yBottom{#1}} -\define@key[psset]{pst-optic}{yTop}{\edef\psk@optic@yTop{#1}} -\psset{xLeft=-7.5,xRight=7.5,yBottom=-3.0,yTop=3.0} +\define@key[psset]{pst-optic}{xLeft}{\def\psk@optic@xLeft{#1}} +\define@key[psset]{pst-optic}{xRight}{\def\psk@optic@xRight{#1}} +\define@key[psset]{pst-optic}{yBottom}{\def\psk@optic@yBottom{#1}} +\define@key[psset]{pst-optic}{yTop}{\def\psk@optic@yTop{#1}} +\psset[pst-optic]{xLeft=-7.5,xRight=7.5,yBottom=-3.0,yTop=3.0} % % ---------------- the lenses ----------------- % \define@key[psset]{pst-optic}{lensType}{% CVG|DVG - \edef\psk@optic@lensType{#1}% + \def\psk@optic@lensType{#1}% } \define@key[psset]{pst-optic}{lensColor}{% - \edef\psk@optic@lensColor{#1}% + \def\psk@optic@lensColor{#1}% } \define@key[psset]{pst-optic}{lensWidth}{% the thichness of the lens - \edef\psk@optic@lensWidth{#1}% + \def\psk@optic@lensWidth{#1}% } \define@key[psset]{pst-optic}{lensDepth}{% - \edef\psk@optic@lensDepth{#1}% + \def\psk@optic@lensDepth{#1}% } \define@key[psset]{pst-optic}{lensHeight}{% the TOTAL height of the lens - \edef\psk@optic@lensHeight{#1}% + \def\psk@optic@lensHeight{#1}% } \define@key[psset]{pst-optic}{lensScale}{% more or less obsolete - \edef\psk@optic@lensScale{#1}% + \def\psk@optic@lensScale{#1}% } \define@key[psset]{pst-optic}{lensArrowSize}{% for the AB,... Arrows - \edef\psk@optic@lensArrowSize{#1}% + \def\psk@optic@lensArrowSize{#1}% } \define@key[psset]{pst-optic}{lensArrowInset}{% - \edef\psk@optic@lensArrowInset{#1}% + \def\psk@optic@lensArrowInset{#1}% } -\psset{lensType=CVG} -\def\Type{CVG} -\psset{lensColor=lightgray} -\psset{lensWidth=0.5} -\psset{lensDepth=1} -\psset{lensHeight=5} -\psset{lensScale=1} -\psset{lensArrowSize=0.2} -\psset{lensArrowInset=0.5} +\def\lensType{CVG} +\psset[pst-optic]{lensType=CVG,lensColor=lightgray,lensWidth=0.5,lensDepth=1, + lensHeight=5,lensScale=1,lensArrowSize=0.2,lensArrowInset=0.5} % % ---------------- the mirrors ----------------- % \define@key[psset]{pst-optic}{mirrorType}{% PLAN|PARAbolic|SPHerical - \edef\psk@optic@mirrorType{#1}% + \def\psk@optic@mirrorType{#1}% } \define@key[psset]{pst-optic}{mirrorDepth}{% - \edef\psk@optic@mirrorDepth{#1}% + \def\psk@optic@mirrorDepth{#1}% } \define@key[psset]{pst-optic}{mirrorHeight}{% it's the TOTAL height - \edef\psk@optic@mirrorHeight{#1}% + \def\psk@optic@mirrorHeight{#1}% } \define@key[psset]{pst-optic}{mirrorWidth}{% - \edef\psk@optic@mirrorWidth{#1}% + \def\psk@optic@mirrorWidth{#1}% } \define@key[psset]{pst-optic}{mirrorColor}{% - \edef\psk@optic@mirrorColor{#1}% + \def\psk@optic@mirrorColor{#1}% } \define@key[psset]{pst-optic}{mirrorFocus}{% - \edef\psk@optic@mirrorFocus{#1}% + \def\psk@optic@mirrorFocus{#1}% } \define@key[psset]{pst-optic}{posMirrorTwo}{% a sencond mirror? (telescope) - \edef\psk@optic@posMirrorTwo{#1}% + \def\psk@optic@posMirrorTwo{#1}% } \define@key[psset]{pst-optic}{mirrorTwoAngle}{% the angle for the 2. plan mirror (telescope) - \edef\psk@optic@mirrorTwoAngle{#1}% + \def\psk@optic@mirrorTwoAngle{#1}% } -\psset{mirrorType=CVG}% possible CVG|DVG \def\mirrorType{CVG} -\psset{mirrorDepth=1} -\psset{mirrorHeight=5} -\psset{mirrorWidth=0.25} -\psset{mirrorFocus=8}% only for LensTwo option -\psset{mirrorTwoAngle=45} -\psset{posMirrorTwo=6} -\psset{mirrorColor=lightgray} +\psset[pst-optic]{mirrorType=CVG,mirrorDepth=1,mirrorHeight=5,mirrorWidth=0.25, + mirrorFocus=8,mirrorTwoAngle=45,posMirrorTwo=6,mirrorColor=lightgray} % % -------------- the refrectionnumbers ------------- % -\define@key[psset]{pst-optic}{refractA}{% - \edef\psk@optic@refractA{#1}% -} -\define@key[psset]{pst-optic}{refractB}{% - \edef\psk@optic@refractB{#1}% -} -\psset{refractA=1} -\psset{refractB=1.41} +\define@key[psset]{pst-optic}{refractA}{\def\psk@optic@refractA{#1}} +\define@key[psset]{pst-optic}{refractB}{\def\psk@optic@refractB{#1}} +\psset[pst-optic]{refractA=1,refractB=1.41} % % -------------- the length and node definitions ------------- % \define@key[psset]{pst-optic}{XO}{% the X-offset - \edef\psk@optic@XO{#1}% + \def\psk@optic@XO{#1}% } \define@key[psset]{pst-optic}{YO}{% the y-offset - \edef\psk@optic@YO{#1}% + \def\psk@optic@YO{#1}% } \define@key[psset]{pst-optic}{posStart}{% where the arrows start - \edef\psk@optic@posStart{#1}% + \def\psk@optic@posStart{#1}% } \define@key[psset]{pst-optic}{length}{% the length of the before|outlines - \edef\psk@optic@length{#1}% + \def\psk@optic@length{#1}% } \define@key[psset]{pst-optic}{focus}{% for lenses/mirrors with a fixed focus - \edef\psk@optic@focus{#1}% + \def\psk@optic@focus{#1}% } \define@key[psset]{pst-optic}{AB}{% the length of the object arrow - \edef\psk@optic@AB{#1}% + \def\psk@optic@AB{#1}% } \define@key[psset]{pst-optic}{OA}{% the xcoordinate of the object arrow - \edef\psk@optic@OA{#1}% + \def\psk@optic@OA{#1}% } \define@key[psset]{pst-optic}{arrowOffset}{% offset for \arrowLine - \edef\psk@optic@arrowOffset{#1}% + \def\psk@optic@arrowOffset{#1}% } % -\psset{XO=0,YO=0} -\psset{OA=-3} -\psset{posStart=0,length=2} -\psset{focus=2} -\psset{AB=1} -\psset{arrowOffset=0} +\psset[pst-optic]{XO=0,YO=0,OA=-3,posStart=0,length=2,focus=2,AB=1,arrowOffset=0} % \define@key[psset]{pst-optic}{nameA}{% start of the object arrow - \edef\psk@optic@nameA{#1}% + \def\psk@optic@nameA{#1}% } \define@key[psset]{pst-optic}{spotA}{% where to draw the label - \edef\psk@optic@spotA{#1}% -} -\define@key[psset]{pst-optic}{nameB}{% - \edef\psk@optic@nameB{#1}% -} -\define@key[psset]{pst-optic}{spotB}{% - \edef\psk@optic@spotB{#1}% -} -\define@key[psset]{pst-optic}{nameF}{% - \edef\psk@optic@nameF{#1}% -} -\define@key[psset]{pst-optic}{spotF}{% - \edef\psk@optic@spotF{#1}% -} -\define@key[psset]{pst-optic}{nameO}{% - \edef\psk@optic@nameO{#1}% -} -\define@key[psset]{pst-optic}{spotO}{% - \edef\psk@optic@spotO{#1}% -} -\define@key[psset]{pst-optic}{nameAi}{% - \edef\psk@optic@nameAi{#1}% -} -\define@key[psset]{pst-optic}{spotAi}{% - \edef\psk@optic@spotAi{#1}% -} -\define@key[psset]{pst-optic}{nameBi}{% - \edef\psk@optic@nameBi{#1}% -} -\define@key[psset]{pst-optic}{spotBi}{% - \edef\psk@optic@spotBi{#1}% -} -\define@key[psset]{pst-optic}{nameFi}{% - \edef\psk@optic@nameFi{#1}% -} -\define@key[psset]{pst-optic}{spotFi}{% - \edef\psk@optic@spotFi{#1}% + \def\psk@optic@spotA{#1}% } -% -\psset{nameA=A} -\psset{spotA=270} -\psset{nameB=B} -\psset{spotB=90} -\psset{nameF=F} -\psset{spotF=270} -\psset{nameO=O} -\psset{spotO=225} -\psset{nameAi=A'} -\psset{spotAi=90} -\psset{nameBi=B'} -\psset{spotBi=270} -\psset{nameFi=F'} -\psset{spotFi=270} +\define@key[psset]{pst-optic}{nameB}{\def\psk@optic@nameB{#1}} +\define@key[psset]{pst-optic}{spotB}{\def\psk@optic@spotB{#1}} +\define@key[psset]{pst-optic}{nameF}{\def\psk@optic@nameF{#1}} +\define@key[psset]{pst-optic}{spotF}{\def\psk@optic@spotF{#1}} +\define@key[psset]{pst-optic}{nameO}{\def\psk@optic@nameO{#1}} +\define@key[psset]{pst-optic}{spotO}{\def\psk@optic@spotO{#1}} +\define@key[psset]{pst-optic}{nameAi}{\def\psk@optic@nameAi{#1}} +\define@key[psset]{pst-optic}{spotAi}{\def\psk@optic@spotAi{#1}} +\define@key[psset]{pst-optic}{nameBi}{\def\psk@optic@nameBi{#1}} +\define@key[psset]{pst-optic}{spotBi}{\def\psk@optic@spotBi{#1}} +\define@key[psset]{pst-optic}{nameFi}{\def\psk@optic@nameFi{#1}} +\define@key[psset]{pst-optic}{spotFi}{\def\psk@optic@spotFi{#1}} +% +\psset[pst-optic]{nameA=A,spotA=270,nameB=B,spotB=90,nameF=F,spotF=270, + nameO=O,spotO=225,nameAi=A',spotAi=90,nameBi=B',spotBi=270, + nameFi=F',spotFi=270} % % -------------------- colors/fillstyles ------------------- % @@ -283,10 +226,8 @@ \newpsstyle{rayuresJaunes}{% fillstyle=hlines,hatchsep=2\pslinewidth,hatchcolor=JauneVert% } -\define@key[psset]{pst-optic}{rayColor}{% - \edef\psk@optic@rayColor{#1}% -} -\psset{rayColor=red} +\define@key[psset]{pst-optic}{rayColor}{\def\psk@optic@rayColor{#1}} +\psset[pst-optic]{rayColor=red} % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -297,14 +238,14 @@ \def\Arrows{\@ifnextchar[{\pst@Arrows}{\pst@Arrows[]}} \def\pst@Arrows[#1](#2)(#3){{% \psset{#1}% - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB \pnode(!% /StartArrow \psk@optic@posStart\space def /LengthArrow \psk@optic@length\space def - \pst@tempa /YA exch \pst@number\psyunit div def + \pst@tempA /YA exch \pst@number\psyunit div def /XA exch \pst@number\psxunit div def - \pst@tempb /YB exch \pst@number\psyunit div def + \pst@tempB /YB exch \pst@number\psyunit div def /XB exch \pst@number\psxunit div def /denominateur XB XA sub def /numerateur YB YA sub def @@ -313,24 +254,24 @@ /YD StartArrow angleDirectionAB sin mul YA add def /XF XD LengthArrow angleDirectionAB cos mul add def /YF YD LengthArrow angleDirectionAB sin mul add def - XD YD ){ArrowStart} - \pnode(! XF YF){ArrowEnd} - \psset{arrows=->} + XD YD ){ArrowStart}% + \pnode(! XF YF){ArrowEnd}% + \psset{arrows=->}% \psline[#1](ArrowStart)(ArrowEnd)% -}} +}\ignorespaces} % % draw a line (===) outside: #2-----#3=======#4 % \def\psOutLine{\@ifnextchar[{\pst@ToDrawOut}{\pst@ToDrawOut[]}} \def\pst@ToDrawOut[#1](#2)(#3)#4{{% \psset{#1}% - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB \pnode(!% /LengthArrow \psk@optic@length\space def - \pst@tempa /YA exch \pst@number\psyunit div def + \pst@tempA /YA exch \pst@number\psyunit div def /XA exch \pst@number\psxunit div def - \pst@tempb /YB exch \pst@number\psyunit div def + \pst@tempB /YB exch \pst@number\psyunit div def /XB exch \pst@number\psxunit div def /denominateur XB XA sub def /numerateur YB YA sub def @@ -346,13 +287,13 @@ \def\psBeforeLine{\@ifnextchar[{\pst@BeforeLine}{\pst@BeforeLine[]}} \def\pst@BeforeLine[#1](#2)(#3)#4{{% \psset{#1}% - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB \pnode(!% /LengthArrow \psk@optic@length\space def - \pst@tempa /YA exch \pst@number\psyunit div def + \pst@tempA /YA exch \pst@number\psyunit div def /XA exch \pst@number\psxunit div def - \pst@tempb /YB exch \pst@number\psyunit div def + \pst@tempB /YB exch \pst@number\psyunit div def /XB exch \pst@number\psxunit div def /denominateur XB XA sub def /numerateur YB YA sub def @@ -361,21 +302,21 @@ /Ystart YA LengthArrow angleDirectionAB sin mul sub def Xstart Ystart){#4} \psline[#1](#4)(#2)% -}} +}\ignorespaces} % % intersection de deux droites % 2 juillet 2001/ rewritten 2003-01-27 Herbert % \def\ABinterCD(#1)(#2)(#3)(#4)#5{% - \pst@getcoor{#1}\pst@tempa - \pst@getcoor{#2}\pst@tempb + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB \pst@getcoor{#3}\pst@tempc \pst@getcoor{#4}\pst@tempd \pnode(!% - /YA \pst@tempa exch pop \pst@number\psyunit div def - /XA \pst@tempa pop \pst@number\psxunit div def - /YB \pst@tempb exch pop \pst@number\psyunit div def - /XB \pst@tempb pop \pst@number\psxunit div def + /YA \pst@tempA exch pop \pst@number\psyunit div def + /XA \pst@tempA pop \pst@number\psxunit div def + /YB \pst@tempB exch pop \pst@number\psyunit div def + /XB \pst@tempB pop \pst@number\psxunit div def /YC \pst@tempc exch pop \pst@number\psyunit div def /XC \pst@tempc pop \pst@number\psxunit div def /YD \pst@tempd exch pop \pst@number\psyunit div def @@ -406,14 +347,14 @@ \def\Parallel{\@ifnextchar[{\pst@Parallel}{\pst@Parallel[]}} \def\pst@Parallel[#1](#2)(#3)(#4)#5{{% \psset{#1}% - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB \pst@getcoor{#4}\pst@tempc \pnode(!% /LengthArrow \psk@optic@length\space def - \pst@tempa /YA exch \pst@number\psyunit div def + \pst@tempA /YA exch \pst@number\psyunit div def /XA exch \pst@number\psxunit div def - \pst@tempb /YB exch \pst@number\psyunit div def + \pst@tempB /YB exch \pst@number\psyunit div def /XB exch \pst@number\psxunit div def \pst@tempc /YC exch \pst@number\psyunit div def /XC exch \pst@number\psxunit div def @@ -433,13 +374,13 @@ \psset{arrowsize=4pt,arrows=->}% the defaults \psset{#1}% \def\pst@optic@n{#4} - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB \pnode(!% - /YA \pst@tempa exch pop \pst@number\psyunit div def - /XA \pst@tempa pop \pst@number\psxunit div def - /YB \pst@tempb exch pop \pst@number\psyunit div def - /XB \pst@tempb pop \pst@number\psxunit div def + /YA \pst@tempA exch pop \pst@number\psyunit div def + /XA \pst@tempA pop \pst@number\psxunit div def + /YB \pst@tempB exch pop \pst@number\psyunit div def + /XB \pst@tempB pop \pst@number\psxunit div def /dY YB YA sub \pst@optic@n\space 1 add div def /dX XB XA sub \pst@optic@n\space 1 add div def /Alpha dY dX atan def @@ -454,17 +395,17 @@ \pnode(tempArrowB){tempArrowC} } \psline[arrows=-](tempArrowB)(#3) -}} +}\ignorespaces} % % #1------#3------#2 \def\nodeBetween(#1)(#2)#3{% Herbert 2003/01/05 - \pst@getcoor{#1}\pst@tempa - \pst@getcoor{#2}\pst@tempb + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB \pnode(!% - /XA \pst@tempa pop \pst@number\psxunit div def - /YA \pst@tempa exch pop \pst@number\psyunit div def - /XB \pst@tempb pop \pst@number\psxunit div def - /YB \pst@tempb exch pop \pst@number\psyunit div def + /XA \pst@tempA pop \pst@number\psxunit div def + /YA \pst@tempA exch pop \pst@number\psyunit div def + /XB \pst@tempB pop \pst@number\psxunit div def + /YB \pst@tempB exch pop \pst@number\psyunit div def XB XA add 2 div YB YA add 2 div){#3} } % @@ -474,11 +415,11 @@ % Herbert Voss <voss@perce.de> 2003-01-26 \def\rotateNode{\pst@rotateNode} \def\pst@rotateNode(#1)#2{{% - \pst@getcoor{#1}\pst@tempa + \pst@getcoor{#1}\pst@tempA \def\pst@optic@angle{#2} % the rotating angle \pnode(!% - /YA \pst@tempa exch pop \pst@number\psyunit div def - /XA \pst@tempa pop \pst@number\psxunit div def + /YA \pst@tempA exch pop \pst@number\psyunit div def + /XA \pst@tempA pop \pst@number\psxunit div def YA 0 eq XA 0 eq and {0 0}{ /r XA dup mul YA dup mul add sqrt def /AlphaOld YA XA atan def @@ -486,14 +427,14 @@ r AlphaNew cos mul r AlphaNew sin mul } ifelse ){temp} \pnode(temp){#1} -}} +}\ignorespaces} % \def\rotateTriangle{\pst@rotateTriangle} \def\pst@rotateTriangle(#1)(#2)(#3)#4{{% \rotateNode(#1){#4} \rotateNode(#2){#4} \rotateNode(#3){#4} -}} +}\ignorespaces} % \def\rotateFrame{\pst@rotateFrame} \def\pst@rotateFrame(#1)(#2)(#3)(#4)#5{{% @@ -501,7 +442,7 @@ \rotateNode(#2){#5} \rotateNode(#3){#5} \rotateNode(#4){#5} -}} +}\ignorespaces} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % L E N S E S % @@ -526,7 +467,7 @@ /Width \psk@optic@lensWidth\space def /Width2 Width 2.0 div def } - \ifx\psk@optic@lensType\Type% CVG ? + \ifx\psk@optic@lensType\lensType% CVG ? \pnode(!% /radius Width2 dup mul Height dup mul add Width2 div 2 div def /XM Width2 radius sub def @@ -556,7 +497,7 @@ linecolor=\psk@optic@lensColor% } \rput(! XO YO){% - \ifx\psk@optic@lensType\Type% CVG + \ifx\psk@optic@lensType\lensType% CVG \pscustom{% \parametricplot{\psk@optic@lensHeight}{-\psk@optic@lensHeight}{% /arg t radius 2.0 mul div def @@ -605,7 +546,7 @@ \uput[-90](Center){Center} \psset{linecolor=\psk@optic@rayColor} \psline[linewidth=1.5\pslinewidth,arrowinset=0]{->}(A)(B) - \ifx\psk@optic@lensType\Type + \ifx\psk@optic@lensType\lensType % the parallel ray \lensSPHRay[lensType=CVG]% (B)(I){\psk@optic@refractA}{\psk@optic@refractB}{PSPH} @@ -668,8 +609,8 @@ \uput[\psk@optic@spotBi](B'){$\mathrm{\psk@optic@nameBi}$} \uput[\psk@optic@spotO](O){$\mathrm{\psk@optic@nameO}$} \fi% ifdrawing -\end{pspicture*} -}} +\end{pspicture*}% +}\ignorespaces} % % Herbert Voss 2003/02/02 % [#1] : lensType=CVG/DVG @@ -680,7 +621,7 @@ \def\lensSPHRay{\@ifnextchar[{\pst@lensSPHRay}{\pst@lensSPHRay[]}} \def\pst@lensSPHRay[#1](#2)(#3)#4#5#6{{% \psset{#1} - \ifx\psk@optic@lensType\Type% CVG + \ifx\psk@optic@lensType\lensType% CVG \ifPst@rightRay \ABinterSPHLens(#2)(#3)(Center){#6} \else @@ -691,7 +632,7 @@ \fi % \psline(! Y mT sub X 1 sub neg)(! Y mT add X 1 add neg) \refractionRay(#2)(#6)(! Y mT sub X 1 sub neg)(! Y mT add X 1 add neg){#4}{#5}{tempSPHRay} - \ifx\psk@optic@lensType\Type% CVG + \ifx\psk@optic@lensType\lensType% CVG \ifPst@rightRay \ABinterSPHLens(#6)(tempSPHRay')(Center'){#6'} \else @@ -704,7 +645,7 @@ \refractionRay(#6)(#6')(! Y mT sub X 1 sub neg)% (! Y mT add X 1 add neg){#5}{#4}{tempSPHRay} \pnode(tempSPHRay'){#6''} -}} +}\ignorespaces} % % Intersection Point of ray and sperical lense % 2003-02-03 Herbert @@ -713,16 +654,16 @@ % #4: the intersection point % \def\ABinterSPHLens(#1)(#2)(#3)#4{% - \pst@getcoor{#1}\pst@tempa - \pst@getcoor{#2}\pst@tempb + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB \pst@getcoor{#3}\pst@tempm % calculate the intersection point. we change the coordinates - \ifx\psk@optic@lensType\Type% CVG + \ifx\psk@optic@lensType\lensType% CVG \pnode(!% - /YA \pst@tempa pop \pst@number\psxunit div def - /XA \pst@tempa exch pop \pst@number\psyunit div neg def - /YB \pst@tempb pop \pst@number\psxunit div def - /XB \pst@tempb exch pop \pst@number\psyunit div neg def + /YA \pst@tempA pop \pst@number\psxunit div def + /XA \pst@tempA exch pop \pst@number\psyunit div neg def + /YB \pst@tempB pop \pst@number\psxunit div def + /XB \pst@tempB exch pop \pst@number\psyunit div neg def /YM \pst@tempm pop \pst@number\psxunit div def /XM \pst@tempm exch pop \pst@number\psyunit div neg def % /radius YM abs Width2 add def @@ -752,10 +693,10 @@ } ifelse){#4} \else% DVG \pnode(!% - /YA \pst@tempa pop \pst@number\psxunit div def - /XA \pst@tempa exch pop \pst@number\psyunit div neg def - /YB \pst@tempb pop \pst@number\psxunit div def - /XB \pst@tempb exch pop \pst@number\psyunit div neg def + /YA \pst@tempA pop \pst@number\psxunit div def + /XA \pst@tempA exch pop \pst@number\psyunit div neg def + /YB \pst@tempB pop \pst@number\psxunit div def + /XB \pst@tempB exch pop \pst@number\psyunit div neg def /YM \pst@tempm pop \pst@number\psxunit div def /XM \pst@tempm exch pop \pst@number\psyunit div neg def % /radius YM abs Width2 add def @@ -795,13 +736,12 @@ \def\pst@lens[#1]{{% \psset{xLeft=-7.5,xRight=7.5,yBottom=-3,yTop=3}% \psset{#1}% - \pst@killglue -% + \pst@killglue% % trace les rayons % calcule la position de l'image \begin{pspicture*}(\psk@optic@xLeft,\psk@optic@yBottom)(\psk@optic@xRight,\psk@optic@yTop) - \pnode(! \psk@optic@xLeft\space 0){xLeft} - \pnode(! \psk@optic@xRight\space 0){xRight} + \pnode(! \psk@optic@xLeft\space 0){xLeft}% + \pnode(! \psk@optic@xRight\space 0){xRight}% \ifPst@lensTwo \pnode(!% /OF' \psk@optic@focus\space def @@ -816,8 +756,8 @@ /OA' OA OF' mul OA OF' add div def /Gamma OA' OA div def /A'B' Gamma AB mul def - OA' XO add YO){A'} - \pnode(! OA XO add YO){A} + OA' XO add YO){A'}% + \pnode(! OA XO add YO){A}% \pnode(! OA XO add AB YO add){B} \pnode(! OF' XO add YO){F'} \pnode(! OF' neg XO add YO){F} @@ -827,7 +767,7 @@ \pnode(! XO A'B' YO add){I'} \pnode(! \psk@optic@xRight\space A'B' YO add){I1} \pnode(! \psk@optic@xRight\space neg A'B' YO add){I2} - \else + \else% \pnode(!% /OF' \psk@optic@focus\space def /AB \psk@optic@AB\space def @@ -840,39 +780,35 @@ /Gamma OA' OA div def /A'B' Gamma AB mul def OA' XO add YO){A'} - \pnode(! OA XO add YO){A} - \pnode(! OA XO add AB YO add){B} - \pnode(! OF' XO add YO){F'} - \pnode(! OF' neg XO add YO){F} - \pnode(! OA' XO add A'B' YO add){B'} - \pnode(! XO YO){O} - \pnode(! XO AB YO add){I} - \pnode(! XO A'B' YO add){I'} - \pnode(! \psk@optic@xRight\space A'B' YO add){I1} - \pnode(! \psk@optic@xRight\space neg A'B' YO add){I2} - \fi - \begingroup - \ifPst@lensGlass - \rput(! XO YO){\ifx\psk@optic@lensType\Type\lensCVG\else\lensDVG\fi}% - \else - \ifx\psk@optic@lensType\Type - \psset{arrows=<->} - \else - \psset{arrows=>-<} - \fi + \pnode(! OA XO add YO){A}% + \pnode(! OA XO add AB YO add){B}% + \pnode(! OF' XO add YO){F'}% + \pnode(! OF' neg XO add YO){F}% + \pnode(! OA' XO add A'B' YO add){B'}% + \pnode(! XO YO){O}% + \pnode(! XO AB YO add){I}% + \pnode(! XO A'B' YO add){I'}% + \pnode(! \psk@optic@xRight\space A'B' YO add){I1}% + \pnode(! \psk@optic@xRight\space neg A'B' YO add){I2}% + \fi% + \begingroup% + \ifPst@lensGlass% + \rput(! XO YO){\ifx\psk@optic@lensType\lensType\lensCVG\else\lensDVG\fi}% + \else% + \ifx\psk@optic@lensType\lensType\psset{arrows=<->}\else\psset{arrows=>-<}\fi% \psline[linecolor=\psk@optic@lensColor, linewidth=\psk@optic@lensWidth,arrowsize=\psk@optic@lensArrowSize, arrowinset=\psk@optic@lensArrowInset]% (! XO -0.5 \psk@optic@lensHeight\space mul \psk@optic@lensScale\space mul YO add)% (! XO 0.5 \psk@optic@lensHeight\space mul - \psk@optic@lensScale\space mul YO add) - \fi + \psk@optic@lensScale\space mul YO add)% + \fi% \endgroup% \ifPst@drawing % axe optique \psline(! \psk@optic@xLeft\space YO)(! \psk@optic@xRight\space YO) - \ifx\psk@optic@lensType\Type + \ifx\psk@optic@lensType\lensType% % Position des foyers \psdots[dotstyle=|](F') \uput[\psk@optic@spotFi](F'){$\mathrm{\psk@optic@nameFi}$} @@ -921,14 +857,14 @@ \psline[linestyle=dashed](B')(I') %\uput[45](I'){I'} %\uput[45](I){I} - \uput[\psk@optic@spotA](A){$\mathrm{\psk@optic@nameA}$} - \uput[\psk@optic@spotB](B){$\mathrm{\psk@optic@nameB}$} - \uput[\psk@optic@spotAi](A'){$\mathrm{\psk@optic@nameAi}$} - \uput[\psk@optic@spotBi](B'){$\mathrm{\psk@optic@nameBi}$} - \uput[\psk@optic@spotO](O){$\mathrm{\psk@optic@nameO}$} - \fi -\fi -\end{pspicture*} + \uput[\psk@optic@spotA](A){$\mathrm{\psk@optic@nameA}$}% + \uput[\psk@optic@spotB](B){$\mathrm{\psk@optic@nameB}$}% + \uput[\psk@optic@spotAi](A'){$\mathrm{\psk@optic@nameAi}$}% + \uput[\psk@optic@spotBi](B'){$\mathrm{\psk@optic@nameBi}$}% + \uput[\psk@optic@spotO](O){$\mathrm{\psk@optic@nameO}$}% + \fi% +\fi% +\end{pspicture*}% }\ignorespaces} % % 25 december 2002 Herbert <voss@perce.de> @@ -987,7 +923,7 @@ %Le dessin de la lentille % \def\lensCVG{% - \scalebox{\psk@optic@lensScale}{% + \psscalebox{\psk@optic@lensScale}{% \pscustom[linewidth=0.75\pslinewidth]{% \pslensCVG{\psk@optic@lensWidth}{\psk@optic@lensHeight} \fill[fillstyle=solid,fillcolor=BleuVerre] @@ -996,7 +932,7 @@ } % \def\lensDVG{% - \scalebox{\psk@optic@lensScale}{% + \psscalebox{\psk@optic@lensScale}{% \pscustom[linewidth=0.75\pslinewidth]{% \pslensDVG{\psk@optic@lensWidth}{\psk@optic@lensHeight} \fill[fillstyle=solid,fillcolor=BleuVerre]% @@ -1025,13 +961,13 @@ % %intersection d'un rayon avec une lentille \def\rayInterLens(#1)(#2)#3#4{{% - \pst@getcoor{#1}\pst@tempa - \pst@getcoor{#2}\pst@tempb + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB \pnode(!% /LengthArrow \psk@optic@length\space def - \pst@tempa /YE1 exch \pst@number\psyunit div def + \pst@tempA /YE1 exch \pst@number\psyunit div def /XE1 exch \pst@number\psxunit div def - \pst@tempb /YB1 exch \pst@number\psyunit div def + \pst@tempB /YB1 exch \pst@number\psyunit div def /XB1 exch \pst@number\psxunit div def /XO2 #3 def /YO2 YB1 YE1 sub @@ -1061,25 +997,25 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -\def\mirrorCVGRay{\@ifnextchar[{% Herbert 2003/01/05 - \pst@mirrorCVGRay}{\pst@mirrorCVGRay[]}} +\def\mirrorCVGRay{\@ifnextchar[{\pst@mirrorCVGRay}{\pst@mirrorCVGRay[]}}% Herbert 2003/01/05 \def\pst@mirrorCVGRay[#1](#2)(#3)#4{{% - \psset{#1}% -% - \ifx\psk@optic@mirrorType\mirrorType% PARA - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb - \pnode(!% - \psk@optic@mirrorHeight\space dup mul 16 div - \psk@optic@mirrorDepth\space div XO add YO){Focus} + \psset{#1}% + \ifx\psk@optic@mirrorType\mirrorType % CVG +\typeout{====>\mirrorType} +\typeout{====>\psk@optic@mirrorType} + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB + \pnode(!% + \psk@optic@mirrorHeight\space dup mul 16 div + \psk@optic@mirrorDepth\space div XO add YO){Focus} \pnode(!% /Xmax \psk@optic@mirrorHeight\space 2 div def /Ymax \psk@optic@mirrorDepth\space def /A 2 \psk@optic@mirrorHeight\space div dup mul Ymax mul def - /XA \pst@tempa exch pop \pst@number\psyunit div neg def - /YA \pst@tempa pop \pst@number\psxunit div def - /XB \pst@tempb exch pop \pst@number\psyunit div neg def - /YB \pst@tempb pop \pst@number\psxunit div def + /XA \pst@tempA exch pop \pst@number\psyunit div neg def + /YA \pst@tempA pop \pst@number\psxunit div def + /XB \pst@tempB exch pop \pst@number\psyunit div neg def + /YB \pst@tempB pop \pst@number\psxunit div def XB XA sub abs 0.01 lt {A XA dup mul mul XA neg}{ /m YB YA sub XB XA sub div def /m2a m A div 2 div def @@ -1092,10 +1028,10 @@ /XSn Xn XA add neg def YA 0 eq {0 0}{XB XA lt {YSn XSn}{YSp XSp} ifelse} ifelse} ifelse) {#4} \pst@getcoor{#2}\pst@tempc% the starting point - \pst@getcoor{#4}\pst@tempa% the point on the mirror + \pst@getcoor{#4}\pst@tempA% the point on the mirror \pnode(!% - /XA \pst@tempa exch pop \pst@number\psyunit div neg def - /YA \pst@tempa pop \pst@number\psxunit div def + /XA \pst@tempA exch pop \pst@number\psyunit div neg def + /YA \pst@tempA pop \pst@number\psxunit div def /XC \pst@tempc exch pop \pst@number\psyunit div neg def /YC \pst@tempc pop \pst@number\psxunit div def % Mittelpunktsstrahl? @@ -1143,20 +1079,18 @@ } ifelse } ifelse } ifelse){#4'} -%{\psset{linecolor=cyan} -%\qdisk(#4'){3pt}} - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#4'}\pst@tempb + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#4'}\pst@tempB \pst@getcoor{#4}\pst@tempc \pnode(!% - /XB \pst@tempb exch pop \pst@number\psyunit div neg def - /YB \pst@tempb pop \pst@number\psxunit div def + /XB \pst@tempB exch pop \pst@number\psyunit div neg def + /YB \pst@tempB pop \pst@number\psxunit div def NoMoreReflection {YB XB neg}{% /XC \pst@tempc exch pop \pst@number\psyunit div neg def /YC \pst@tempc pop \pst@number\psxunit div def - /XAtemp \pst@tempa exch pop \pst@number\psyunit div neg def - /YAtemp \pst@tempa pop \pst@number\psxunit div def + /XAtemp \pst@tempA exch pop \pst@number\psyunit div neg def + /YAtemp \pst@tempA pop \pst@number\psxunit div def /m1 2 A mul XB mul def /Alpha2 m1 abs 0.01 lt {90}{1 neg m1 atan} ifelse def /Beta XB XC sub abs 0.01 gt @@ -1172,30 +1106,31 @@ } ifelse ){#4''} \else %--------------- A Spherical Mirror ----------------- +\typeout{====>\mirrorType} +\typeout{====>\psk@optic@mirrorType} \ABinterSPHLens(#2)(#3)(Center){tempRef0} - \pst@getcoor{tempRef0}\pst@tempa - \pst@getcoor{tempRef0'}\pst@tempb + \pst@getcoor{tempRef0}\pst@tempA + \pst@getcoor{tempRef0'}\pst@tempB \pnode(!% - \pst@tempa /Y1 exch \pst@number\psyunit div def + \pst@tempA /Y1 exch \pst@number\psyunit div def /X1 exch \pst@number\psxunit div def - \pst@tempb /Y2 exch \pst@number\psyunit div def + \pst@tempB /Y2 exch \pst@number\psyunit div def /X2 exch \pst@number\psxunit div def X1 X2 lt {X1 Y1}{X2 Y2}ifelse ){#4} \reflectionRay[#1](#2)(#4){tempRef1} % we try if we have another intermediate point \ABinterSPHLens(#4)(tempRef1)(Center){tempRef2} - \pst@getcoor{#4}\pst@tempa - \pst@getcoor{tempRef2}\pst@tempb + \pst@getcoor{#4}\pst@tempA + \pst@getcoor{tempRef2}\pst@tempB \pst@getcoor{tempRef2'}\pst@tempc \pnode(!% - \pst@tempa /YP exch \pst@number\psyunit div def + \pst@tempA /YP exch \pst@number\psyunit div def /XP exch \pst@number\psxunit div def - \pst@tempb /Y1 exch \pst@number\psyunit div def + \pst@tempB /Y1 exch \pst@number\psyunit div def /X1 exch \pst@number\psxunit div def \pst@tempc /Y2 exch \pst@number\psyunit div def /X2 exch \pst@number\psxunit div def - XP X1 sub abs 0.01 gt {X1 Y1}{X2 Y2}ifelse - ){#4'} + XP X1 sub abs 0.01 gt {X1 Y1}{X2 Y2} ifelse ){#4'} \reflectionRay[#1](tempRef1)(#4'){#4''} \psset{mirrorType=CVG}% restore \fi @@ -1204,111 +1139,91 @@ \psline[#1](#4)(#4') \psline[#1](#4')(#4'') \fi -}} +}\ignorespaces} % % -\def\mirrorCVG{\@ifnextchar[{% Herbert Voss 2003/01/05 - \pst@mirrorCVG}{\pst@mirrorCVG[]}} +\def\mirrorCVG{\@ifnextchar[{\pst@mirrorCVG}{\pst@mirrorCVG[]}}% Herbert Voss 2003/01/05 \def\pst@mirrorCVG[#1]{{% - \psset{% - mirrorType=CVG,% - AB=1.25,OA=4.5,% - XO=0,YO=0,xLeft=-5,xRight=5,yBottom=-3,yTop=3,% - mirrorHeight=5,mirrorDepth=1,mirrorWidth=0.2} - \psset{#1} - \begin{pspicture}(\psk@optic@xLeft,\psk@optic@yBottom)(\psk@optic@xRight,\psk@optic@yTop) - \pnode(! \psk@optic@xLeft\space 0){xLeft} - \pnode(! \psk@optic@xRight\space 0){xRight} - \pstVerb{% - /Height \psk@optic@mirrorHeight\space 2.0 div def - /Depth \psk@optic@mirrorDepth\space def - /Width \psk@optic@mirrorWidth\space def - } - \pnode(!% - /AB \psk@optic@AB\space def - /OA \psk@optic@OA\space def - /XO \psk@optic@XO\space def - /YO \psk@optic@YO\space def - OA XO add YO){A} - \pnode(! OA XO add AB YO add){B} - \pnode(! XO YO){O} - \ifx\psk@optic@mirrorType\mirrorType - \pnode(!% - \psk@optic@mirrorHeight\space dup mul 16 div - \psk@optic@mirrorDepth\space div XO add YO){Focus} - \else - \pnode(!% - /radius \psk@optic@mirrorHeight\space dup mul 4 div - \psk@optic@mirrorDepth\space dup mul add - 2 div \psk@optic@mirrorDepth\space div def - radius XO add YO){Center} - \pnode(! radius 2 div XO add YO){Focus} - \fi - \pscustom[fillstyle=solid,% - fillcolor=\psk@optic@mirrorColor,% - linecolor=\psk@optic@mirrorColor]{% - % (d,h/2)->(d-w,h/2) - \psline(!% - \psk@optic@mirrorDepth\space \psk@optic@mirrorHeight\space 2 div)(!% - \psk@optic@mirrorDepth\space \psk@optic@mirrorWidth\space sub - \psk@optic@mirrorHeight\space 2 div) - % (-w/2,h/2)->(-w/2,-h/2) - \ifx\psk@optic@mirrorType\mirrorType - \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% - 2 \psk@optic@mirrorHeight\space div dup mul \psk@optic@mirrorDepth\space mul - t 2 exp 4 div mul \psk@optic@mirrorWidth\space sub t 2 div - } - \else - \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% - /radD radius \psk@optic@mirrorWidth\space add def - radius \psk@optic@mirrorWidth\space sub radD dup mul t 2 div dup mul sub sqrt sub - t 2 div - } + \psset{AB=1.25,OA=4.5,XO=0,YO=0,xLeft=-5,xRight=5,yBottom=-3,yTop=3,% + mirrorHeight=5,mirrorDepth=1,mirrorWidth=0.2}% + \psset{#1} + \def\mirrorType{CVG}% + \begin{pspicture}(\psk@optic@xLeft,\psk@optic@yBottom)(\psk@optic@xRight,\psk@optic@yTop) + \pnode(\psk@optic@xLeft, 0){xLeft} + \pnode(\psk@optic@xRight, 0){xRight} + \pstVerb{% + /Height \psk@optic@mirrorHeight\space 2.0 div def + /Depth \psk@optic@mirrorDepth\space def + /Width \psk@optic@mirrorWidth\space def + /AB \psk@optic@AB\space def + /OA \psk@optic@OA\space def + /XO \psk@optic@XO\space def + /YO \psk@optic@YO\space def + /radius Height dup mul Depth dup mul add 2 div Depth div def + } + \pnode(! OA XO add YO){A} + \pnode(! OA XO add AB YO add){B} + \pnode(! XO YO){O} + \ifx\psk@optic@mirrorType\mirrorType % CVG + \pnode(! + \psk@optic@mirrorHeight\space dup mul 16 div + \psk@optic@mirrorDepth\space div XO add YO){Focus} + \else % SPH + \pnode(! radius XO add YO){Center} + \pnode(! radius 2 div XO add YO){Focus} \fi + \pscustom[fillstyle=solid,fillcolor=\psk@optic@mirrorColor,% + linecolor=\psk@optic@mirrorColor]{% + % (d,h/2)->(d-w,h/2) + \psline(!% + \psk@optic@mirrorDepth\space \psk@optic@mirrorHeight\space 2 div)(!% + \psk@optic@mirrorDepth\space \psk@optic@mirrorWidth\space sub + \psk@optic@mirrorHeight\space 2 div) + % (-w/2,h/2)->(-w/2,-h/2) + \ifx\psk@optic@mirrorType\mirrorType % CVG or SPH + \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% + 2 \psk@optic@mirrorHeight\space div dup mul \psk@optic@mirrorDepth\space mul + t 2 exp 4 div mul \psk@optic@mirrorWidth\space sub t 2 div } + \else + \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% + /radD radius \psk@optic@mirrorWidth\space add def + radius \psk@optic@mirrorWidth\space sub radD dup mul t 2 div dup mul sub sqrt sub t 2 div } + \fi % (d-w,-h/2)(d,-h/2) - \psline(!% - \psk@optic@mirrorDepth\space \psk@optic@mirrorWidth\space sub - \psk@optic@mirrorHeight\space 2 div neg)(!% - \psk@optic@mirrorDepth\space \psk@optic@mirrorHeight\space 2 div neg) + \psline(!% + \psk@optic@mirrorDepth\space \psk@optic@mirrorWidth\space sub + \psk@optic@mirrorHeight\space 2 div neg)(!% + \psk@optic@mirrorDepth\space \psk@optic@mirrorHeight\space 2 div neg) % (w/2,-h/2)->(w/2,h/2) - \ifx\psk@optic@mirrorType\mirrorType - \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% + \ifx\psk@optic@mirrorType\mirrorType % CVG or SPH + \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% 2 \psk@optic@mirrorHeight\space div dup mul \psk@optic@mirrorDepth\space mul - t 2 exp 4 div mul t 2 div - } - \else - \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% - radius dup dup mul t 2 div dup mul sub sqrt sub - t 2 div - } - \fi - \fill + t 2 exp 4 div mul t 2 div } + \else + \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% + radius dup dup mul t 2 div dup mul sub sqrt sub t 2 div } + \fi + \fill } \ifPst@drawing \psline[linewidth=0.5pt,linecolor=black](O)(xRight) - \ifx\psk@optic@mirrorType\mirrorType - \else - \qdisk(Center){1.5pt}\uput{0.2}[-90](Center){Center} - \fi + \ifx\psk@optic@mirrorType\mirrorType\qdisk(Center){1.5pt}\uput{0.2}[-90](Center){Center}\fi \qdisk(Focus){2pt}\uput[0](Focus){F} \psline[linewidth=3\pslinewidth]{->}(A)(B) - \psset{% - linewidth=\pslinewidth,% - linecolor=\psk@optic@rayColor,% - arrows=>} + \psset{linewidth=\pslinewidth,linecolor=\psk@optic@rayColor,arrows=>} \uput[0](A){A} \uput[0](B){B} \pnode(! 1 \psk@optic@AB\space){Dummy} - \mirrorCVGRay[mirrorType=\psk@optic@mirrorType,drawing=false](B)(Dummy){PR} - \psOutLine[length=\psk@optic@OA](PR)(PR'){PR''} - \nodeBetween(B)(PR){Dummy} - \psline(B)(Dummy) - \psline(Dummy)(PR) - \nodeBetween(PR)(PR''){Dummy} - \psline(PR)(Dummy) - \psline(Dummy)(PR'') -% - \mirrorCVGRay[mirrorType=\psk@optic@mirrorType,drawing=false](B)(! 0 0){MR} + \mirrorCVGRay[drawing=false](B)(Dummy){PR} + \psOutLine[length=\psk@optic@OA](PR)(PR'){PR''} + \nodeBetween(B)(PR){Dummy} + \psline(B)(Dummy) + \psline(Dummy)(PR) + \nodeBetween(PR)(PR''){Dummy} + \psline(PR)(Dummy) + \psline(Dummy)(PR'') +% + \mirrorCVGRay[drawing=false](B)(0, 0){MR} \psOutLine[length=\psk@optic@OA](MR)(MR'){MR''} \nodeBetween(B)(MR){Dummy} \psline(B)(Dummy) @@ -1317,7 +1232,7 @@ \psline(MR)(Dummy) \psline(Dummy)(MR') % - \mirrorCVGRay[mirrorType=\psk@optic@mirrorType,drawing=false](B)(Focus){FR} + \mirrorCVGRay[drawing=false](B)(Focus){FR} \psOutLine[length=\psk@optic@OA](FR)(FR'){FR''} \nodeBetween(B)(FR){Dummy} \psline(B)(Dummy) @@ -1332,145 +1247,126 @@ \uput[45](A'){A'} \uput[-45](B'){B'} \fi - \end{pspicture} -}} + \end{pspicture}% +}\ignorespaces} % % \def\mirrorDVG{\@ifnextchar[{% Herbert Voss 2003/01/05 \pst@mirrorDVG}{\pst@mirrorDVG[]}} \def\pst@mirrorDVG[#1]{{% - \psset{% the defaults - AB=1.25,OA=4,XO=0,YO=0,% - xLeft=-5,xRight=5,yBottom=-3,yTop=3,% - mirrorHeight=5,mirrorDepth=1,mirrorWidth=0.2} - \psset{#1}% - \pstVerb{% - /Height \psk@optic@mirrorHeight\space 2 div def - /Depth \psk@optic@mirrorDepth\space def - /Width \psk@optic@mirrorWidth\space def - } - \begin{pspicture}(\psk@optic@xLeft,\psk@optic@yBottom)(\psk@optic@xRight,\psk@optic@yTop) - \pnode(! \psk@optic@xLeft\space 0){xLeft} - \pnode(! \psk@optic@xRight\space 0){xRight} - \pnode(!% - /AB \psk@optic@AB\space def - /OA \psk@optic@OA\space def - /XO \psk@optic@XO\space def - /YO \psk@optic@YO\space def - OA XO add YO){A} - \pnode(! OA XO add AB YO add){B} - \pnode(! XO YO){O} + \psset{% the defaults + AB=1.25,OA=4,XO=0,YO=0,xLeft=-5,xRight=5,yBottom=-3,yTop=3,% + mirrorHeight=5,mirrorDepth=1,mirrorWidth=0.2,mirrorType=DVG}% + \def\mirrorType{DVG}% + \psset{#1}% + \pstVerb{ + /Height \psk@optic@mirrorHeight\space 2 div def + /Depth \psk@optic@mirrorDepth\space def + /Width \psk@optic@mirrorWidth\space def + /radius Height dup mul Depth dup mul add 2 div Depth div def + /AB \psk@optic@AB\space def + /OA \psk@optic@OA\space def + /XO \psk@optic@XO\space def + /YO \psk@optic@YO\space def + } + \begin{pspicture}(\psk@optic@xLeft,\psk@optic@yBottom)(\psk@optic@xRight,\psk@optic@yTop) + \pnode(! \psk@optic@xLeft\space 0){xLeft} + \pnode(! \psk@optic@xRight\space 0){xRight} + \pnode(! OA XO add YO){A} + \pnode(! OA XO add AB YO add){B} + \pnode(! XO YO){O} + \ifx\psk@optic@mirrorType\mirrorType % DVG + \pnode(! Height dup mul 4 div Depth div XO add YO){Focus} + \else % SPH + \pnode(! radius neg XO add YO){Center} + \pnode(! radius 2 div XO add YO){Focus} + \fi + \pscustom[fillstyle=solid,% + fillcolor=\psk@optic@mirrorColor,% + linecolor=\psk@optic@mirrorColor]{% + % (d,h/2)->(d-w,h/2) + \psline(! Depth neg Height)(! Depth Width add neg Height) + % (-w/2,h/2)->(-w/2,-h/2) \ifx\psk@optic@mirrorType\mirrorType - \pnode(! Height dup mul 4 div Depth div XO add YO){Focus} + \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% + Depth Height dup mul div t 2 exp 4 div mul neg t 2 div } \else - \pnode(!% - /radius Height dup mul Depth dup mul add 2 div Depth div def - radius neg XO add YO){Center} - \pnode(! radius 2 div XO add YO){Focus} + \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% + radius dup mul t 2 div dup mul sub sqrt radius sub t 2 div } \fi - \pscustom[fillstyle=solid,% - fillcolor=\psk@optic@mirrorColor,% - linecolor=\psk@optic@mirrorColor]{% - % (d,h/2)->(d-w,h/2) - \psline(! Depth neg Height)(! Depth Width add neg Height) - % (-w/2,h/2)->(-w/2,-h/2) - \ifx\psk@optic@mirrorType\mirrorType - \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% - Depth Height dup mul div t 2 exp 4 div mul neg - t 2 div - } - \else - \parametricplot{\psk@optic@mirrorHeight}{-\psk@optic@mirrorHeight}{% - radius dup mul t 2 div dup mul sub sqrt radius sub - t 2 div - } - \fi - % (d-w,-h/2)(d,-h/2) - \psline(! Depth Width add neg Height neg)(! Depth neg Height neg)% - % (w/2,-h/2)->(w/2,h/2) - \ifx\psk@optic@mirrorType\mirrorType - \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% - Depth Height dup mul div t 2 exp 4 div mul neg Width sub - t 2 div - } - \else - \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% - radius Width sub dup mul t 2 div dup mul sub sqrt radius sub - t 2 div - } - \fi - \fill - } - \ifPst@drawing - \psline[linecolor=black,linewidth=0.5pt](xLeft)(xRight) - \qdisk(Center){2pt}\uput[-90](Center){C} - \qdisk(Focus){2pt}\uput{0.25}[-90](Focus){F} - \psline[linewidth=3\pslinewidth,arrowinset=0]{->}(A)(B) - \psset{% - linewidth=1.5\pslinewidth,% - linecolor=\psk@optic@rayColor,% - arrows=->% - } - \uput{0.15}[0](A){A} - \uput{0.15}[0](B){B} -% - \mirrorDVGRay[% - mirrorType=\psk@optic@mirrorType,% - drawing=false](B)(! 0 \psk@optic@AB){PR} - \qdisk(PR){1.5pt}\uput{0.2}[180](PR){PR} - \qdisk(PR'){1.5pt}\uput{0.2}[0](PR'){PR'} - \nodeBetween(B)(PR){PDummy} - \psline(B)(PDummy) - \psline(PDummy)(PR) - \psline[arrows=-, linestyle=dotted](Focus)(PR) - \psOutLine[arrows=-,linestyle=dotted](P)(Focus){PBegin} - \psline(PR)(PR') -% - \mirrorDVGRay[% - mirrorType=\psk@optic@mirrorType,% - drawing=false](B)(! 0 0){MR} - \qdisk(MR){1.5pt}\uput{0.2}[180](MR){MR} - \qdisk(MR'){1.5pt}\uput{0.2}[0](MR'){MR'} - \nodeBetween(B)(! 0 0){MDummy} - \psline(B)(MDummy) - \psline(MDummy)(! 0 0) - \psline(MR)(MR') -% - \mirrorDVGRay[% - mirrorType=\psk@optic@mirrorType,% - drawing=false](B)(Focus){FR} - \qdisk(FR){1.5pt}\uput{0.2}[180](FR){FR} - \qdisk(FR'){1.5pt}\uput{0.2}[0](FR'){FR'} - \nodeBetween(B)(FR){Dummy} - \psline(B)(Dummy) - \psline(Dummy)(FR) - \psline(FR)(FR') - \psline[arrows=-,linestyle=dotted](Focus)(FR) - \psOutLine[arrows=-, linestyle=dotted](FR)(Focus){PBegin} - \fi - \end{pspicture} -}} + % (d-w,-h/2)(d,-h/2) + \psline(! Depth Width add neg Height neg)(! Depth neg Height neg)% + % (w/2,-h/2)->(w/2,h/2) + \ifx\psk@optic@mirrorType\mirrorType + \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% + Depth Height dup mul div t 2 exp 4 div mul neg Width sub t 2 div } + \else + \parametricplot{-\psk@optic@mirrorHeight}{\psk@optic@mirrorHeight}{% + radius Width sub dup mul t 2 div dup mul sub sqrt radius sub t 2 div } + \fi + \fill% + } + \ifPst@drawing + \psline[linecolor=black,linewidth=0.5pt](xLeft)(xRight) + \qdisk(Center){2pt}\uput[-90](Center){C} + \qdisk(Focus){2pt}\uput{0.25}[-90](Focus){F} + \psline[linewidth=3\pslinewidth,arrowinset=0]{->}(A)(B) + \psset{linewidth=1.5\pslinewidth,linecolor=\psk@optic@rayColor,arrows=->} + \uput{0.15}[0](A){A} + \uput{0.15}[0](B){B} +% + \mirrorDVGRay[drawing=false](B)(0,\psk@optic@AB){PR} +% mirrorType=\psk@optic@mirrorType,drawing=false](B)(0,\psk@optic@AB){PR} + \qdisk(PR){1.5pt}\uput{0.2}[180](PR){PR} + \qdisk(PR'){1.5pt}\uput{0.2}[0](PR'){PR'} + \nodeBetween(B)(PR){PDummy} + \psline(B)(PDummy) + \psline(PDummy)(PR) + \psline[arrows=-, linestyle=dotted](Focus)(PR) + \psOutLine[arrows=-,linestyle=dotted](P)(Focus){PBegin} + \psline(PR)(PR') +% + \mirrorDVGRay[drawing=false](B)(! 0 0){MR} +% mirrorType=\psk@optic@mirrorType,% + \qdisk(MR){1.5pt}\uput{0.2}[180](MR){MR} + \qdisk(MR'){1.5pt}\uput{0.2}[0](MR'){MR'} + \nodeBetween(B)(! 0 0){MDummy} + \psline(B)(MDummy) + \psline(MDummy)(! 0 0) + \psline(MR)(MR') +% + \mirrorDVGRay[drawing=false](B)(Focus){FR} +% mirrorType=\psk@optic@mirrorType,% + \qdisk(FR){1.5pt}\uput{0.2}[180](FR){FR} + \qdisk(FR'){1.5pt}\uput{0.2}[0](FR'){FR'} + \nodeBetween(B)(FR){Dummy} + \psline(B)(Dummy) + \psline(Dummy)(FR) + \psline(FR)(FR') + \psline[arrows=-,linestyle=dotted](Focus)(FR) + \psOutLine[arrows=-, linestyle=dotted](FR)(Focus){PBegin} + \fi + \end{pspicture}% +}\ignorespaces} % -\def\mirrorDVGRay{\@ifnextchar[{% Herbert Voss 2003/01/05 - \pst@mirrorDVGRay}{\pst@mirrorDVGRay[]}} +\def\mirrorDVGRay{\@ifnextchar[{\pst@mirrorDVGRay}{\pst@mirrorDVGRay[]}}% Herbert Voss 2003/01/05 \def\pst@mirrorDVGRay[#1](#2)(#3)#4{{% - \psset{#1}% + \psset{#1}% + \pnode(!% + \psk@optic@mirrorHeight\space dup mul 16 div + \psk@optic@mirrorDepth\space div neg 0){Focus} + \ifx\psk@optic@mirrorType\mirrorType % DVG or Spherical + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB \pnode(!% - \psk@optic@mirrorHeight\space dup mul 16 div - \psk@optic@mirrorDepth\space div neg 0){Focus} - \ifx\psk@optic@mirrorType\mirrorType - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb - \pnode(!% - /A 2 \psk@optic@mirrorHeight\space div dup mul \psk@optic@mirrorDepth\space mul neg def - /XA \pst@tempa exch pop \pst@number\psyunit div neg def - /YA \pst@tempa pop \pst@number\psxunit div def - /XB \pst@tempb exch pop \pst@number\psyunit div neg def - /YB \pst@tempb pop \pst@number\psxunit div def - XB abs 0.001 lt YB abs 0.001 lt and - { 0 0 }{ + /A 2 \psk@optic@mirrorHeight\space div dup mul \psk@optic@mirrorDepth\space mul neg def + /XA \pst@tempA exch pop \pst@number\psyunit div neg def + /YA \pst@tempA pop \pst@number\psxunit div def + /XB \pst@tempB exch pop \pst@number\psyunit div neg def + /YB \pst@tempB pop \pst@number\psxunit div def + XB abs 0.001 lt YB abs 0.001 lt and { 0 0 }{ XB XA sub abs 0.01 lt - {A XA dup mul mul XA neg}{ + {A XA dup mul mul XA neg}{ /Xmax \psk@optic@mirrorHeight\space 2 div def /m YB YA sub XB XA sub div def /m2a m A div 2 div def @@ -1486,14 +1382,14 @@ } ifelse } ifelse){#4} % #4 is the point on the mirror - \pst@getcoor{#2}\pst@tempc% the starting point - \pst@getcoor{#4}\pst@tempa% the point on the mirror + \pst@getcoor{#2}\pst@tempC% the starting point + \pst@getcoor{#4}\pst@tempA% the point on the mirror \pst@getcoor{Focus}\pst@tempf% the point on the mirror \pnode(! - /XA \pst@tempa exch pop \pst@number\psyunit div neg def - /YA \pst@tempa pop \pst@number\psxunit div def - /XC \pst@tempc exch pop \pst@number\psyunit div neg def - /YC \pst@tempc pop \pst@number\psxunit div def + /XA \pst@tempA exch pop \pst@number\psyunit div neg def + /YA \pst@tempA pop \pst@number\psxunit div def + /XC \pst@tempC exch pop \pst@number\psyunit div neg def + /YC \pst@tempC pop \pst@number\psxunit div def XA abs 0.001 lt YA abs 0.001 lt and {YC XC}{ /YF \pst@tempf pop \pst@number\psxunit div def @@ -1513,12 +1409,12 @@ \else %--------------- A Spherical Mirror ----------------- \ABinterSPHLens(#2)(#3)(Center){tempRef0} - \pst@getcoor{tempRef0}\pst@tempa - \pst@getcoor{tempRef0'}\pst@tempb + \pst@getcoor{tempRef0}\pst@tempA + \pst@getcoor{tempRef0'}\pst@tempB \pnode(!% - \pst@tempa /Y1 exch \pst@number\psyunit div def + \pst@tempA /Y1 exch \pst@number\psyunit div def /X1 exch \pst@number\psxunit div def - \pst@tempb /Y2 exch \pst@number\psyunit div def + \pst@tempB /Y2 exch \pst@number\psyunit div def /X2 exch \pst@number\psxunit div def X1 X2 gt {X1 Y1}{X2 Y2}ifelse ){#4} \reflectionRay[mirrorType=SPH](#2)(#4){tempRef1} @@ -1527,8 +1423,9 @@ \ifPst@drawing \psline[#1](#2)(#4)(#4') \fi -}} +}\ignorespaces} % + % HEadlight Herbert <voss@perce.de> 2003/01/23 % \def\beamLight{\@ifnextchar[{\pst@beamLight}{\pst@beamLight[]}} @@ -1554,8 +1451,8 @@ \psline(3.0,0)(3.0,-0.3)(2.5,-0.3)(2.2,0.15)(2,-0.15)% (1.8,0.15)(1.6,-0.15)(1.4,0.15)(1.2,-0.15)(1,0.15)% \psline[linecolor=black,linewidth=0.5pt,linestyle=dashed](-1.75,0)(10,0) -\end{pspicture*} -}} +\end{pspicture*}% +}\ignorespaces} % % %Telescope @@ -1572,7 +1469,8 @@ \def\telescope{\@ifnextchar[{\pst@telescope}{\pst@telescope[]}} \def\pst@telescope[#1]{{% \psset{xLeft=-0.5,xRight=11,yBottom=-6,yTop=2}% the default - \psset{#1}% + \def\@tempa{#1}% + \ifx\@tempa\@empty\else\psset{#1}\fi% \pstVerb{% /mirrorFocus \psk@optic@mirrorFocus\space def /Coeff mirrorFocus 4 mul def @@ -1581,68 +1479,68 @@ }% % \begin{pspicture}*(\psk@optic@xLeft,\psk@optic@yBottom)(\psk@optic@xRight,\psk@optic@yTop) - \rput(0,0){% - \mirrorCVG[% - mirrorHeight=4,% - mirrorWidth=0.25,% - mirrorDepth=0.25,% - drawing=false]% - } - \pnode(! \psk@optic@xLeft\space 0){xLeft} - \pnode(! \psk@optic@xRight\space 0){xRight} - \psline[linewidth=0.5\pslinewidth](11,0) - \pnode(! 1.5 dup mul Coeff div 1.5){P1} - \pnode(! 1.5 dup mul Coeff div 1.5 neg){P2} - \pnode(! mirrorFocus 0){mirrorFocusNode} - \pnode(! posMirrorTwo 1 mirrorTwoAngle cos mul sub - 1 mirrorTwoAngle sin mul){UpMirror2} - \pnode(! posMirrorTwo 1 mirrorTwoAngle cos mul add - 1 mirrorTwoAngle sin mul neg){DownMirror2} - \ABinterCD(P1)(mirrorFocusNode)(UpMirror2)(DownMirror2){Inter1} - \ABinterCD(P2)(mirrorFocusNode)(UpMirror2)(DownMirror2){Inter2} - \pnode(!% - \psk@optic@posMirrorTwo\space posMirrorTwo mirrorFocus sub){ocularFocusNode} - {% - \psset{linecolor=red} - \Arrows[arrows=->,arrowsize=0.2](11,1.5)(P1) - \Arrows[arrows=->,arrowsize=0.2](P1)(Inter1) -% - \Arrows[arrows=->>,arrowsize=0.2](11,-1.5)(P2) - \Arrows[arrows=->>,arrowsize=0.2](P2)(Inter2) - \psline[linestyle=dashed](Inter2)(mirrorFocusNode) - \pnode(! 5 \psk@optic@posMirrorTwo\space 2 sub neg){ocularLeft} - \pnode(! 7 \psk@optic@posMirrorTwo\space 2 sub neg){ocularRight} - \ABinterCD(Inter1)(ocularFocusNode)(ocularLeft)(ocularRight){FO1} - \ABinterCD(Inter2)(ocularFocusNode)(ocularLeft)(ocularRight){FO2} - \Arrows[arrows=->>,arrowsize=0.2,length=1](Inter2)(FO2) - \psline(11,-1.5)(P2)(Inter2)(FO2) - \Arrows[arrows=->,arrowsize=0.2](Inter1)(ocularFocusNode) - \psline[linestyle=dashed](Inter1)(mirrorFocusNode) - \psline(11,1.5)(P1)(Inter1)(FO1) - } - \rput{-\psk@optic@mirrorTwoAngle}(\psk@optic@posMirrorTwo,0){\mirrorTwo} - \uput[90](mirrorFocusNode){$\mathrm{F_1}$} - \uput[180](ocularFocusNode){$\mathrm{F_2}$} - \rput{90}(!% - \psk@optic@posMirrorTwo\space - \psk@optic@posMirrorTwo\space 2 sub neg){% - \scalebox{0.5 0.4}{\lens[lensWidth=0.4,lensGlass=true,drawing=false]}} - \pnode(0,2){Aux1} - \pnode(0,-2){Aux2} - \Parallel[length=1](Aux1)(Aux2)(FO1){Eye1} - \Parallel[length=1](Aux1)(Aux2)(FO2){Eye2} - {% - \psset{linecolor=red,arrowsize=0.2,length=0.7} - \psline[linecolor=red](FO1)(Eye1) - \psline[linecolor=red](FO2)(Eye2) - \Arrows[arrows=->](FO1)(Eye1) - \Arrows[arrows=->>](FO2)(Eye2)% - } - \rput{-90}(!% - \psk@optic@posMirrorTwo\space - \psk@optic@posMirrorTwo\space neg){\scalebox{0.6}{\eye}} - \end{pspicture} -}} + \rput(0,0){% + \mirrorCVG[% + mirrorHeight=4,% + mirrorWidth=0.25,% + mirrorDepth=0.25,% + drawing=false]% + } + \pnode(! \psk@optic@xLeft\space 0){xLeft} + \pnode(! \psk@optic@xRight\space 0){xRight} + \psline[linewidth=0.5\pslinewidth](11,0) + \pnode(! 1.5 dup mul Coeff div 1.5){P1} + \pnode(! 1.5 dup mul Coeff div 1.5 neg){P2} + \pnode(! mirrorFocus 0){mirrorFocusNode} + \pnode(! posMirrorTwo 1 mirrorTwoAngle cos mul sub + 1 mirrorTwoAngle sin mul){UpMirror2} + \pnode(! posMirrorTwo 1 mirrorTwoAngle cos mul add + 1 mirrorTwoAngle sin mul neg){DownMirror2} + \ABinterCD(P1)(mirrorFocusNode)(UpMirror2)(DownMirror2){Inter1} + \ABinterCD(P2)(mirrorFocusNode)(UpMirror2)(DownMirror2){Inter2} + \pnode(!% + \psk@optic@posMirrorTwo\space posMirrorTwo mirrorFocus sub){ocularFocusNode} + {% + \psset{linecolor=red} + \Arrows[arrows=->,arrowsize=0.2](11,1.5)(P1) + \Arrows[arrows=->,arrowsize=0.2](P1)(Inter1) +% + \Arrows[arrows=->>,arrowsize=0.2](11,-1.5)(P2) + \Arrows[arrows=->>,arrowsize=0.2](P2)(Inter2) + \psline[linestyle=dashed](Inter2)(mirrorFocusNode) + \pnode(! 5 \psk@optic@posMirrorTwo\space 2 sub neg){ocularLeft} + \pnode(! 7 \psk@optic@posMirrorTwo\space 2 sub neg){ocularRight} + \ABinterCD(Inter1)(ocularFocusNode)(ocularLeft)(ocularRight){FO1} + \ABinterCD(Inter2)(ocularFocusNode)(ocularLeft)(ocularRight){FO2} + \Arrows[arrows=->>,arrowsize=0.2,length=1](Inter2)(FO2) + \psline(11,-1.5)(P2)(Inter2)(FO2) + \Arrows[arrows=->,arrowsize=0.2](Inter1)(ocularFocusNode) + \psline[linestyle=dashed](Inter1)(mirrorFocusNode) + \psline(11,1.5)(P1)(Inter1)(FO1) + } + \rput{-\psk@optic@mirrorTwoAngle}(\psk@optic@posMirrorTwo,0){\mirrorTwo} + \uput[90](mirrorFocusNode){$\mathrm{F_1}$} + \uput[180](ocularFocusNode){$\mathrm{F_2}$} + \rput{90}(!% + \psk@optic@posMirrorTwo\space + \psk@optic@posMirrorTwo\space 2 sub neg){% + \psscalebox{0.5 0.4}{\lens[lensWidth=0.4,lensGlass=true,drawing=false]}} + \pnode(0,2){Aux1} + \pnode(0,-2){Aux2} + \Parallel[length=1](Aux1)(Aux2)(FO1){Eye1} + \Parallel[length=1](Aux1)(Aux2)(FO2){Eye2} + {% + \psset{linecolor=red,arrowsize=0.2,length=0.7} + \psline[linecolor=red](FO1)(Eye1) + \psline[linecolor=red](FO2)(Eye2) + \Arrows[arrows=->](FO1)(Eye1) + \Arrows[arrows=->>](FO2)(Eye2)% + } + \rput{-90}(!% + \psk@optic@posMirrorTwo\space + \psk@optic@posMirrorTwo\space neg){\psscalebox{0.6}{\eye}} +\end{pspicture}% +}\ignorespaces} % %Images et réflexions sur un miroir plan %(#1) coordonnées du point objet (XA,YA) @@ -1651,13 +1549,13 @@ %{#4} nom de l'image A' % \def\planMirrorRay(#1)(#2)(#3)#4{{% -\pst@getcoor{#1}\pst@tempa -\pst@getcoor{#2}\pst@tempb +\pst@getcoor{#1}\pst@tempA +\pst@getcoor{#2}\pst@tempB \pst@getcoor{#3}\pst@tempc \pnode(!% - \pst@tempa /YA exch \pst@number\psyunit div def + \pst@tempA /YA exch \pst@number\psyunit div def /XA exch \pst@number\psxunit div def - \pst@tempb /Y1 exch \pst@number\psyunit div def + \pst@tempB /Y1 exch \pst@number\psyunit div def /X1 exch \pst@number\psxunit div def \pst@tempc /Y2 exch \pst@number\psyunit div def /X2 exch \pst@number\psxunit div def @@ -1685,20 +1583,20 @@ xA' yA' moveto xH yH rlineto xA' yA'){#4} -}} +}\ignorespaces} % % 2002/12/27 % \def\symPlan(#1)(#2){\pst@killglue\pst@makebox{\symPlan@(#1)(#2)}}% \def\symPlan@(#1)(#2){{% - \pst@getcoor{#1}\pst@tempa% - \pst@getcoor{#2}\pst@tempb% + \pst@getcoor{#1}\pst@tempA% + \pst@getcoor{#2}\pst@tempB% \leavevmode \hbox{% \pnode(!% - \pst@tempa /Y1 exch def + \pst@tempA /Y1 exch def /X1 exch def - \pst@tempb /Y2 exch def + \pst@tempB /Y2 exch def /X2 exch def /DX X2 X1 sub def /DY Y2 Y1 sub def @@ -1723,7 +1621,7 @@ } \tx@TMChange}% \box\pst@hbox \pst@Verb{\tx@TMRestore}}% -}} +}\ignorespaces} % % refractionRay[options](A)(B)(C)(D){rNoA}{rNoB}{E} % (A)(B) the ray nodes @@ -1737,8 +1635,8 @@ \def\refractionRay{\@ifnextchar[{\pst@refractionRay}{\pst@refractionRay[]}} \def\pst@refractionRay[#1](#2)(#3)(#4)(#5)#6#7#8{{% \psset{#1} - \pst@getcoor{#2}\pst@tempa - \pst@getcoor{#3}\pst@tempb + \pst@getcoor{#2}\pst@tempA + \pst@getcoor{#3}\pst@tempB \pst@getcoor{#4}\pst@tempc \pst@getcoor{#5}\pst@tempd \ABinterCD(#2)(#3)(#4)(#5){#8} @@ -1749,10 +1647,10 @@ \def\pst@optic@cIn{#6} % refraction number 1 \def\pst@optic@cOut{#7} % refraction number 2 \pnode(!% - /YA \pst@tempa exch pop \pst@number\psyunit div def - /XA \pst@tempa pop \pst@number\psxunit div def - /YB \pst@tempb exch pop \pst@number\psyunit div def - /XB \pst@tempb pop \pst@number\psxunit div def + /YA \pst@tempA exch pop \pst@number\psyunit div def + /XA \pst@tempA pop \pst@number\psxunit div def + /YB \pst@tempB exch pop \pst@number\psyunit div def + /XB \pst@tempB pop \pst@number\psxunit div def /YC \pst@tempc exch pop \pst@number\psyunit div def /XC \pst@tempc pop \pst@number\psxunit div def /YD \pst@tempd exch pop \pst@number\psyunit div def @@ -1787,7 +1685,7 @@ XP BetaStrich cos sub YP BetaStrich sin add ){#8'} %\qdisk(#8){5pt} -}} +}\ignorespaces} % % Herbert Voss <voss@perce.de> 2003-02-10 % @@ -1800,14 +1698,14 @@ \def\reflectionRay{\@ifnextchar[{\pst@reflectionRay}{\pst@reflectionRay[]}} \def\pst@reflectionRay[#1](#2)(#3)#4{{% \psset{#1} - \pst@getcoor{#2}\pst@tempa% the starting point + \pst@getcoor{#2}\pst@tempA% the starting point \pst@getcoor{#3}\pst@tempp% the point on the mirror \pst@getcoor{Center}\pst@tempc% the center/focus of the mirror \ifx\psk@optic@mirrorType\mirrorType% Parabolic \else% Spherical \pnode(!% - /XA \pst@tempa exch pop \pst@number\psyunit div neg def - /YA \pst@tempa pop \pst@number\psxunit div def + /XA \pst@tempA exch pop \pst@number\psyunit div neg def + /YA \pst@tempA pop \pst@number\psxunit div def /XC \pst@tempc exch pop \pst@number\psyunit div neg def /YC \pst@tempc pop \pst@number\psxunit div def /XP \pst@tempp exch pop \pst@number\psyunit div neg def @@ -1828,7 +1726,24 @@ % Determine the intermediate point YP BetaStrich sin add XP BetaStrich cos add neg){#4} \fi -}} +}\ignorespaces} +% +\def\resetOpticOptions{% hv 2006-07-20 + \psset[pst-optic]{% + lensGlass=false,drawing=true, + xLeft=-7.5,xRight=7.5,yBottom=-3.0,yTop=3.0, + lensType=CVG,lensColor=lightgray,lensWidth=0.5,lensDepth=1, + lensHeight=5,lensScale=1,lensArrowSize=0.2,lensArrowInset=0.5, + mirrorType=CVG,mirrorDepth=1,mirrorHeight=5,mirrorWidth=0.25, + mirrorFocus=8,mirrorTwoAngle=45,posMirrorTwo=6,mirrorColor=lightgray, + refractA=1,refractB=1.41, + XO=0,YO=0,OA=-3,posStart=0,length=2,focus=2,AB=1,arrowOffset=0, + nameO=O,spotO=225,nameAi=A',spotAi=90,nameBi=B',spotBi=270, + nameFi=F',spotFi=270, + rayColor=red}% +% \gdef\mirrorType{CVG}% +% \gdef\lensType{CVG}% +} % \catcode`\@=\PstAtCode\relax % |