Source PostScript (piston.pps)

Retour Texte non formaté
%% syntaxe : l1 l2 l3 l4 d1 d2 pist@n %% d1 et d2 : les diametres int et ext %% l1 et l2 : les longueurs des tiges int et ext %% l3 : hauteur cuve externe %% l4 : hauteur totale /pist@n { 6 dict begin /d@1 exch def /d@2 exch def /l@4 exch def /l@3 exch def /l@2 exch def /l@1 exch def newpath 0 0 smoveto 0 l@2 slineto d@1 2 div l@3 srmoveto 0 l@3 neg srlineto d@1 neg 0 srlineto 0 l@3 srlineto 0 l@4 smoveto 0 l@1 neg srlineto d@2 2 div 0 srmoveto d@2 neg 0 srlineto stroke end } def /fillstyle { .8 setgray } def /pist@n* { 6 dict begin /d@1 exch def /d@2 exch def /l@4 exch def /l@3 exch def /l@2 exch def /l@1 exch def gsave newpath verythin setlinewidth d@1 2 div l@2 smoveto 0 l@4 l@2 sub l@1 sub srlineto d@1 neg 0 srlineto 0 l@4 l@2 sub l@1 sub neg srlineto clip fillstyle fill grestore newpath 0 0 smoveto 0 l@2 slineto d@1 2 div l@3 srmoveto 0 l@3 neg srlineto d@1 neg 0 srlineto 0 l@3 srlineto 0 l@4 smoveto 0 l@1 neg srlineto d@2 2 div 0 srmoveto d@2 neg 0 srlineto stroke end } def %% syntaxe : A B l1 l2 l3 d1 d2 piston /piston { %% on recupere A et B 9 -1 roll 9 -1 roll 9 -1 roll 9 -1 roll gsave 4 copy 4 copy pop pop stranslate angle 90 sub rotate distance 3 1 roll pist@n grestore } def %% syntaxe : A B l1 l2 l3 d1 d2 piston* /piston* { %% on recupere A et B 9 -1 roll 9 -1 roll 9 -1 roll 9 -1 roll gsave 4 copy 4 copy pop pop stranslate angle 90 sub rotate distance 3 1 roll pist@n* grestore } def