summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-07-21 23:46:03 +0000
committerKarl Berry <karl@freefriends.org>2006-07-21 23:46:03 +0000
commit51e3a37989b9f2ace36eb360c42fee6dcff11458 (patch)
treec9205688e89e5e15f5d9c326c1fdbbc77cb1d76f /Master/texmf-dist/tex/generic
parentfe0b11acdb1182a4e0a4068d1876666f270752e8 (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.tex1077
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
%