%% $Id: pst-3d.pro 247 2010-01-04 22:45:42Z herbert $ % PostScript prologue for pst-3d.tex. % Version 0.01, 2010/01/01 % /tx@3Ddict 300 dict def tx@3Ddict begin % /SetMatrixThreeD { dup sin /e ED cos /f ED /p3 ED /p2 ED /p1 ED p1 0 eq { /a 0 def /b p2 0 le { 1 } { -1 } ifelse def p3 p2 abs } { p2 0 eq { /a p1 0 lt { -1 } { 1 } ifelse def /b 0 def p3 p1 abs } { p1 dup mul p2 dup mul add sqrt dup p1 exch div /a ED p2 exch div neg /b ED p3 p1 a div } ifelse } ifelse atan dup sin /c ED cos /d ED /Matrix3D [ b f mul c a mul e mul sub a f mul c b mul e mul add d e mul b e mul neg c a mul f mul sub a e mul neg c b mul f mul add d f mul ] def } def % /ProjThreeD { /z ED /y ED /x ED Matrix3D aload pop z mul exch y mul add exch x mul add 4 1 roll z mul exch y mul add exch x mul add exch } def % /SetMatrixEmbed { SetMatrixThreeD Matrix3D aload pop /z3 ED /z2 ED /z1 ED /x3 ED /x2 ED /x1 ED SetMatrixThreeD [ Matrix3D aload pop z3 mul exch z2 mul add exch z1 mul add 4 1 roll z3 mul exch z2 mul add exch z1 mul add Matrix3D aload pop x3 mul exch x2 mul add exch x1 mul add 4 1 roll x3 mul exch x2 mul add exch x1 mul add 3 -1 roll 3 -1 roll 4 -1 roll 8 -3 roll 3 copy x3 mul exch x2 mul add exch x1 mul add 4 1 roll z3 mul exch z2 mul add exch z1 mul add ] concat } def % /TMSave { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def } def % /TMRestore { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def % /TMChange { TMSave /cp [ currentpoint ] cvx def % ??? Check this later. CM CP T STV CM matrix invertmatrix % Inv(M') matrix concatmatrix % M Inv(M') exch exec concat cp moveto } def % end % of tx@3Ddict %% %% End of file `pst-3d.pro'.