summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/dvips/pst-optexp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/dvips/pst-optexp')
-rw-r--r--Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro41
1 files changed, 32 insertions, 9 deletions
diff --git a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
index e963906ac87..5ea7fb628ee 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: 3.2 (2012/07/26)
+%% Version: 3.3 (2012/08/17)
%%
%% Copyright (C) 2007-2012 by Christoph Bersch <usenet@bersch.net>
%%
@@ -228,6 +228,7 @@ tx@OptexpDict begin
6 dict dup 3 1 roll def begin
/ambiguous false def
/allowbeaminside false def
+ /forcebeaminside false def
/name ED
/correct false def
{0 0} exch 3 -1 roll exec
@@ -289,6 +290,7 @@ tx@OptexpDict begin
gsave
12 dict dup 3 1 roll def begin
/name ED
+ /forcebeaminside ED
/allowbeaminside ED
/ambiguous ED
dup type /booleantype eq not { false } if /correct ED
@@ -519,13 +521,14 @@ tx@OptexpDict begin
name GetRefIndex
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 % mode
- draw ] cvx
+ IfcCntTmp IfcCnt eq { true }{ draw } ifelse
+ ] cvx
name /outToPlane load GetNextPlane
dup dup name isAmbiguousIfc exch 0 eq or not {
[ exch name bgRefIndex trans draw ] cvx exch
@@ -667,6 +670,9 @@ tx@OptexpDict begin
/sign {
0 ge { 1 } { -1 } ifelse
} bind def
+/Chirality {
+ 4 -1 roll mul 3 1 roll mul sub sign
+} bind def
/TraceAndFillWideBeam {
(TraceAndFillWideBeam) DebugBegin
AngToVec /InvecLow ED /StartLow ED
@@ -698,6 +704,13 @@ tx@OptexpDict begin
currentdict /lastBeamPointTmpUp known and {
/lastBeamPointTmpLow load /CurrLow ED
/lastBeamPointTmpUp load /CurrUp ED
+ loadbeam not beamdiv 0 eq not and {
+ CurrVecLow CurrVecUp Chirality
+ CurrLow CurrUp @ABVect CurrVecLow CurrVecUp VecAdd Chirality 0 lt { neg } if
+ beamdiv sign eq not {
+ /CurrVecLow load /CurrVecUp load /CurrVecLow ED /CurrVecUp ED
+ } if
+ } if
} {
counttomark 2 ge {
2 copy /StartLow load TransformStartPos /CurrLow ED
@@ -707,6 +720,8 @@ tx@OptexpDict begin
/StartUp load /CurrUp ED
} ifelse
} ifelse
+ /PrevVecUp /CurrVecUp load def
+ /PrevVecLow /CurrVecLow load def
counttomark /IfcCnt ED
/n1 bgRefIndex def
/CurrR false def
@@ -730,7 +745,6 @@ tx@OptexpDict begin
currentdict /relAngleUp known { relAngleUp } { 0 } ifelse
connectInterfaces /relAngleUp ED
} if
- /CurrVecUp load /PrevVecUp ED
/CurrUp load /PrevUp ED
IfcNum CompName Mode n2 8 4 roll HandleInterface
dup /ret ED
@@ -741,7 +755,6 @@ tx@OptexpDict begin
ToVec /CurrVecUp ED
ToVec /CurrUp ED
/n1 oldn1 def
- /CurrVecLow load /PrevVecLow ED
/CurrLow load /PrevLow ED
CurrLow CurrVecLow
connectifc PrevCorrect PN 2 gt and PN 2 eq or and {
@@ -828,6 +841,8 @@ tx@OptexpDict begin
exit
} if
/PN PN 1 add def
+ /PrevVecUp /CurrVecUp load def
+ /PrevVecLow /CurrVecLow load def
/PrevPCenter /CurrPCenter load def
/PrevMode Mode def
CompName cvn load /correct get /PrevCorrect ED
@@ -840,9 +855,12 @@ tx@OptexpDict begin
currentdict /lastVecTmpUp known currentdict /lastVecTmpLow known and dup {
/lastVecTmpUp load /lastVecTmpLow load 3 -1 roll
} if
- CurrUp CurrLow @ABVect
- CurrVecUp CurrVecLow 3 -1 roll add 3 1 roll add exch
- 4 -1 roll mul 3 1 roll mul sub 1e-7 gt {
+ CurrLow CurrUp @ABVect % from Low to Up
+ PrevVecUp PrevVecLow VecAdd
+ 2 copy 6 2 roll
+ Chirality 0 lt
+ 3 1 roll 2 copy pop -1e-5 lt
+ 3 1 roll exch 1e-5 lt exch 0 lt and or xor {
/lastBeamPointTmpUp /CurrLow load def
/lastBeamPointTmpLow /CurrUp load def
/lastVecTmpUp /CurrVecLow load def
@@ -1025,7 +1043,12 @@ tx@OptexpDict begin
beaminside
} ifelse
} ifelse
- exch load dup dup /allowbeaminside get 4 -1 roll and
+ exch load dup dup
+ /forcebeaminside get {
+ 3 -1 roll pop true
+ } {
+ dup /allowbeaminside get 4 -1 roll and
+ } ifelse
/drawinside ED
/ambiguous get {
/name get drawinside [ 3 1 roll ]