Source PostScript (newprisme.pps)

Retour Texte non formaté
%% syntaxe : array z0 z1 newprisme -> solid d axe (O, u), /newprismedroit { [[/N] [1] [1] [1] [3] [6]] gestionsolidmode 0 0 1 [N] newprisme } def %% syntaxe : array z0 z1 u newprisme -> solid d axe (O, u), %% ou array tableau de points 2d /newprisme { 7 dict begin [[/N] [1] [1] [1] [3] [6]] gestionsolidmode dup 0 eq { (Error : 3eme composante nulle dans le vecteur pour newprisme) == quit } if /u defpoint3d /z1 exch def /z0 exch def %% N = nb d etages /table exch def %% n = indice du dernier point /n table length 2 idiv 1 sub def %% vecteur de translation u z1 z0 sub u norme3d div mulv3d /v defpoint3d %% tableau des sommets /S [ 0 1 N { /j exch def 0 1 n { /i exch def table i getp z0 v N j sub N div mulv addv3d } for } for ] def /F [ %% face superieure [0 1 n {} for] %% base [N 1 add n 1 add mul 1 sub -1 N n 1 add mul {} for] %% faces etage 1 1 N { /j exch def 1 1 n { /i exch def [i j 1 sub n 1 add mul add i 1 sub j 1 sub n 1 add mul add n 1 add i add 1 sub j 1 sub n 1 add mul add n 1 add i add j 1 sub n 1 add mul add] } for [0 j 1 sub n 1 add mul add n j 1 sub n 1 add mul add 2 n mul 1 add j 1 sub n 1 add mul add n 1 add j 1 sub n 1 add mul add] } for ] def S F generesolid end } def %% %% syntaxe : array z0 z1 newprismedroit -> solid, ou array %% %% tableau de points 2d %% /newprismedroit { %% 5 dict begin %% /z1 exch def %% /z0 exch def %% /table exch def %% /n table length 2 idiv 1 sub def %% %% %% tableau des sommets %% /S [ %% 0 1 n { %% /i exch def %% table i getp %% z1 %% } for %% %% 0 1 n { %% /i exch def %% table i getp %% z0 %% } for %% ] def %% %% /F [ %% [0 1 n {} for] %% [2 n mul 1 add -1 n 1 add {} for] %% 1 1 n { %% /i exch def %% [i i 1 sub n 1 add i add 1 sub n 1 add i add] %% } for %% [0 n 2 n mul 1 add n 1 add] %% ] def %% %% S F generesolid %% end %% } def %% %% syntaxe : array z0 z1 newprismedroit -> solid, ou array %% %% tableau de points 2d %% /newprismedroit { %% 5 dict begin %% /z1 exch def %% /z0 exch def %% /table exch def %% /n table length 2 idiv 1 sub def %% %% %% tableau des sommets %% /S [ %% 0 1 n { %% /i exch def %% table i getp %% z1 %% } for %% %% 0 1 n { %% /i exch def %% table i getp %% z0 %% } for %% ] def %% %% /F [ %% [0 1 n {} for] %% [2 n mul 1 add -1 n 1 add {} for] %% 1 1 n { %% /i exch def %% [i i 1 sub n 1 add i add 1 sub n 1 add i add] %% } for %% [0 n 2 n mul 1 add n 1 add] %% ] def %% %% S F generesolid %% end %% } def %% %% %% syntaxe : array z0 z1 u newprisme -> solid d'axe (O, u), %% %% ou array tableau de points 2d %% /newprisme { %% 6 dict begin %% dup 0 eq { %% (Error : 3eme composante nulle dans le vecteur pour newprisme) == %% quit %% } if %% /u defpoint3d %% /z1 exch def %% /z0 exch def %% /table exch def %% /n table length 2 idiv 1 sub def %% %% %% vecteur de translation %% u %% z1 z0 sub u norme3d div %% mulv3d /v defpoint3d %% %% %% tableau des sommets %% /S [ %% 0 1 n { %% /i exch def %% table i getp %% z0 %% v addv3d %% } for %% %% 0 1 n { %% /i exch def %% table i getp %% z0 %% } for %% ] def %% %% /F [ %% [0 1 n {} for] %% [2 n mul 1 add -1 n 1 add {} for] %% 1 1 n { %% /i exch def %% [i i 1 sub n 1 add i add 1 sub n 1 add i add] %% } for %% [0 n 2 n mul 1 add n 1 add] %% ] def %% %% S F generesolid %% end %% } def