Changeset 92

Show
Ignore:
Timestamp:
07/13/08 19:34:31 (6 months ago)
Author:
herbert
Message:

moved three files two obsolete, cleanups to pst-solides3d.tex

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/obsolete/par-projectionchemin.tex

    • Property svn:mergeinfo set
  • trunk/obsolete/test_21.pdf

    • Property svn:mergeinfo set
  • trunk/obsolete/test_21.tex

    • Property svn:mergeinfo set
  • trunk/pst-solides3d.tex

    r88 r92  
    687687%% la macro \psSolid 
    688688%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    689 %\newif\ifsolidmemory 
    690 %\solidmemoryfalse 
    691689 
    692690\define@boolkey[psset]{pst-solides3d}[Pst@]{solidmemory}[true]{} 
     
    696694\def\psSolid@i{\@ifnextchar({\psSolid@ii}{\psSolid@ii(0.,0.,0.)}} 
    697695\def\psSolid@ii(#1,#2,#3){{% 
    698     \use@par 
    699 \ifPst@solidmemory 
    700   \else 
    701 \begin@ClosedObj 
    702 \fi 
    703     \addto@pscode{% 
     696  \ifPst@solidmemory\use@par\else\begin@ClosedObj\fi 
     697  \addto@pscode{ 
    704698    1 setlinejoin 
    705699    \tx@optionssolides 
     
    709703    /CY exch def 
    710704    /CX exch def 
    711 %%     /CX #1 def 
    712 %%     /CY #2 def 
    713 %%     /CZ #3 def 
    714705    % nature du solide 
    715706    \psk@solides@object\space 
    716 
    717  end 
    718 }% fin du code ps 
    719 \ifPst@solidmemory 
    720   \else 
    721 \end@ClosedObj% 
    722 \fi 
    723 \ignorespaces 
    724 }} 
     707    end 
     708  }% fin du code ps 
     709  \ifPst@solidmemory\else\end@ClosedObj\fi 
     710  \ignorespaces}} 
    725711 
    726712\def\composeSolid{\use@pscode} 
     
    762748\def\psPoint{\def\pst@par{}\pst@object{psPoint}} 
    763749\def\psPoint@i(#1,#2,#3)#4{{% coordonnees cartesiennes 
    764     \begin@SpecialObj 
    765 \pnode(! 
     750  \begin@SpecialObj 
     751  \pnode(! 
    766752    \tx@optionssolides 
    767753    SolidesDict begin 
    768754    #1 #2 #3 
    769    3dto2d cm_1 exch cm_1 exch 
    770    end){#4}% 
    771    \end@SpecialObj 
    772   }\ignorespaces% 
     755    3dto2d cm_1 exch cm_1 exch 
     756    end){#4}% 
     757  \end@SpecialObj}\ignorespaces% 
    773758} 
    774759 
     
    912897%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    913898\def\defFunction{\@ifnextchar[{\defFunction@i}{\defFunction@i[]}} 
    914 \def\defFunction@i[#1]#2(#3)#4#5#6{\bgroup 
     899\def\defFunction@i[#1]#2(#3)#4#5#6{% 
    915900  \pst@killglue 
    916    \psset{#1} 
    917     \defFunction@ii{#3}\edef\@tempa{\the\toks@}% 
    918     \ifPst@algebraic\toks@={}% 
    919      \def\@tempb{#4}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
    920      \def\@tempb{#5}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
    921      \def\@tempb{#6}\ifx\@tempb\@empty 
    922                     \else\store@toks@after\@tempb\fi 
    923      \pstVerb{ 
    924        /#2 { 3 dict begin \@tempa \the\toks@ 
    925              gere_pst-deffunction end } def }% 20080625 
    926     \else 
    927      \pstVerb{ 
     901  \begingroup 
     902  \psset{#1} 
     903  \defFunction@ii{#3}\edef\@tempa{\the\toks@}% 
     904  \ifPst@algebraic 
     905    \toks@={}% 
     906    \def\@tempb{#4}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
     907    \def\@tempb{#5}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
     908    \def\@tempb{#6}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
     909    \pstVerb{ 
     910      /#2 { 3 dict begin \@tempa \the\toks@ 
     911         gere_pst-deffunction end } def }% 20080625 
     912  \else 
     913    \pstVerb{ 
    928914       /#2 { 3 dict begin \the\toks@ #4 #5 #6 
    929              gere_pst-deffunction end } def }% 20080625 
    930     \fi 
    931 \egroup} 
     915         gere_pst-deffunction end } def }% 20080625 
     916  \fi 
     917  \endgroup} 
     918
    932919\def\defFunction@ii#1{\defFunction@iii#1,,,\end} 
    933920\def\defFunction@iii#1,#2,#3,#4\end{% 
     
    939926   \global\toks@=\expandafter{\@tmpPSDefns}}% 20080625 
    940927\def\store@toks@before#1{% 
    941  \edef\@tmpPSDefns{/#1 exch def \the\toks@}% 
     928  \edef\@tmpPSDefns{/#1 exch def \the\toks@}% 
    942929  \global\toks@=\expandafter{\@tmpPSDefns}% 
    943930} 
    944931\def\store@toks@after#1{% 
    945  \edef\@tmpPSDefns{\the\toks@ (#1) tx@AlgToPs begin AlgToPs end cvx }% 
     932  \edef\@tmpPSDefns{\the\toks@ (#1) tx@AlgToPs begin AlgToPs end cvx }% 
    946933  \global\toks@=\expandafter{\@tmpPSDefns}% 
    947934} 
    948  
     935
    949936%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    950937%% la macro de projection 
  • trunk/tests/test_02.tex

    r89 r92  
    5656   affinagecoeff=.5, 
    5757   affinagerm, 
    58    fcolor=.5 setfillopacity Yellow, 
     58   fcolor=.5 .setopacityalpha Yellow, 
    5959   hollow, 
    6060   affinage=all] 
  • trunk/tests/test_04.ps

    r9 r92  
    11%!PS-Adobe-2.0 
    2 %%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software 
     2%%Creator: dvips(k) 5.96dev Copyright 2007 Radical Eye Software 
    33%%Title: test_04.dvi 
    4 %%CreationDate: Sun Mar 23 09:43:20 2008 
     4%%CreationDate: Sun Jul 13 14:11:44 2008 
    55%%Pages: 2 
    66%%PageOrder: Ascend 
    77%%BoundingBox: 0 0 596 842 
     8%%DocumentFonts: SFTT1728 SFRM1728 SFRM1200 SFBX1440 SFRM1000 
    89%%DocumentPaperSizes: a4 
    910%%EndComments 
    1011%DVIPSWebPage: (www.radicaleye.com) 
    11 %DVIPSCommandLine: dvips test_04 
     12%DVIPSCommandLine: dvips test_04.dvi 
    1213%DVIPSParameters: dpi=600 
    13 %DVIPSSource:  TeX output 2008.03.23:0943 
     14%DVIPSSource:  TeX output 2008.07.13:1411 
    1415%%BeginProcSet: tex.pro 0 0 
    1516%! 
     
    5960%%EndProcSet 
    6061%%BeginProcSet: pstricks.pro 0 0 
    61 %! 
    62 % PostScript prologue for pstricks.tex. 
    63 % Version 1.02, 2007/09/13 
    64 % For distribution and copyright, see pstricks.tex. 
     62% $Id: pstricks.pro 34 2008-06-25 17:20:01Z herbert $ 
    6563% 
    66 /tx@Dict 200 dict def tx@Dict begin 
    67 /ADict 25 dict def 
     64%% PostScript prologue for pstricks.tex. 
     65%% Version 1.05, 2008/06/25 
     66%% 
     67%% This program can be redistributed and/or modified under the terms 
     68%% of the LaTeX Project Public License Distributed from CTAN archives 
     69%% in directory macros/latex/base/lppl.txt. 
     70
     71
     72% Define the follwing gs-functions if not known, eg when using distiller 
     73
     74systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if 
     75systemdict /.setblendmode known not {/.setblendmode { pop } def } if 
     76systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if 
     77
     78/tx@Dict 200 dict def                           % the main PSTricks dictionary 
     79tx@Dict begin 
     80/ADict 25 dict def                              % The arrow dictionaray 
    6881/CM { matrix currentmatrix } bind def 
    6982/SLW /setlinewidth load def 
     
    7790/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def  % return 0 for negative arguments  
    7891/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known 
    79 /ATAN1 {neg -1 atan 180 sub } def       % atan(x) (only one parameter) 
    80 /Div { dup 0 eq { pop } { div } ifelse } def    % control the division 
    81 /Tan { dup sin exch cos Div } def       % sin(x)/cos(x) x in degrees 
    82 /NET { neg exch neg exch T } def            % change coordinate system to the negative one       
    83 /Pyth { dup mul exch dup mul add sqrt } def     % Pythagoras, expects 2 parameter 
    84 /Pyth2 {                    % Pythagoras, xA yA xB yB 
    85   3 -1 roll         % xA xB yB yA 
    86   sub           % xA xB yB-yA 
    87   3 1 roll      % yB-yA xA xB 
    88   sub           % yB-yA xA-xB 
     92/ATAN1 {neg -1 atan 180 sub } def               % atan(x) (only one parameter) 
     93/Div { dup 0 eq { pop } { div } ifelse } def    % control the division 
     94/tan { dup cos abs 1.e-10 lt  
     95  { pop 1.e10 }                                 % return 1.e10 as infinit 
     96  { dup sin exch cos div } ifelse               % default sin/cos 
     97} def 
     98/Tan { dup sin exch cos Div } def               % sin(x)/cos(x) x in degrees 
     99/Acos {dup dup mul neg 1 add dup 0 lt {         % arc cos, returns 0 when negative root 
     100  pop pop 0 }{ sqrt exch atan} ifelse } def 
     101/NET { neg exch neg exch T } def                % change coordinate system to the negative one           
     102/Pyth { dup mul exch dup mul add sqrt } def     % Pythagoras, expects 2 parameter 
     103/Pyth2 {                                        % Pythagoras, xA yA xB yB 
     104  3 -1 roll             % xA xB yB yA 
     105  sub                   % xA xB yB-yA 
     106  3 1 roll              % yB-yA xA xB 
     107  sub                   % yB-yA xA-xB 
    89108  Pyth } def 
    90 /PtoC { 2 copy cos mul 3 1 roll sin mul } def   % Polar to Cartesian 
     109/PtoC { 2 copy cos mul 3 1 roll sin mul } def   % Polar to Cartesian 
     110/Rand { rand 4294967295 div } def               % a real random number 
    91111%----------------- hv added 20050516 --------------- 
     112/PiDiv2 1.57079632680 def 
    92113/Pi 3.14159265359 def  
    93114/TwoPi 6.28318530718 def 
    94115/Euler 2.71828182846 def  
    95 /RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees 
    96 /DegtoRad { Pi mul 180 div } bind def % viceversa 
     116%/e Euler bind def 
     117/RadtoDeg { 180 mul Pi div } bind def           % convert from radian to degrees 
     118/DegtoRad { Pi mul 180 div } bind def           % viceversa 
    97119%----------------- hv end--------------------------- 
    98120/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def 
    99 /PathLength { flattenpath /z 0 def  
    100   { /y1 ED /x1 ED /y2 y1 def /x2 x1 def 
    101   }{ /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } 
    102   /pathforall load stopped { pop pop pop pop } if z } def 
    103 /STP { .996264 dup scale } def 
    104 /STV { SDict begin normalscale end STP  } def 
     121/PathLength {  
     122  flattenpath /z 0 def  
     123  { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } 
     124  { /y ED /x ED PathLength@ }  
     125  {}  
     126  { /y y2 def /x x2 def PathLength@ } 
     127  /pathforall load stopped { pop pop pop pop } if  
     128  z  
     129} def 
     130
     131/STP { .996264 dup scale } def                  % BP/PT scaling 
     132/STV { SDict begin normalscale end STP  } def   %  
    105133% 
    106134%%-------------- DG begin patch 15 ---------------%% 
     
    175203  pop pop } def 
    176204% 
     205/PenroseFill {%  on stack: scaling factor 
     206  dup dup scale 
     207  1 exch div round /penroseFactor ED  
     208  a 0 dtransform round exch round exch 
     209  2 copy idtransform  
     210  exch Atan rotate  
     211  idtransform pop /a ED  
     212  .25 .25 itransform pathbbox  
     213  /y2 ED  
     214  a Div ceiling cvi /x2 ED /y1 ED  
     215  a Div cvi /x1 ED /y2 y2 y1 sub def  
     216  clip  
     217  newpath  
     218  systemdict 
     219  /setstrokeadjust known { true setstrokeadjust } if  
     220  /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul} 
     221 { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall 
     222  [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto 
     223  i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25 
     224  mul j l + S rmoveto}F i L j L stroke }F}F}F}F  
     225  grestore  
     226  pop pop  
     227} def 
     228% 
    177229%gsave abs CLW add /a ED a 0 dtransform round exch round exch 
    178230%2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 
     
    190242%% DG/SR modification end 
    191243% 
    192 /BeginArrow { ADict begin  
     244/BeginArrow {  
     245  ADict begin                   % hold it local, for end see EndArrow 
    193246  /@mtrx CM def  
    194247  gsave  
     
    199252} def 
    200253% 
    201 /EndArrow { @mtrx setmatrix CP grestore end } def 
     254/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict 
    202255% 
    203256/Arrow {  
     
    211264  gsave fill grestore  
    212265} def 
     266% 
     267/ArrowD { % the sides are drawn as curves (hv 20071211) 
     268  CLW mul add dup  
     269  2 div /w ED  
     270  mul dup /h ED  
     271  mul /Inset ED  
     272  { 0 h T 1 -1 scale } if % changes the direction 
     273% we use y=w/h^2 * x^2 as equation for the control points 
     274% for the coordinates the arrow is seen from top to bottom 
     275% the bottom (tip) is (0;0) 
     276  w neg h moveto % lower left of > 
     277  w 9 div 4 mul neg h 3 div 2 mul 
     278  w 9 div neg       h 3 div   
     279  0 0 curveto    % tip of > 
     280  w 9 div        h 3 div   
     281  w 9 div 4 mul  h 3 div 2 mul 
     282  w h curveto % upper left of > 
     283  w neg Inset neg rlineto % move to x=0 and inset 
     284  gsave fill grestore  
     285} def  
    213286% 
    214287/Tbar {  
     
    248321  load } if ] cvx newpath 3 1 roll T exec } def 
    249322% 
    250 /NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch 
    251 cvi def } def 
     323%/NArray {  
     324%   aload length 2 div dup dup cvi eq not { exch pop } if /n exch 
     325%   cvi def  
     326%} def 
     327
    252328/NArray { % holds the coordinates and on top of stack the showpoints boolean 
    253   /f ED  
     329  /showpoints ED  
    254330  counttomark 2 div dup cvi /n ED  
    255331  n eq not { exch pop } if 
    256   f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse  
    257 } def 
     332  showpoints { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse  
     333} def 
     334
    258335/Line {  
    259336  NArray n 0 eq not  
     
    263340    } if  
    264341} def 
    265 /Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } 
    266   ifelse { pop } repeat a } def 
     342
     343/Arcto {  
     344  /a [ 6 -2 roll ] cvx def  
     345  a r  
     346  /arcto load stopped { 5 } { 4 } ifelse { pop } repeat  
     347  a  
     348} def 
     349
    267350/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq 
    268351  and { pop pop /n n 1 sub def } if } def 
     
    301384setmatrix pop } def 
    302385% DG/SR modification end 
    303 /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth 
    304 def } def 
    305 /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth 
    306 def } def 
    307 /CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 
    308 def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp 
    309 mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos 
    310 abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def 
    311 /y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul 
    312 m mul neg def } def 
    313 /IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } 
    314 ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } 
    315 def 
     386
     387/CCA {  
     388  /y ED /x ED  
     389  2 copy y sub /dy1 ED  
     390  x sub /dx1 ED  
     391  /l1 dx1 dy1 Pyth def  
     392} def 
     393
     394/CC {  
     395  /l0 l1 def  
     396  /x1 x dx sub def  
     397  /y1 y dy sub def  
     398  /dx0 dx1 def  
     399  /dy0 dy1 def  
     400  CCA  
     401  /dx dx0 l1 c exp mul dx1 l0 c exp mul add def  
     402  /dy dy0 l1 c exp mul dy1 l0 c exp mul add def  
     403  /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def  
     404  /x2 x l0 dx mul m mul sub def 
     405  /y2 y l0 dy mul m mul sub def  
     406  /dx l1 dx mul m mul neg def  
     407  /dy l1 dy mul m mul neg def  
     408} def 
     409
     410/IC {  
     411  /c c 1 add def  
     412  c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse  
     413  /a a 2 mul 3 div 45 cos b exp div def  
     414  CCA  
     415  /dx 0 def  
     416  /dy 0 def  
     417} def 
     418
    316419/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def 
    317420/NC { CC x1 y1 x2 y2 x y curveto } def 
     
    320423/NAC { x2 y2 x y curveto CC x1 y1 } def 
    321424/EAC { x2 y2 x y ArrowB curveto pop pop } def 
     425% 
    322426/OpenCurve {  
    323427  NArray n 3 lt  
     
    325429    { BOC /n n 3 sub def n { NC } repeat EOC } ifelse  
    326430} def 
    327 /AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload 
    328 /Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop 
    329 pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def 
    330 /ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { 
    331 CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } 
    332 repeat closepath pop pop } ifelse } def 
     431
     432/AltCurve {  
     433  { false NArray n 2 mul 2 roll  
     434    [ n 2 mul 3 sub 1 roll ] aload 
     435    /Points ED  
     436    n 2 mul -2 roll }  
     437  { false NArray } ifelse  
     438  n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse  
     439} def 
     440
     441/ClosedCurve {  
     442  NArray n 3 lt  
     443    { n { pop pop } repeat }  
     444    { n 3 gt { CheckClosed } if  
     445      6 copy n 2 mul 6 add 6 roll  
     446      IC CC x y moveto n { NC } repeat  
     447      closepath pop pop  
     448    } ifelse  
     449} def 
     450
    333451/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def 
    334452/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def 
     
    348466/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { 
    349467pop pop Rect } { OvalFrame } ifelse } def 
    350 /BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop 
    351 } if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] 
    352 aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def 
    353 /OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 
    354 2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } 
    355 ifelse } def 
    356 /ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { 
    357 6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def 
    358 /BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 
    359 sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } 
    360 def 
    361 /Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 
    362 sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA 
    363 x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 
    364 y0 x0 2 mul x1 sub y1 ] def } def 
     468
     469/BezierNArray {  
     470  /f ED  
     471  counttomark 2 div dup cvi /n ED  
     472  n eq not { exch pop } if  
     473  n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat  
     474  f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse  
     475} def 
     476
     477/OpenBezier {  
     478  BezierNArray  
     479  n 1 eq  
     480    { pop pop }  
     481    { ArrowA n 4 sub 3 idiv  
     482      { 6 2 roll 4 2 roll curveto } repeat  
     483      6 2 roll 4 2 roll ArrowB curveto } ifelse  
     484} def 
     485
     486/ClosedBezier {  
     487  BezierNArray  
     488  n 1 eq  
     489    { pop pop }  
     490    { moveto n 1 sub 3 idiv  
     491      { 6 2 roll 4 2 roll curveto } repeat  
     492      closepath } ifelse  
     493} def 
     494
     495/BezierShowPoints {  
     496  gsave  
     497  Points aload length 2 div cvi /n ED  
     498  moveto  
     499  n 1 sub { lineto } repeat  
     500  CLW 2 div SLW [ 4 4 ] 0 setdash stroke  
     501  grestore  
     502} def 
     503
     504/Parab {  
     505  /y0 ED /x0 ED /y1 ED /x1 ED  
     506  /dx x0 x1 sub 3 div def  
     507  /dy y0 y1 sub 3 div def  
     508  x0 dx sub y0 dy add x1 y1 ArrowA 
     509  x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB  
     510  curveto  
     511  /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def  
     512} def 
    365513% 
    366514/Grid {  
     
    398546      { gsave c i a cvs dup stringwidth pop  
    399547        /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse  
    400     h 0 gt {b neg}{z1} ifelse  
     548       h 0 gt {b neg}{z1} ifelse  
    401549        rmoveto show grestore } if  
    402550    dup t f moveto  
     
    575723/IfVisible true def } def 
    576724end 
     725%-----------------------------------------------------------------------------% 
     726 
     727% END pstricks.pro 
     728 
     729%%EndProcSet 
     730%%BeginProcSet: pst-algparser.pro 0 0 
     731%! 
     732% PostScript prologue for PSTricks algorithm parser 
     733% Version 0.01, 2008/01/01 
     734% For distribution and copyright, see pstricks.tex.   hv@pstricks.de 
    577735% 
    578 /AlgParser { tx@AlgToPs begin AlgToPs end } def 
    579 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     736%-----------------------------------------------------------------------------% 
     737/AlgParser { tx@AlgToPs begin AlgToPs end } def  % Dominique Rodriguez 
     738
    580739/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin 
    581 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     740% 
    582741% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.12 
    583742% E->T|E+T 
     
    589748% params->E|E,param 
    590749% number->TOBEFINISHED 
    591 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     750% 
    592751%% E expression, T term, SF signed factor, F factor, P power 
    593 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     752% 
    594753%% parser 
    595 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     754% 
    596755%% str 
    597 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     756% 
    598757%% C->E<condition_operators>E 
    599758%% STR index -> STR index+lenExpr 
    600759/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp  } def 
    601 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     760% 
    602761%% analyze Expression List (separator , or | ) 
    603762%% STR index -> STR index+lenExpr 
     
    768927/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def 
    769928end 
    770 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    771 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    772 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     929% 
     930%-------------------------------------------------------------------------------
     931% 
    773932/tx@AlgToPs 12 dict def tx@AlgToPs begin 
    774 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     933% 
    775934%% algExpr -> PSVector 
    776935/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def 
     
    801960    { dup (IfTE) eq { EvalCond } 
    802961      { dup (Derive) eq { pop EvalDerive } 
    803     { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc 
     962       { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc 
    804963          /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx 
    805       exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } 
     964         exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } 
    806965  { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def 
    807966    dup 91 eq%%% there is an open bracket -> vector element 
     
    8601019/TrigoFunc { 
    8611020  dup (cos) eq 1 index (sin) eq or exch (tan) eq or 
    862   { /ExpressionVector ExpressionVector aload length 3.14159265359 /div cvx 180 /mul cvx 5 -1 roll 4 add 
     1021  { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add 
    8631022    array astore def 
    8641023  } if 
     
    8991058/AnalyzePostHook {} def 
    9001059/RollOp { 3 1 roll } bind def 
    901 end%%%tx@CoreAnalyzerDict 
    902 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    903 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    904 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     1060end   %tx@CoreAnalyzerDict 
     1061% 
     1062%--------------------------------------------------------------------
     1063% 
    9051064/tx@Derive 41 dict def tx@Derive begin 
    9061065%%increase ^^ for each function added 
     
    10351194        { dup dup (1) eq exch (1.0) eq or 
    10361195          { StrConcat  } 
    1037       { StrConcat 
    1038         7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 
    1039         { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 
     1196         { StrConcat 
     1197           7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 
     1198           { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 
    10401199            (*\() StrConcat 8 index StrConcat (\)) StrConcat 
    10411200            5 index  dup dup (2) eq exch (2.0) eq or 
    1042         { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } 
     1201           { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } 
    10431202      { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat 
    10441203        5 index StrConcat (-1\)) StrConcat } ifelse 
     
    12201379/TrigoFunc { 
    12211380  dup (cos) eq 1 index (sin) eq or exch (tan) eq or 
    1222   { /ExpressionVector ExpressionVector aload length 3.14159265359 /div cvx 180 /mul cvx 5 -1 roll 4 add 
     1381  { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add 
    12231382    array astore def 
    12241383  } if 
     
    12761435/asin {% 
    12771436  dup abs 1 gt { EQDFasinrangeerror  } if 
    1278   dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if 90 div 1.57079632680 mul 
     1437  dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad 
    12791438} def 
    12801439%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x) 
     
    12821441/acos {% 
    12831442  dup abs 1 gt { EQDFacosrangeerror  } if 
    1284   dup dup mul 1 exch sub sqrt exch atan 90 div 1.57079632680 mul 
     1443  dup dup mul 1 exch sub sqrt exch atan DegtoRad 
    12851444} def 
    12861445%% function arctangent in radians 
    12871446%% x -> theta 
    1288 /atg { 1 atan dup 90 gt { 360 sub } if 90 div 1.57079632680 mul } bind def 
     1447/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def 
    12891448%% HYPERBOLIC FUNCTIONS 
    12901449/sh { dup Ex exch neg Ex sub 2 div } def 
     
    12991458%% modified exponential funtion for 0 
    13001459%% x -> e^x 
    1301 /Ex { 2.71828182846 exch exp } bind def 
     1460/Ex { Euler exch exp } bind def 
    13021461%% 
    13031462%% factorial function 
     
    13051464/Fact { 1 exch 2 exch 1 exch { mul } for } bind def 
    13061465/fact { Fact } bind def 
    1307 /PI 3.14159265358 def 
    1308 /e 2.71828182846 def 
    13091466end 
    13101467 
     
    13131470%%EndProcSet 
    13141471%%BeginProcSet: pst-dots.pro 0 0 
    1315 %! 
     1472% $Id: pst-dots.pro 11 2008-01-24 13:37:27Z herbert $ 
     1473
    13161474%% PostScript prologue for pstricks.tex. 
    1317 %% Version 2.00,                                    Suggestion of 2006/12/19 
     1475%% Version 2.01,  2008/04/18 
     1476%% 
    13181477%% For distribution, see pstricks.tex. 
    13191478%% 
    13201479%% Timothy Van Zandt <tvz@Princeton.EDU> 
    13211480%% 
     1481%% This program can be redistributed and/or modified under the terms 
     1482%% of the LaTeX Project Public License Distributed from CTAN archives 
     1483%% in directory macros/latex/base/lppl.txt. 
     1484%% 
    13221485%% Modified by Etienne Riga  - Dec. 16, 1999 
    1323 %% Modified by Herbert Voss (hv) - 2004/12/27  
    13241486%% Modified by Etienne Riga  - 2005/01/01 (er) 
    13251487%% to add /Diamond, /SolidDiamond and /BoldDiamond 
     1488%% Modified by Herbert Voss (hv) - 2008/04/17  
    13261489% 
    1327 10 dict dup begin 
     149010 dict dup begin                      % hold local 
    13281491  /FontType 3 def 
    13291492  /FontMatrix [.001 0 0 .001 0 0] def 
    13301493  /FontBBox [-571.5 -742.5 571.5 742.5] def 
    1331 %  /FontBBox [-1000 -1000 1000 1000] def 
    1332 %                See end of file in /BuildGlyph 
     1494%  /FontBBox [-1000 -1000 1000 1000] def  % See end of file in /BuildGlyph 
    13331495  /Encoding 256 array def 
    1334   0 1 255 {Encoding exch/.notdef put} for 
    1335   Encoding 
    1336     dup (b) 0 get /Bullet put 
     1496  0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef 
     1497  Encoding                                 % replace with given dot names 
     1498    dup (b) 0 get /Bullet put              % get the numerical position of b in ASCII 
     1499%                                          % and save /Bullet at this place in Encoding  
    13371500    dup (c) 0 get /Circle put 
    1338     dup (C) 0 get /BoldCircle put 
     1501    dup (C) 0 get /BoldCircle put      % 67 
    13391502    dup (u) 0 get /SolidTriangle put 
    13401503    dup (t) 0 get /Triangle put 
     
    13531516    dup (H) 0 get /BoldHexagon put 
    13541517    dup (G) 0 get /SolidHexagon put 
     1518    dup (f) 0 get /Octogon put          % 2008-04-18 hv 
     1519    dup (F) 0 get /BoldOctogon put      % 2008-04-18 hv 
     1520    dup (g) 0 get /SolidOctogon put     % 2008-04-18 hv 
    13551521    dup (a) 0 get /Add put 
    1356     dup (A) 0 get /BoldAdd put 
     1522    dup (A) 0 get /BoldAdd put                 % 65 
    13571523    dup (x) 0 get /Mul put 
    13581524    dup (X) 0 get /BoldMul put 
     
    13701536%%%   
    13711537/CharProcs 47 dict def 
    1372   CharProcs begin 
    1373     /CirclePath {0 0 500 0 360 arc closepath} def 
    1374       /Bullet {CirclePath fill} def 
    1375          /Circle {CirclePath .9 .9 scale CirclePath eofill} def 
    1376          /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def 
    1377     /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto 
    1378                closepath} def 
    1379          /SolidTriangle {TrianglePath fill} def 
    1380       /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def 
    1381       /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def 
    1382     /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto 
    1383                closepath} def 
    1384       /SolidSquare {SquarePath fill} def 
    1385       /Square {SquarePath .89 .89 scale SquarePath eofill} def 
    1386       /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def 
    1387     /PentagonPath {-337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto 
    1388                0 574.7 lineto -546.6 177.6 lineto closepath} def 
    1389       /SolidPentagon {PentagonPath fill} def 
    1390       /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def 
    1391       /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def 
     1538CharProcs begin 
     1539  /CirclePath {0 0 500 0 360 arc closepath} def 
     1540  /Bullet {CirclePath fill} def 
     1541  /Circle {CirclePath .9 .9 scale CirclePath eofill} def 
     1542  /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def 
     1543  /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def 
     1544  /SolidTriangle {TrianglePath fill} def 
     1545  /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def 
     1546  /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def 
     1547  /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def 
     1548  /SolidSquare {SquarePath fill} def 
     1549  /Square {SquarePath .89 .89 scale SquarePath eofill} def 
     1550  /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def 
     1551  /PentagonPath { 
     1552    -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto 
     1553    0 574.7 lineto -546.6 177.6 lineto closepath 
     1554  } def 
     1555  /SolidPentagon {PentagonPath fill} def 
     1556  /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def 
     1557  /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def 
    13921558%-------------- hv begin 2004/07/25   from: er 2003/03/24 
    1393     /HexagonPath {0 550 moveto -476 275 lineto -476 -275 lineto 
    1394                 0 -550 lineto 476 -275 lineto 476 275 lineto closepath} def 
    1395       /SolidHexagon {HexagonPath fill} def 
    1396       /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def 
    1397       /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def 
    1398         /AsteriskPath {20 0 moveto 10 250 180 500 0 500 curveto 
    1399                 -180 500 -10 250 -20 0 curveto closepath} def 
    1400       /Asterisk {AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath 
    1401             60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath  
    1402                 fill} def 
    1403         /Basterp {50 250 220 500 0 500 curveto 
    1404         -220 500 -50 250 -50 30 cos 100 mul curveto} def 
    1405         /BoldAsteriskPath {50 30 cos 100 mul moveto  Basterp 
    1406                      60 rotate Basterp 60 rotate Basterp 
    1407                      60 rotate Basterp 60 rotate Basterp 
    1408                      60 rotate Basterp closepath} def 
    1409       /BoldAsterisk {BoldAsteriskPath fill} def 
    1410           /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def 
    1411     /CrossPath {40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto 
    1412         -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto  
    1413                 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath} def 
    1414     /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto 
    1415         -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto  
    1416                 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath} def 
    1417       /Add {CrossPath fill} def 
    1418       /Mul {45 rotate CrossPath fill} def 
    1419       /BoldAdd {BoldCrossPath fill} def 
    1420       /BoldMul {45 rotate BoldCrossPath fill} def 
    1421           /Oplus {CirclePath .9 .9 scale CirclePath eofill 
    1422                 .775 .775 scale CrossPath  fill} def  
    1423           /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def  
    1424           /BOplus {CirclePath .8 .8 scale CirclePath eofill 
    1425                 .775 .775 scale BoldCrossPath fill} def  
    1426           /Otimes {CirclePath .9 .9 scale CirclePath eofill 
    1427                 45 rotate .775 .775 scale CrossPath fill} def  
    1428           /BOtimes {CirclePath .8 .8 scale CirclePath eofill 
    1429                 45 rotate .775 .775 scale BoldCrossPath  fill } def  
    1430           /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def  
    1431     /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto 
    1432                 closepath} def 
    1433       /Bar {BarPath fill} def 
    1434     /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto 
    1435                 closepath} def 
    1436       /BoldBar {BoldBarPath fill} def 
    1437     /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto  
    1438                 428.5 0 lineto closepath} def 
    1439       /SolidDiamond {DiamondPath fill} def 
    1440       /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def 
    1441       /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def 
     1559  /HexagonPath { 
     1560    0 550 moveto -476 275 lineto -476 -275 lineto 
     1561    0 -550 lineto 476 -275 lineto 476 275 lineto closepath 
     1562  } def 
     1563  /SolidHexagon {HexagonPath fill} def 
     1564  /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def 
     1565  /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def 
     1566%                                       2008-04-18 hv 
     1567  /OctogonPath { 
     1568    228 550 moveto 7 { -456 0 rlineto 45 rotate } repeat  
     1569    closepath 
     1570  } def  
     1571  /SolidOctogon { OctogonPath fill                             } def 
     1572  /Octogon {      OctogonPath .89 .89 scale OctogonPath eofill } def 
     1573  /BoldOctogon {  OctogonPath .79 .79 scale OctogonPath eofill } def 
     1574
     1575  /AsteriskPath { 
     1576    20 0 moveto 10 250 180 500 0 500 curveto 
     1577    -180 500 -10 250 -20 0 curveto closepath 
     1578  } def 
     1579  /Asterisk { 
     1580    AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath 
     1581    60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill 
     1582  } def 
     1583
     1584  /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def 
     1585  /BoldAsteriskPath { 
     1586    50 30 cos 100 mul moveto  Basterp 
     1587    60 rotate Basterp 60 rotate Basterp 
     1588    60 rotate Basterp 60 rotate Basterp 
     1589    60 rotate Basterp closepath 
     1590  } def 
     1591  /BoldAsterisk {BoldAsteriskPath fill} def 
     1592  /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def 
     1593  /CrossPath { 
     1594    40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto 
     1595    -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto  
     1596    40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath 
     1597  } def 
     1598  /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto 
     1599    -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto  
     1600    80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath 
     1601  } def 
     1602  /Add {CrossPath fill} def 
     1603  /Mul {45 rotate CrossPath fill} def 
     1604  /BoldAdd {BoldCrossPath fill} def 
     1605  /BoldMul {45 rotate BoldCrossPath fill} def 
     1606  /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def  
     1607  /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def  
     1608  /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def  
     1609  /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def  
     1610  /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def  
     1611  /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def  
     1612  /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def 
     1613  /Bar {BarPath fill} def 
     1614  /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def 
     1615  /BoldBar {BoldBarPath fill} def 
     1616  /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def 
     1617  /SolidDiamond {DiamondPath fill} def 
     1618  /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def 
     1619  /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def 
    14421620%%% 
    1443     /.notdef { } def 
     1621  /.notdef { } def 
     1622end 
     1623
     1624/BuildGlyph { 
     1625  exch 
     1626  begin                  
     1627%  Metrics 1 index get exec 0 
     1628    0 0 
     1629%      BBoxes 3 index get exec 
     1630    -1000 -1000 1000 1000 
     1631%     -571.5 -742.5 571.5 742.5 
     1632    setcachedevice 
     1633    CharProcs begin load exec end 
    14441634  end 
    1445   /BuildGlyph { 
    1446     exch 
    1447     begin 
    1448 %      Metrics 1 index get exec 0 
    1449        0 0 
    1450 %      BBoxes 3 index get exec 
    1451       -1000 -1000 1000 1000 
    1452 %     -571.5 -742.5 571.5 742.5 
    1453       setcachedevice 
    1454       CharProcs begin load exec end 
    1455     end 
    1456   } def 
    1457   /BuildChar { 
    1458     1 index /Encoding get exch get 
    1459     1 index /BuildGlyph get exec 
    1460   } bind def 
     1635} def 
     1636
     1637/BuildChar { 
     1638  1 index /Encoding get exch get 
     1639  1 index /BuildGlyph get exec 
     1640} bind def 
     1641 
    14611642end 
    14621643/PSTricksDotFont exch definefont pop 
    14631644 
     1645%% end 
    14641646 
    14651647%%EndProcSet 
    14661648%%BeginProcSet: pst-node.pro 0 0 
    1467 %! 
     1649%!PS 
    14681650% PostScript prologue for pst-node.tex. 
    14691651% Version 97 patch 1, 97/05/09. 
     
    14711653% 
    14721654/tx@NodeDict 400 dict def tx@NodeDict begin 
    1473 tx@Dict begin /T /translate load def end 
    1474 /NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def } 
    1475 if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end 
    1476 grestore } def 
    1477 /InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def 
    1478 } def 
    1479 /InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch 
    1480 Sin mul } def } def 
     1655tx@Dict begin  
     1656 /T /translate load def  
     1657end 
     1658/NewNode { % on stack: { x y } boolean N@name type InitXnode  
     1659  gsave  
     1660  /next ED                      % { x y } boolean N@name type   
     1661  dict dup                      % { x y } boolean N@name dict dict 
     1662  3 1 roll def                  % { x y } boolean dict N@name dict def 
     1663  exch { dup 3 1 roll def } if  % { x y } dict boolean 
     1664  begin                         % { x y } dict begin 
     1665  tx@Dict begin  
     1666    STV CP T exec               % set scaling 
     1667  end  
     1668  /NodeMtrx CM def              % save CM 
     1669  next                          % InitXNode 
     1670  end 
     1671  grestore  
     1672} def 
     1673
     1674/NewNode2 { % on stack:  x y  N@name type  
     1675  gsave  
     1676  dict dup                      %  x y  N@name dict dict 
     1677  3 1 roll def                  %  x y  dict N@name dict def 
     1678  begin                         %  x y  dict begin 
     1679  tx@Dict begin  
     1680    STV CP T                    % set scaling 
     1681  end  
     1682  /NodeMtrx CM def              % save CM 
     1683  /Y ED /X ED  
     1684  /NodePos { NodeSep Cos mul NodeSep Sin mul } def 
     1685  end 
     1686  grestore  
     1687} def 
     1688
     1689/InitPnode {  
     1690  /Y ED /X ED  
     1691  /NodePos { NodeSep Cos mul NodeSep Sin mul } def 
     1692} def 
     1693
     1694/InitCnode {  
     1695  /r ED /Y ED /X ED  
     1696  /NodePos { NodeSep r add dup Cos mul exch Sin mul } def  
     1697} def 
     1698
    14811699/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def 
    14821700} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } 
     
    14971715hh mul Atan dup cos ww mul exch sin hh mul } def 
    14981716/GetCenter { begin X Y NodeMtrx transform CM itransform end } def 
     1717% 
    14991718/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist 
    1500 Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } 
    1501 { 0 Dist Sin mul } ifelse } ifelse Do } def 
     1719  Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } 
     1720  { 0 Dist Sin mul } ifelse } ifelse Do  
     1721} def 
    15021722/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform 
    1503 exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx 
    1504 dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop 
    1505 XYPos } ifelse } def 
     1723  exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx 
     1724  dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop 
     1725  XYPos } ifelse  
     1726} def 
    15061727/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1 
    15071728roll sin mul sub exch } ifelse } def 
     
    15181739ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED 
    15191740} ifelse } def 
    1520 /InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED 
    1521 /NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b 
    1522 known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA 
    1523 ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def 
     1741/InitNC {  
     1742  /b ED /a ED % second and first node 
     1743  /NodeSepTypeB ED /NodeSepTypeA ED  
     1744  /NodeSepB ED /NodeSepA ED  
     1745  /OffsetB ED /OffsetA ED  
     1746  tx@NodeDict a known tx@NodeDict b known and dup {  
     1747    /NodeA a load def  
     1748    /NodeB b load def  
     1749    NodeA GetCenter /yA ED /xA ED  
     1750    NodeB GetCenter /yB ED /xB ED } if  
     1751} def 
     1752
    15241753/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub 
    15251754mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def 
     
    15731802cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines 
    15741803} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def 
    1575 /NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate 
    1576 def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx 
    1577 itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2 
    1578 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 
    1579 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def 
    1580 /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def 
     1804
     1805/NCAngles {  
     1806  GetEdgeA GetEdgeB GetArmA GetArmB  
     1807  /mtrx AngleA matrix rotate def  
     1808  xA2 yA2 mtrx transform pop  
     1809  xB2 yB2 mtrx transform exch pop  
     1810  mtrx itransform  
     1811  /y0 ED /x0 ED  
     1812  mark ArmB 0 ne { xB1 yB1 } if  
     1813  xB2