diff options
author | Karl Berry <karl@freefriends.org> | 2021-03-18 21:07:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-03-18 21:07:01 +0000 |
commit | 2c572a90204988d4f79b4ceb70ae43b5041a0cea (patch) | |
tree | 6d72cc4b8c64a0fd592b095eab3441a5547c9ef5 /Master/texmf-dist/dvips | |
parent | da2d18f4878f6cf27add82fac726c7050507c9b8 (diff) |
gastex (18mar21)
git-svn-id: svn://tug.org/texlive/trunk@58505 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/dvips')
-rw-r--r-- | Master/texmf-dist/dvips/gastex/gastex.pro | 285 |
1 files changed, 143 insertions, 142 deletions
diff --git a/Master/texmf-dist/dvips/gastex/gastex.pro b/Master/texmf-dist/dvips/gastex/gastex.pro index e2ae122440e..672c184c723 100644 --- a/Master/texmf-dist/dvips/gastex/gastex.pro +++ b/Master/texmf-dist/dvips/gastex/gastex.pro @@ -10,153 +10,154 @@ sub dup mul !xp !x0 sub dup mul add sqrt 2 div def } { /!xp !x1 !x0 !x1 sub !d2 mul !d0 div add def /!yp !y1 !y0 !y1 sub !d2 mul !d0 div add def /!d !yp !y2 sub dup mul !xp !x2 sub dup mul add sqrt 2 div def } ifelse } { /!d 0 def } ifelse !d !r lt { /!r !d def } if !x1 -!y1 !x2 !y2 !r arct } def /!psarrow { gsave 2 copy translate 3 -1 roll -sub neg /!y exch def sub /!x exch def !x 0 eq !y 0 eq and {/!x 1 def} -if !y !x atan rotate /L2 exch def /L1 exch def /ang exch def /dist -exch def /nb exch def 1 1 nb { pop L2 0 eq { newpath L1 ang cos mul -L1 ang sin mul 2 copy moveto 0 0 lineto neg lineto stroke } { newpath -0 0 moveto L1 ang cos mul L1 ang sin mul 2 copy lineto L2 0 lineto -neg lineto closepath fill } ifelse dist 0 translate } for grestore -} def /!psvect { /y exch def /x exch def newpath 0 0 moveto x y lineto -stroke 0 0 x y !psarrow x y 0 0 !psarrow } def /!pslines { /ra exch -def /n exch def /yn exch def /xn exch def /yn_1 exch def /xn_1 exch -def /x xn def /y yn def /xx xn_1 def /yy yn_1 def newpath xn yn moveto -3 1 n { pop /x xx def /y yy def /yy exch def /xx exch def x y xx yy -ra !smartarct } for xx yy lineto stroke xn_1 yn_1 xn yn !psarrow x -y xx yy !psarrow } def /!psrectpath { /y1 exch def /x1 exch def /y0 -exch def /x0 exch def newpath x0 y0 moveto x1 y0 lineto x1 y1 lineto -x0 y1 lineto closepath } def /!pscirclepath { newpath 0 360 arc closepath -} def /!psovalpath { /rmax exch dup 0.1 le { pop 0.1 } if def /H exch -2 div dup 0.1 le { pop 0.1 } if def /W exch 2 div dup 0.1 le { pop -0.1 } if def /y exch def /x exch def H W le { /R H def }{ /R W def -} ifelse rmax R le { /R rmax def } if newpath x y H add moveto x W -add y H add x W add y R arct x W add y H sub x y H sub R arct x W sub -y H sub x W sub y R arct x W sub y H add x y H add R arct closepath -} def /!pspolygonpath { /ra exch def /n exch def dup n 2 mul 1 add -1 roll 1 index n 2 mul 2 add 1 roll n 2 mul 1 sub index n 2 mul 1 sub -index /yy exch def /xx exch def /y exch def /x exch def newpath xx -x add 2 div yy y add 2 div moveto 1 1 n { pop /yy exch def /xx exch -def x y x xx add 2 div y yy add 2 div ra !smartarct /x xx def /y yy -def } for closepath } def /!psrpolygonpath { /rd exch def /ra exch -def /a exch def /r exch def /n exch def /y exch def /x exch def /b -360 n div def /c b def x y translate a rotate rd 0 ne { r rd b 2 div -cos div sub r div dup scale } if /x1 r b cos mul def /y1 r b sin mul -def newpath r x1 add 2 div y1 2 div moveto 1 1 n { pop /c c b add def -/x2 r c cos mul def /y2 r c sin mul def x1 y1 x1 x2 add 2 div y1 y2 -add 2 div ra !smartarct /x1 x2 def /y1 y2 def } for closepath rd 0 -ne { r r rd b 2 div cos div sub div dup scale } if a neg rotate x neg -y neg translate } def /!psccurvepath { /n exch def n 2 mul 1 sub index +!y1 !x2 !y2 !r arct } def /!psarrow { gsave [] 0 setdash 2 copy translate +3 -1 roll sub neg /!y exch def sub /!x exch def !x 0 eq !y 0 eq and +{/!x 1 def} if !y !x atan rotate /L2 exch def /L1 exch def /ang exch +def /dist exch def /nb exch def 1 1 nb { pop L2 0 eq { newpath L1 ang +cos mul L1 ang sin mul 2 copy moveto 0 0 lineto neg lineto stroke } +{ newpath 0 0 moveto L1 ang cos mul L1 ang sin mul 2 copy lineto L2 +0 lineto neg lineto closepath fill } ifelse dist 0 translate } for +grestore } def /!psvect { /y exch def /x exch def newpath 0 0 moveto +x y lineto stroke 0 0 x y !psarrow x y 0 0 !psarrow } def /!pslines +{ /ra exch def /n exch def /yn exch def /xn exch def /yn_1 exch def +/xn_1 exch def /x xn def /y yn def /xx xn_1 def /yy yn_1 def newpath +xn yn moveto 3 1 n { pop /x xx def /y yy def /yy exch def /xx exch +def x y xx yy ra !smartarct } for xx yy lineto stroke xn_1 yn_1 xn +yn !psarrow x y xx yy !psarrow } def /!psrectpath { /y1 exch def /x1 +exch def /y0 exch def /x0 exch def newpath x0 y0 moveto x1 y0 lineto +x1 y1 lineto x0 y1 lineto closepath } def /!pscirclepath { newpath +0 360 arc closepath } def /!psovalpath { /rmax exch dup 0.1 le { pop +0.1 } if def /H exch 2 div dup 0.1 le { pop 0.1 } if def /W exch 2 +div dup 0.1 le { pop 0.1 } if def /y exch def /x exch def H W le { +/R H def }{ /R W def } ifelse rmax R le { /R rmax def } if newpath +x y H add moveto x W add y H add x W add y R arct x W add y H sub x +y H sub R arct x W sub y H sub x W sub y R arct x W sub y H add x y +H add R arct closepath } def /!pspolygonpath { /ra exch def /n exch +def dup n 2 mul 1 add 1 roll 1 index n 2 mul 2 add 1 roll n 2 mul 1 +sub index n 2 mul 1 sub index /yy exch def /xx exch def /y exch def +/x exch def newpath xx x add 2 div yy y add 2 div moveto 1 1 n { pop +/yy exch def /xx exch def x y x xx add 2 div y yy add 2 div ra !smartarct +/x xx def /y yy def } for closepath } def /!psrpolygonpath { /rd exch +def /ra exch def /a exch def /r exch def /n exch def /y exch def /x +exch def /b 360 n div def /c b def x y translate a rotate rd 0 ne { +r rd b 2 div cos div sub r div dup scale } if /x1 r b cos mul def /y1 +r b sin mul def newpath r x1 add 2 div y1 2 div moveto 1 1 n { pop +/c c b add def /x2 r c cos mul def /y2 r c sin mul def x1 y1 x1 x2 +add 2 div y1 y2 add 2 div ra !smartarct /x1 x2 def /y1 y2 def } for +closepath rd 0 ne { r r rd b 2 div cos div sub div dup scale } if a +neg rotate x neg y neg translate } def /!psccurvepath { /n exch def n 2 mul 1 sub index n 2 mul 1 sub index n 2 mul 1 sub index n 2 mul -4 add array astore /coef exch def /alpha 3.5 def /px0 coef n 2 mul -2 sub get def /py0 coef n 2 mul 1 sub get def /px1 coef 0 get def /py1 -coef 1 get def /px2 coef 2 get def /py2 coef 3 get def /d0 px1 px0 -sub dup mul py1 py0 sub dup mul add sqrt def /d2 px1 px2 sub dup mul -py1 py2 sub dup mul add sqrt def /ppx d2 d0 div px0 px1 sub mul px1 +1 sub index n 2 mul 4 add array astore /coef exch def /alpha 3.5 def +/px0 coef n 2 mul 2 sub get def /py0 coef n 2 mul 1 sub get def /px1 +coef 0 get def /py1 coef 1 get def /px2 coef 2 get def /py2 coef 3 +get def /d0 px1 px0 sub dup mul py1 py0 sub dup mul add sqrt def /d2 +px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def /ppx d2 d0 div +px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1 add +def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx d2 +d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy +sub mul alpha div py1 add def newpath px1 py1 moveto 4 2 n 2 mul 2 +add { /i exch def /px0 px1 def /px1 px2 def /px2 coef i get def /py0 +py1 def /py1 py2 def /py2 coef i 1 add get def /d0 d2 def /d2 px1 px2 +sub dup mul py1 py2 sub dup mul add sqrt def /ppx d0 d2 div px2 px1 +sub mul px1 add def /ppy d0 d2 div py2 py1 sub mul py1 add def /d1 +ppx px0 sub dup mul ppy py0 sub dup mul add sqrt def /rx d0 d1 div +px0 ppx sub mul alpha div px1 add def /ry d0 d1 div py0 ppy sub mul +alpha div py1 add def qx qy rx ry px1 py1 curveto /ppx d2 d0 div px0 +px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1 add def +/d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx d2 d1 +div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy sub +mul alpha div py1 add def } for closepath } def /!pscurve { /n exch +def n 2 mul array astore /coef exch def /alpha 3.5 def /px1 coef 0 +get def /py1 coef 1 get def /px2 coef 2 get def /py2 coef 3 get def +/d2 px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def /qx px1 def +/qy py1 def newpath px1 py1 moveto 4 2 n 2 mul 2 sub { /i exch def +/px0 px1 def /px1 px2 def /px2 coef i get def /py0 py1 def /py1 py2 +def /py2 coef i 1 add get def /d0 d2 def /d2 px1 px2 sub dup mul py1 +py2 sub dup mul add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add +def /ppy d0 d2 div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup +mul ppy py0 sub dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul +alpha div px1 add def /ry d0 d1 div py0 ppy sub mul alpha div py1 add +def qx qy rx ry px1 py1 curveto /ppx d2 d0 div px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1 add def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx d2 d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy sub mul alpha div py1 -add def newpath px1 py1 moveto 4 2 n 2 mul 2 add { /i exch def /px0 -px1 def /px1 px2 def /px2 coef i get def /py0 py1 def /py1 py2 def -/py2 coef i 1 add get def /d0 d2 def /d2 px1 px2 sub dup mul py1 py2 -sub dup mul add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add def -/ppy d0 d2 div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup mul -ppy py0 sub dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul alpha -div px1 add def /ry d0 d1 div py0 ppy sub mul alpha div py1 add def -qx qy rx ry px1 py1 curveto /ppx d2 d0 div px0 px1 sub mul px1 add +add def } for /px1 coef n 2 mul 2 sub get def /py1 coef n 2 mul 1 sub +get def /rx px1 def /ry py1 def qx qy rx ry px1 py1 curveto stroke +/px0 coef n 2 mul 6 sub get def /py0 coef n 2 mul 5 sub get def /px1 +coef n 2 mul 4 sub get def /py1 coef n 2 mul 3 sub get def /px2 coef +n 2 mul 2 sub get def /py2 coef n 2 mul 1 sub get def /d0 px1 px0 sub +dup mul py1 py0 sub dup mul add sqrt def /d2 px1 px2 sub dup mul py1 +py2 sub dup mul add sqrt def /ppx d2 d0 div px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1 add def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx d2 d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy sub mul alpha div py1 add -def } for closepath } def /!pscurve { /n exch def n 2 mul array astore -/coef exch def /alpha 3.5 def /px1 coef 0 get def /py1 coef 1 get def -/px2 coef 2 get def /py2 coef 3 get def /d2 px1 px2 sub dup mul py1 -py2 sub dup mul add sqrt def /qx px1 def /qy py1 def newpath px1 py1 -moveto 4 2 n 2 mul 2 sub { /i exch def /px0 px1 def /px1 px2 def /px2 -coef i get def /py0 py1 def /py1 py2 def /py2 coef i 1 add get def -/d0 d2 def /d2 px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def -/ppx d0 d2 div px2 px1 sub mul px1 add def /ppy d0 d2 div py2 py1 sub -mul py1 add def /d1 ppx px0 sub dup mul ppy py0 sub dup mul add sqrt -def /rx d0 d1 div px0 ppx sub mul alpha div px1 add def /ry d0 d1 div -py0 ppy sub mul alpha div py1 add def qx qy rx ry px1 py1 curveto /ppx -d2 d0 div px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul -py1 add def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def -/qx d2 d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 -ppy sub mul alpha div py1 add def } for /px1 coef n 2 mul 2 sub get -def /py1 coef n 2 mul 1 sub get def /rx px1 def /ry py1 def qx qy rx -ry px1 py1 curveto stroke /px0 coef n 2 mul 6 sub get def /py0 coef -n 2 mul 5 sub get def /px1 coef n 2 mul 4 sub get def /py1 coef n 2 -mul 3 sub get def /px2 coef n 2 mul 2 sub get def /py2 coef n 2 mul -1 sub get def /d0 px1 px0 sub dup mul py1 py0 sub dup mul add sqrt -def /d2 px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def /ppx d2 -d0 div px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1 -add def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx -d2 d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy -sub mul alpha div py1 add def px1 py1 qx qy px2 py2 px2 py2 !ps_cbezier_arrow -/px0 coef 0 get def /py0 coef 1 get def /px1 coef 2 get def /py1 coef -3 get def /px2 coef 4 get def /py2 coef 5 get def /d0 px1 px0 sub dup -mul py1 py0 sub dup mul add sqrt def /d2 px1 px2 sub dup mul py1 py2 -sub dup mul add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add def -/ppy d0 d2 div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup mul -ppy py0 sub dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul alpha -div px1 add def /ry d0 d1 div py0 ppy sub mul alpha div py1 add def -px1 py1 rx ry px0 py0 px0 py0 !ps_cbezier_arrow } def /!ps_cbezier -{ /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def -/x1 exch def /y0 exch def /x0 exch def newpath x0 y0 moveto x1 y1 x2 -y2 x3 y3 curveto stroke x0 y0 x1 y1 x2 y2 x3 y3 !ps_cbezier_arrow x3 -y3 x2 y2 x1 y1 x0 y0 !ps_cbezier_arrow } def /!ps_cbezier_arrow { /y3 -exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch -def /y0 exch def /x0 exch def /xa x1 x2 sub 3 mul x3 x0 sub add def -/xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1 x0 sub 3 mul def /ya y1 -y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub y1 sub y2 add 3 mul def -/yc y1 y0 sub 3 mul def /L2 exch def /L1 exch def /ang exch def /dist -exch def /nb exch def L2 0 le { /L L1 ang cos mul 2 div def } { /L -L2 def } ifelse /t4 1 def 1 1 nb { pop /x4 t4 !calculx def /y4 t4 !calculy -def L 0 le { /dx t4 !calculdx def /dy t4 !calculdy def dx dup mul dy -dup mul add sqrt dup 0 eq { /dx 1 def /dy 0 def pop 1 } if L1 exch -div dup dx neg mul /xx exch def dy neg mul /yy exch def } { /t1 0 def -/t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div def t !calculx x4 sub -dup mul t !calculy y4 sub dup mul add sqrt L ge { /t1 t def } { /t2 -t def } ifelse } for /x6 t !calculx def /y6 t !calculy def L1 L div -dup x6 x4 sub mul /xx exch def y6 y4 sub mul /yy exch def } ifelse -/x5 x4 xx ang cos mul add yy ang sin mul sub def /y5 y4 xx ang sin -mul add yy ang cos mul add def /x7 x4 xx ang cos mul add yy ang sin -mul add def /y7 y4 xx ang sin mul sub yy ang cos mul add def L2 0 le -{ newpath x5 y5 moveto x4 y4 lineto x7 y7 lineto stroke } { newpath -x4 y4 moveto x5 y5 lineto x6 y6 lineto x7 y7 lineto closepath fill -} ifelse /t1 0 def /t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div def -t !calculx x4 sub dup mul t !calculy y4 sub dup mul add sqrt dist ge -{ /t1 t def } { /t2 t def } ifelse } for /t4 t def } for } def /!ps_qbezier -{ /y3 exch def /x3 exch def /yy exch def /xx exch def /y0 exch def -/x0 exch def /x1 xx 2 mul x0 add 3 div def /y1 yy 2 mul y0 add 3 div -def /x2 xx 2 mul x3 add 3 div def /y2 yy 2 mul y3 add 3 div def x0 -y0 x1 y1 x2 y2 x3 y3 !ps_cbezier } def /!max 10 def /!ps_r_cbezier -{ /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def -/x1 exch def /y0 exch def /x0 exch def /xa x1 x2 sub 3 mul x3 x0 sub -add def /xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1 x0 sub 3 mul def -/ya y1 y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub y1 sub y2 add 3 -mul def /yc y1 y0 sub 3 mul def /t1 0 def /t2 1 def 0 1 !max { pop -/t t1 t2 add 2 div def t !calculx t !calculy path!a inufill { /t1 t -def } { /t2 t def } ifelse } for /ta t def /t1 0 def /t2 1 def 0 1 -!max { pop /t t1 t2 add 2 div def t !calculx t !calculy path!b inufill -{ /t2 t def } { /t1 t def } ifelse } for /tb t def ta !calculx ta !calculy -ta !calculdx 3 div tb ta sub mul ta !calculx add ta !calculdy 3 div -tb ta sub mul ta !calculy add tb !calculdx 3 div ta tb sub mul tb !calculx -add tb !calculdy 3 div ta tb sub mul tb !calculy add tb !calculx tb -!calculy !ps_cbezier } def /!calculx { dup dup xa mul xb add mul xc -add mul x0 add } def /!calculy { dup dup ya mul yb add mul yc add mul -y0 add } def /!calculdx { dup 3 xa mul mul 2 xb mul add mul xc add -} def /!calculdy { dup 3 ya mul mul 2 yb mul add mul yc add } def /!node_mark -{ /ma exch def /ml exch def /y exch def /x exch def /x1 x def /y1 y -def /x2 x 500 ma cos mul add def /y2 y 500 ma sin mul add def 0 1 !max -{ pop /x x1 x2 add 2 div def /y y1 y2 add 2 div def x y path!a inufill -{ /x1 x def /y1 y def } { /x2 x def /y2 y def } ifelse } for /x1 x -def /y1 y def /x2 x ml ma cos mul add def /y2 y ml ma sin mul add def -newpath x1 y1 moveto x2 y2 lineto stroke x2 y2 x1 y1 !psarrow x1 y1 -x2 y2 !psarrow } def /!sign {dup 0 lt {pop -1} {0 eq {0} {1} ifelse} -ifelse} def /!pslatexline { /L exch def /b exch def /a exch def a 0 -eq {0 L b !sign mul} {L a !sign mul dup b mul a div} ifelse newpath -0 0 moveto lineto stroke } def /!pslatexvector { /L exch def /b exch -def /a exch def a 0 eq {0 L b !sign mul} {L a !sign mul dup b mul a -div} ifelse !psvect } def /!pscircle { 2 div newpath 0 0 3 2 roll 0 -360 arc stroke } def /!psdisk { 2 div newpath 0 0 3 2 roll 0 360 arc -fill } def +def px1 py1 qx qy px2 py2 px2 py2 !ps_cbezier_arrow /px0 coef 0 get +def /py0 coef 1 get def /px1 coef 2 get def /py1 coef 3 get def /px2 +coef 4 get def /py2 coef 5 get def /d0 px1 px0 sub dup mul py1 py0 +sub dup mul add sqrt def /d2 px1 px2 sub dup mul py1 py2 sub dup mul +add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add def /ppy d0 d2 +div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup mul ppy py0 sub +dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul alpha div px1 add +def /ry d0 d1 div py0 ppy sub mul alpha div py1 add def px1 py1 rx +ry px0 py0 px0 py0 !ps_cbezier_arrow } def /!ps_cbezier { /y3 exch +def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def +/y0 exch def /x0 exch def newpath x0 y0 moveto x1 y1 x2 y2 x3 y3 curveto +stroke x0 y0 x1 y1 x2 y2 x3 y3 !ps_cbezier_arrow x3 y3 x2 y2 x1 y1 +x0 y0 !ps_cbezier_arrow } def /!ps_cbezier_arrow { gsave [] 0 setdash +/y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 +exch def /y0 exch def /x0 exch def /xa x1 x2 sub 3 mul x3 x0 sub add +def /xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1 x0 sub 3 mul def /ya +y1 y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub y1 sub y2 add 3 mul +def /yc y1 y0 sub 3 mul def /L2 exch def /L1 exch def /ang exch def +/dist exch def /nb exch def L2 0 le { /L L1 ang cos mul 2 div def } +{ /L L2 def } ifelse /t4 1 def 1 1 nb { pop /x4 t4 !calculx def /y4 +t4 !calculy def L 0 le { /dx t4 !calculdx def /dy t4 !calculdy def +dx dup mul dy dup mul add sqrt dup 0 eq { /dx 1 def /dy 0 def pop 1 +} if L1 exch div dup dx neg mul /xx exch def dy neg mul /yy exch def +} { /t1 0 def /t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div def t !calculx +x4 sub dup mul t !calculy y4 sub dup mul add sqrt L ge { /t1 t def +} { /t2 t def } ifelse } for /x6 t !calculx def /y6 t !calculy def +L1 L div dup x6 x4 sub mul /xx exch def y6 y4 sub mul /yy exch def +} ifelse /x5 x4 xx ang cos mul add yy ang sin mul sub def /y5 y4 xx +ang sin mul add yy ang cos mul add def /x7 x4 xx ang cos mul add yy +ang sin mul add def /y7 y4 xx ang sin mul sub yy ang cos mul add def +L2 0 le { newpath x5 y5 moveto x4 y4 lineto x7 y7 lineto stroke } { +newpath x4 y4 moveto x5 y5 lineto x6 y6 lineto x7 y7 lineto closepath +fill } ifelse /t1 0 def /t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div +def t !calculx x4 sub dup mul t !calculy y4 sub dup mul add sqrt dist +ge { /t1 t def } { /t2 t def } ifelse } for /t4 t def } for grestore +} def /!ps_qbezier { /y3 exch def /x3 exch def /yy exch def /xx exch +def /y0 exch def /x0 exch def /x1 xx 2 mul x0 add 3 div def /y1 yy +2 mul y0 add 3 div def /x2 xx 2 mul x3 add 3 div def /y2 yy 2 mul y3 +add 3 div def x0 y0 x1 y1 x2 y2 x3 y3 !ps_cbezier } def /!max 10 def +/!ps_r_cbezier { /y3 exch def /x3 exch def /y2 exch def /x2 exch def +/y1 exch def /x1 exch def /y0 exch def /x0 exch def /xa x1 x2 sub 3 +mul x3 x0 sub add def /xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1 +x0 sub 3 mul def /ya y1 y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub +y1 sub y2 add 3 mul def /yc y1 y0 sub 3 mul def /t1 0 def /t2 1 def +0 1 !max { pop /t t1 t2 add 2 div def t !calculx t !calculy path!a +inufill { /t1 t def } { /t2 t def } ifelse } for /ta t def /t1 0 def +/t2 1 def 0 1 !max { pop /t t1 t2 add 2 div def t !calculx t !calculy +path!b inufill { /t2 t def } { /t1 t def } ifelse } for /tb t def ta +!calculx ta !calculy ta !calculdx 3 div tb ta sub mul ta !calculx add +ta !calculdy 3 div tb ta sub mul ta !calculy add tb !calculdx 3 div +ta tb sub mul tb !calculx add tb !calculdy 3 div ta tb sub mul tb !calculy +add tb !calculx tb !calculy !ps_cbezier } def /!calculx { dup dup xa +mul xb add mul xc add mul x0 add } def /!calculy { dup dup ya mul yb +add mul yc add mul y0 add } def /!calculdx { dup 3 xa mul mul 2 xb +mul add mul xc add } def /!calculdy { dup 3 ya mul mul 2 yb mul add +mul yc add } def /!node_mark { /ma exch def /ml exch def /y exch def +/x exch def /x1 x def /y1 y def /x2 x 500 ma cos mul add def /y2 y +500 ma sin mul add def 0 1 !max { pop /x x1 x2 add 2 div def /y y1 +y2 add 2 div def x y path!a inufill { /x1 x def /y1 y def } { /x2 x +def /y2 y def } ifelse } for /x1 x def /y1 y def /x2 x ml ma cos mul +add def /y2 y ml ma sin mul add def newpath x1 y1 moveto x2 y2 lineto +stroke x2 y2 x1 y1 !psarrow x1 y1 x2 y2 !psarrow } def /!sign {dup +0 lt {pop -1} {0 eq {0} {1} ifelse} ifelse} def /!pslatexline { /L +exch def /b exch def /a exch def a 0 eq {0 L b !sign mul} {L a !sign +mul dup b mul a div} ifelse newpath 0 0 moveto lineto stroke } def +/!pslatexvector { /L exch def /b exch def /a exch def a 0 eq {0 L b +!sign mul} {L a !sign mul dup b mul a div} ifelse !psvect } def /!pscircle +{ 2 div newpath 0 0 3 2 roll 0 360 arc stroke } def /!psdisk { 2 div +newpath 0 0 3 2 roll 0 360 arc fill } def end
\ No newline at end of file |