diff options
Diffstat (limited to 'Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro')
-rw-r--r-- | Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro | 93 |
1 files changed, 63 insertions, 30 deletions
diff --git a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro index baf32e37473..94f28126d69 100644 --- a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro +++ b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro @@ -9,7 +9,7 @@ %% This is a generated file. %% %% Project: pst-optexp -%% Version: 4.7 (2014/01/12) +%% Version: 4.8 (2014/02/28) %% %% Copyright (C) 2007-2014 by Christoph Bersch <usenet@bersch.net> %% @@ -268,7 +268,7 @@ tx@OptexpDict begin exec scl ToVec 3 1 roll NodeName @NewNode } bind def /relative 0 def /absolute 1 def /center 2 def -/refl 0 def /trans 1 def /absorb 2 def /refltrans 3 def /undefined -1 def +/refl 0 def /trans 1 def /absorb 2 def /refltrans 3 def /auto 4 def /undefined -1 def /desc 0 def /asc 1 def /amb 2 def /ok 0 def /tir 1 def /missed 2 def /bgRefIndex 0 def @@ -276,11 +276,12 @@ tx@OptexpDict begin (NewOptexpComp) DebugBegin /sc ED dup cvn gsave - 12 dict dup 3 1 roll def begin + 13 dict dup 3 1 roll def begin /name ED /forcebeaminside ED /allowbeaminside ED /ambiguous ED + /grating false def dup type /booleantype eq not { false } if /correct ED tx@Dict begin STV {CP T} stopped pop @@ -376,27 +377,6 @@ tx@OptexpDict begin end DebugEnd } bind def -/GetIfcCenter { - (GetIfcCenter) DebugBegin - dup type /stringtype eq not { - dup xcheck not { - 0 get (C) exch - } { - exec pop pop pop - } ifelse - } if - cvn load begin - IfcName load begin - currentdict /RX known { - X RX sub Y RY sub - } { - X Y - } ifelse - CompMtrx transform CM itransform - end - end - DebugEnd -} bind def /GetIfcCenterCorr { (GetIfcCenterCorr) DebugBegin cvn load begin @@ -513,15 +493,61 @@ tx@OptexpDict begin trans draw ] cvx IfcCntTmp IfcCnt gt { exch } if }{ - [ (C) name - name GetRefIndex - CurrVecTmp (C) name GetPlaneVec NormalVec outToPlane - GetIfcCenter (C) name GetIfcCenter @ABVect DotProd - 0 lt { trans } { refl } ifelse + beamdiffractionorder null eq not name cvn load /grating get and { + beamdiffractionorder dup 0 eq { pop () } if + (C) exch 20 string cvs strcat + dup (P@) exch strcat cvn name cvn load exch known not { + pop beamdiffractionorder dup sign neg 1 { + (C) exch 5 string cvs dup 3 1 roll strcat + dup (P@) exch strcat cvn name cvn load exch known { + 3 -1 roll pop + (Diffraction order ) beamdiffractionorder 5 string cvs strcat + ( is not defined, using ) 4 -1 roll strcat strcat Warning + exit + } { + pop + } ifelse + } for + } if + /@@centerifc ED + mark @@centerifc name name GetRefIndex + beamdiffractionorder 0 eq { + trans + }{ + name @@centerifc GetIfcMode refltrans eq { + refltrans + }{ + refl + } ifelse + } ifelse + }{ + /@@centerifc (C) def + [ @@centerifc name + name GetRefIndex + beammode auto eq { + CurrVecTmp @@centerifc name GetPlaneVec + name @@centerifc GetIfcMode refltrans eq { -90 matrix rotate dtransform } if + NormalVec outToPlane GetIfcCenter @@centerifc name GetIfcCenter @ABVect DotProd + 0 lt { + trans + }{ + name @@centerifc GetIfcMode + refltrans eq { + refltrans + }{ + refl + } ifelse + } ifelse + } { + beammode dup refl eq { + pop name @@centerifc GetIfcMode dup refltrans eq not { pop refl } if + } if + } ifelse + } ifelse dup 6 1 roll IfcCntTmp IfcCnt eq { true }{ draw } ifelse ] cvx - (C) name 4 -1 roll + @@centerifc name 4 -1 roll connectifc { bgRefIndex }{ name GetRefIndex } ifelse CurrTmp CurrVecTmp 10 dict begin HandleInterface end pop @@ -1314,6 +1340,13 @@ tx@OptexpDict begin Xin Yin 2 costheta1 mul dup Xnorm mul exch Ynorm mul VecAdd DebugEnd } bind def +/ReflectGratVec { + (ReflectGratVec) DebugBegin + /Ynorm ED /Xnorm ED NormalizeVec /Yin ED /Xin ED + /costheta1 Xnorm Ynorm Xin neg Yin neg DotProd def + Xin Yin -2 costheta1 mul dup Xnorm mul exch Ynorm mul VecAdd + DebugEnd +} bind def /CurvedInterface { (CurvedInterface) DebugBegin 2 copy /Yr ED /Xr ED |