Changeset 12 for trunk/jps2ps/pps

Show
Ignore:
Timestamp:
05/28/08 15:37:17 (8 months ago)
Author:
jpv
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/jps2ps/pps/drawsolid.pps

    r4 r12  
     1/solidlightOn { 
     2   /s@lidlight true def 
     3} def 
     4/solidlightOff { 
     5   /s@lidlight false def 
     6} def 
     7solidlightOff 
     8 
    19%% syntaxe : solid i solidfacevisible? --> true si la face est visible 
    210/solidfacevisible? { 
     
    3543      FC i get length 1 ge { 
    3644         /fillstyle FC i get ( fill) append cvx 
     45         solidgrid not { 
     46            FC i get cvx exec 
     47         } if 
    3748         true 
    3849      } { 
     
    4657} def 
    4758 
    48 %% syntaxe : A solid i dessinefacecachee 
     59%% syntaxe : solid i dessinefacecachee 
    4960/dessinefacecachee { 
    50 6 dict begin 
     6111 dict begin 
    5162   /i exch def 
    5263   /solid exch def 
     
    5566      quit 
    5667   } if 
    57    /A exch def 
    5868 
    5969   /F solid solidgetfaces def 
    6070   /S solid solidgetsommets def 
    6171 
    62    solid i solidfacevisible? not { 
    63       %% face cachee => on prend chacune des aretes de la face et on 
    64       %% regarde si elle est deja dessinee. 
    65       4 dict begin 
    66          /n F i get length def %% nb de sommets de la face 
     72   %% face cachee => on prend chacune des aretes de la face et on 
     73   %% la dessine 
     74   4 dict begin 
     75      /n F i get length def %% nb de sommets de la face 
     76      0 1 n 1 sub { 
     77         /k exch def 
     78         /k1 F i k get_ij def              %% indice sommet1 
     79         /k2 F i k 1 add n mod get_ij def  %% indice sommet2 
     80         gsave 
     81            currentlinewidth .5 mul setlinewidth 
     82            pointilles 
     83            [S k1 getp3d 
     84            S k2 getp3d sortp3d] ligne3d 
     85         grestore 
     86      } for 
     87 
     88   %% trace de la ligne de niveau 
     89   solidintersectiontype 0 ge { 
     90      /face_a_dessiner [  %% face visible : F [i] 
    6791         0 1 n 1 sub { 
     92            /j exch def 
     93            solid j i solidgetsommetface 
     94         } for 
     95      ] def  
     96      0 1 solidintersectionplan length 1 sub { 
    6897         /k exch def 
    69             /k1 F i k get_ij def              %% indice sommet1 
    70             /k2 F i k 1 add n mod get_ij def  %% indice sommet2 
    71             A k1 k2 get_ij not { 
    72                gsave 
    73                   currentlinewidth .5 mul setlinewidth 
    74                   pointilles 
    75                   [S k1 getp3d 
    76                   S k2 getp3d] ligne3d 
    77                   A k1 k2 true put_ij 
    78                   A k2 k1 true put_ij 
    79                grestore 
     98         /lignedeniveau [] def 
     99         gsave 
     100            pointilles 
     101            k solidintersectionlinewidth length lt { 
     102               solidintersectionlinewidth k get setlinewidth 
     103            } { 
     104               solidintersectionlinewidth 0 get setlinewidth 
     105            } ifelse 
     106            k solidintersectioncolor length lt { 
     107               solidintersectioncolor k get cvx exec 
     108            } { 
     109               solidintersectioncolor 0 get cvx exec 
     110            } ifelse 
     111            0 1 n 1 sub { 
     112               /j exch def 
     113               face_a_dessiner j getp3d 
     114               face_a_dessiner j 1 add n mod getp3d 
     115               solidintersectionplan k get segment_inter_plan { 
     116               1 dict begin 
     117                  /table exch def 
     118                  table length 6 eq { 
     119                     /lignedeniveau table store 
     120                     exit 
     121                  } { 
     122                     /lignedeniveau [  
     123                        lignedeniveau aload pop  
     124                        table 0 getp3d 
     125                     ] store 
     126                  } ifelse 
     127               end 
     128               } if 
     129            } for 
     130             
     131            %% dessin de la ligne 
     132            lignedeniveau length 4 ge { 
     133               [lignedeniveau aload pop sortp3d] ligne3d 
    80134            } if 
    81          } for 
    82       end 
     135         grestore 
     136      } for          
    83137   } if 
     138    
     139   end 
    84140end 
    85141} def 
    86142 
    87 %% syntaxe : A solid i dessinefacevisible 
     143%% syntaxe : solid i dessinefacevisible 
    88144/dessinefacevisible { 
    891458 dict begin 
    90146   /i exch def 
    91147   /solid exch def 
    92    /A exch def 
    93148   solid issolid not { 
    94149      (Error : mauvais type d argument dans dessinefacevisible) == 
     
    98153   /S solid solidgetsommets def 
    99154 
    100    solid i solidfacevisible? { 
    101       /n F i get length def %% nb de sommets de la face 
    102  
    103       startest { 
    104          %% choix de la couleur 
     155   /n F i get length def %% nb de sommets de la face 
     156 
     157   startest { 
     158      s@lidlight { 
     159         /coeff 
     160            lightintensity 
     161            solid i solidnormaleface normalize3d 
     162            solid i solidcentreface lightsrc vecteur3d normalize3d 
     163            scalprod3d mul 
     164            0 max 1 min 
     165         def 
    105166         /lightcolor where { 
    106167            pop 
    107             /coeff 
    108                lightintensity 
    109                solid i solidnormaleface normalize3d 
    110                solid i solidcentreface lightsrc vecteur3d normalize3d 
    111                scalprod3d mul 
    112                0 max 1 min 
    113             def 
    114             /fillstyle { 
    115                 lightcolor {coeff mul} apply setcolor fill 
    116             } def 
    117             solidgrid not { 
    118                lightcolor {coeff mul} apply setcolor 
    119             } if 
     168            /lacouleur lightcolor def 
    120169         } { 
    121             /lightsrc where { 
    122                pop 
    123                /coeff 
    124                   lightintensity 
    125                   solid i solidnormaleface normalize3d 
    126                   solid i solidcentreface lightsrc vecteur3d normalize3d 
    127                   scalprod3d mul 
    128                   0 max 1 min 
    129                def 
    130                /lacouleur [ 
    131                   gsave 
    132                      solid solidgetfcolors i get cvx exec currentrgbcolor 
    133                   grestore 
    134                ] def 
    135                /fillstyle { 
    136                   lacouleur {coeff mul} apply setcolor fill 
    137                } def 
    138                solidgrid not { 
    139                   lacouleur {coeff mul} apply setcolor 
    140                } if 
     170            /lacouleur [ 
     171               gsave 
     172                  solid solidgetfcolors i get cvx exec currentrgbcolor 
     173               grestore 
     174            ] def 
     175         } ifelse 
     176         /fillstyle { 
     177             lacouleur {coeff mul} apply setcolor fill 
     178         } def 
     179         solidgrid not { 
     180            lacouleur {coeff mul} apply setcolor 
     181         } if 
     182      } { 
     183         n 2 eq { 
     184            1 dict begin 
     185               solidgridOff 
     186               solid i affectecouleursolid_facei 
     187            end 
     188         } { 
     189            solid i affectecouleursolid_facei 
     190         } ifelse 
     191      } ifelse 
     192   } if 
     193 
     194   /face_a_dessiner [  %% face visible : F [i] 
     195      0 1 n 1 sub { 
     196         /j exch def 
     197         solid j i solidgetsommetface 
     198      } for 
     199   ] def  
     200   face_a_dessiner polygone3d 
     201 
     202   %% trace de la ligne de niveau 
     203   solidintersectiontype 0 ge { 
     204      0 1 solidintersectionplan length 1 sub { 
     205         /k exch def 
     206         /lignedeniveau [] def 
     207         gsave 
     208            k solidintersectionlinewidth length lt { 
     209               solidintersectionlinewidth k get setlinewidth 
    141210            } { 
    142   %               solid F i get length affectecouleursolid_ncotes 
    143                solid i affectecouleursolid_facei 
     211               solidintersectionlinewidth 0 get setlinewidth 
    144212            } ifelse 
    145  
    146          } ifelse 
    147       } if 
    148  
    149       /face_a_dessiner [  %% face visible : F [i] 
    150          0 1 n 1 sub { 
    151             /j exch def 
    152             solid j i solidgetsommetface 
    153          } for 
    154       ] def  
    155       face_a_dessiner polygone3d 
    156       /lignedeniveau [] def 
    157  
    158       %% trace de la ligne de niveau 
    159       tracelignedeniveau? { 
    160          gsave 
    161             linewidthlignedeniveau setlinewidth 
    162             couleurlignedeniveau 
     213            k solidintersectioncolor length lt { 
     214               solidintersectioncolor k get cvx exec 
     215            } { 
     216               solidintersectioncolor 0 get cvx exec 
     217            } ifelse 
    163218            0 1 n 1 sub { 
    164219               /j exch def 
    165220               face_a_dessiner j getp3d 
    166221               face_a_dessiner j 1 add n mod getp3d 
    167                hauteurlignedeniveau segment_inter_planz
     222               solidintersectionplan k get segment_inter_plan
    168223               1 dict begin 
    169224                  /table exch def 
     
    178233               } if 
    179234            } for 
    180             lignedeniveau length 4 ge  
    181                {lignedeniveau ligne3d} 
    182             if 
     235             
     236            %% dessin de la ligne 
     237            lignedeniveau length 4 ge { 
     238               solid i solidisinface { 
     239                  pointilles  
     240               } if 
     241               lignedeniveau ligne3d 
     242            } if 
    183243         grestore 
    184       } if 
    185  
    186       %% on marque les aretes 
    187       aretescachees { 
    188          0 1 n 1 sub { 
    189             /j exch def 
    190             /k1 F i j get_ij def              %% indice sommet1 
    191             /k2 F i j 1 add n mod get_ij def  %% indice sommet2 
    192             A k1 k2 true put_ij 
    193             A k2 k1 true put_ij 
    194          } for 
    195       } if 
     244      } for          
    196245   } if 
     246       
    197247end 
    198248} def 
     
    233283      /S exch def 
    234284      /n S length 3 idiv def 
    235       %% tableau des aretes 
    236       /A [ 
    237          aretescachees { 
    238             n { 
    239                [n {false} repeat] 
    240             } repeat 
    241          } if 
    242        ] def 
    243285 
    244286      currentdict /ordre known not { 
     
    266308         /i ordre k get def 
    267309         gsave 
    268          A solid i dessinefacevisible 
     310            solid i solidfacevisible? { 
     311               solid i dessinefacevisible 
     312            } if 
    269313         grestore 
    270314      } for 
     
    273317            /k exch def 
    274318            /i ordre k get def 
    275             A solid i dessinefacecachee 
     319            gsave 
     320               solid i solidfacevisible? not { 
     321                  solid i dessinefacecachee 
     322               } if  
     323            grestore 
    276324         } for 
    277325      } if 
     326 
    278327%%       %% si on veut repasser les traits des faces visibles 
    279328%%       0 1 F length 1 sub { 
     
    283332%%          1 dict begin 
    284333%%             /startest false def 
    285 %%             A solid i dessinefacevisible 
     334%%             solid i solidfacevisible? { 
     335%%             solid i dessinefacevisible 
     336%%             } if 
    286337%%          end 
    287338%%          grestore 
     
    290341end 
    291342} def 
     343 
     344%% 27/05/08 %% %% syntaxe : solid array drawsolid 
     345%% 27/05/08 %% %% array est en option, il indique les faces triees 
     346%% 27/05/08 %% /drawsolid { 
     347%% 27/05/08 %% 8 dict begin 
     348%% 27/05/08 %%    dup issolid not { 
     349%% 27/05/08 %%       /ordre exch def 
     350%% 27/05/08 %%    } if 
     351%% 27/05/08 %%    /solid exch def 
     352%% 27/05/08 %%    solid issolid not { 
     353%% 27/05/08 %%       (Error : mauvais type d argument dans drawsolid) == 
     354%% 27/05/08 %%       quit 
     355%% 27/05/08 %%    } if 
     356%% 27/05/08 %%    solid nullsolid not { 
     357%% 27/05/08 %%       solid solidgetfaces 
     358%% 27/05/08 %%       /F exch def 
     359%% 27/05/08 %%       solid solidgetsommets 
     360%% 27/05/08 %%       /S exch def 
     361%% 27/05/08 %%       /n S length 3 idiv def 
     362%% 27/05/08 %%       %% tableau des aretes 
     363%% 27/05/08 %%       /A [ 
     364%% 27/05/08 %%          aretescachees { 
     365%% 27/05/08 %%             n { 
     366%% 27/05/08 %%                [n {false} repeat] 
     367%% 27/05/08 %%             } repeat 
     368%% 27/05/08 %%   } if 
     369%% 27/05/08 %%        ] def 
     370%% 27/05/08 %%  
     371%% 27/05/08 %%       currentdict /ordre known not { 
     372%% 27/05/08 %%          peintrealgorithme { 
     373%% 27/05/08 %%             %% tri des indices des faces par distance decroissante 
     374%% 27/05/08 %%             [ 
     375%% 27/05/08 %%                0 1 F length 1 sub { 
     376%% 27/05/08 %%                   /i exch def 
     377%% 27/05/08 %%                   solid i solidcentreface 
     378%% 27/05/08 %%                   GetCamPos 
     379%% 27/05/08 %%                   distance3d 
     380%% 27/05/08 %%                } for 
     381%% 27/05/08 %%             ] doublequicksort pop reverse 
     382%% 27/05/08 %%          } { 
     383%% 27/05/08 %%             [ 
     384%% 27/05/08 %%                0 1 F length 1 sub { 
     385%% 27/05/08 %%                } for 
     386%% 27/05/08 %%             ] 
     387%% 27/05/08 %%          } ifelse 
     388%% 27/05/08 %%          /ordre exch def 
     389%% 27/05/08 %%       } if 
     390%% 27/05/08 %%  
     391%% 27/05/08 %%       0 1 F length 1 sub { 
     392%% 27/05/08 %%          /k exch def 
     393%% 27/05/08 %%          /i ordre k get def 
     394%% 27/05/08 %%          gsave 
     395%% 27/05/08 %%          A solid i dessinefacevisible 
     396%% 27/05/08 %%          grestore 
     397%% 27/05/08 %%       } for 
     398%% 27/05/08 %%       aretescachees { 
     399%% 27/05/08 %%          0 1 F length 1 sub { 
     400%% 27/05/08 %%             /k exch def 
     401%% 27/05/08 %%             /i ordre k get def 
     402%% 27/05/08 %%             A solid i dessinefacecachee 
     403%% 27/05/08 %%          } for 
     404%% 27/05/08 %%       } if 
     405%% 27/05/08 %% %%       %% si on veut repasser les traits des faces visibles 
     406%% 27/05/08 %% %%       0 1 F length 1 sub { 
     407%% 27/05/08 %% %%          /k exch def 
     408%% 27/05/08 %% %%          /i ordre k get def 
     409%% 27/05/08 %% %%          gsave 
     410%% 27/05/08 %% %%          1 dict begin 
     411%% 27/05/08 %% %%             /startest false def 
     412%% 27/05/08 %% %%             A solid i dessinefacevisible 
     413%% 27/05/08 %% %%          end 
     414%% 27/05/08 %% %%          grestore 
     415%% 27/05/08 %% %%       } for 
     416%% 27/05/08 %%    } if 
     417%% 27/05/08 %% end 
     418%% 27/05/08 %% } def 
    292419 
    293420%% %% syntaxe : solid drawsolid 
     
    359486%% } def 
    360487 
     488%% 15/05/2008 %% %% syntaxe : A solid i dessinefacecachee 
     489%% 15/05/2008 %% /dessinefacecachee { 
     490%% 15/05/2008 %% 6 dict begin 
     491%% 15/05/2008 %%    /i exch def 
     492%% 15/05/2008 %%    /solid exch def 
     493%% 15/05/2008 %%    solid issolid not { 
     494%% 15/05/2008 %%       (Error : mauvais type d argument dans dessinefacecachee) == 
     495%% 15/05/2008 %%       quit 
     496%% 15/05/2008 %%    } if 
     497%% 15/05/2008 %%    /A exch def 
     498%% 15/05/2008 %%  
     499%% 15/05/2008 %%    /F solid solidgetfaces def 
     500%% 15/05/2008 %%    /S solid solidgetsommets def 
     501%% 15/05/2008 %%  
     502%% 15/05/2008 %%    solid i solidfacevisible? not { 
     503%% 15/05/2008 %%       %% face cachee => on prend chacune des aretes de la face et on 
     504%% 15/05/2008 %%       %% regarde si elle est deja dessinee. 
     505%% 15/05/2008 %%       4 dict begin 
     506%% 15/05/2008 %%          /n F i get length def %% nb de sommets de la face 
     507%% 15/05/2008 %%          0 1 n 1 sub { 
     508%% 15/05/2008 %%          /k exch def 
     509%% 15/05/2008 %%             /k1 F i k get_ij def              %% indice sommet1 
     510%% 15/05/2008 %%             /k2 F i k 1 add n mod get_ij def  %% indice sommet2 
     511%% 15/05/2008 %%             A k1 k2 get_ij not { 
     512%% 15/05/2008 %%                gsave 
     513%% 15/05/2008 %%                   currentlinewidth .5 mul setlinewidth 
     514%% 15/05/2008 %%                   pointilles 
     515%% 15/05/2008 %%                   [S k1 getp3d 
     516%% 15/05/2008 %%                   S k2 getp3d] ligne3d 
     517%% 15/05/2008 %%                   A k1 k2 true put_ij 
     518%% 15/05/2008 %%                   A k2 k1 true put_ij 
     519%% 15/05/2008 %%                grestore 
     520%% 15/05/2008 %%             } if 
     521%% 15/05/2008 %%          } for 
     522%% 15/05/2008 %%       end 
     523%% 15/05/2008 %%    } if 
     524%% 15/05/2008 %% end 
     525%% 15/05/2008 %% } def 
     526%% 15/05/2008 %%  
     527%% 15/05/2008 %% %% syntaxe : A solid i dessinefacevisible 
     528%% 15/05/2008 %% /dessinefacevisible { 
     529%% 15/05/2008 %% 8 dict begin 
     530%% 15/05/2008 %%    /i exch def 
     531%% 15/05/2008 %%    /solid exch def 
     532%% 15/05/2008 %%    /A exch def 
     533%% 15/05/2008 %%    solid issolid not { 
     534%% 15/05/2008 %%       (Error : mauvais type d argument dans dessinefacevisible) == 
     535%% 15/05/2008 %%       quit 
     536%% 15/05/2008 %%    } if 
     537%% 15/05/2008 %%    /F solid solidgetfaces def 
     538%% 15/05/2008 %%    /S solid solidgetsommets def 
     539%% 15/05/2008 %%  
     540%% 15/05/2008 %%    solid i solidfacevisible? { 
     541%% 15/05/2008 %%       /n F i get length def %% nb de sommets de la face 
     542%% 15/05/2008 %%  
     543%% 15/05/2008 %%       startest { 
     544%% 15/05/2008 %%          %% choix de la couleur 
     545%% 15/05/2008 %%          /lightcolor where { 
     546%% 15/05/2008 %%             pop 
     547%% 15/05/2008 %%             /coeff 
     548%% 15/05/2008 %%                lightintensity 
     549%% 15/05/2008 %%                solid i solidnormaleface normalize3d 
     550%% 15/05/2008 %%                solid i solidcentreface lightsrc vecteur3d normalize3d 
     551%% 15/05/2008 %%                scalprod3d mul 
     552%% 15/05/2008 %%                0 max 1 min 
     553%% 15/05/2008 %%             def 
     554%% 15/05/2008 %%             /fillstyle { 
     555%% 15/05/2008 %%                 lightcolor {coeff mul} apply setcolor fill 
     556%% 15/05/2008 %%             } def 
     557%% 15/05/2008 %%             solidgrid not { 
     558%% 15/05/2008 %%                lightcolor {coeff mul} apply setcolor 
     559%% 15/05/2008 %%             } if 
     560%% 15/05/2008 %%          } { 
     561%% 15/05/2008 %%             /lightsrc where { 
     562%% 15/05/2008 %%                pop 
     563%% 15/05/2008 %%                /coeff 
     564%% 15/05/2008 %%                   lightintensity 
     565%% 15/05/2008 %%                   solid i solidnormaleface normalize3d 
     566%% 15/05/2008 %%                   solid i solidcentreface lightsrc vecteur3d normalize3d 
     567%% 15/05/2008 %%                   scalprod3d mul 
     568%% 15/05/2008 %%                   0 max 1 min 
     569%% 15/05/2008 %%                def 
     570%% 15/05/2008 %%                /lacouleur [ 
     571%% 15/05/2008 %%                   gsave 
     572%% 15/05/2008 %%                      solid solidgetfcolors i get cvx exec currentrgbcolor 
     573%% 15/05/2008 %%                   grestore 
     574%% 15/05/2008 %%                ] def 
     575%% 15/05/2008 %%                /fillstyle { 
     576%% 15/05/2008 %%                   lacouleur {coeff mul} apply setcolor fill 
     577%% 15/05/2008 %%                } def 
     578%% 15/05/2008 %%                solidgrid not { 
     579%% 15/05/2008 %%                   lacouleur {coeff mul} apply setcolor 
     580%% 15/05/2008 %%                } if 
     581%% 15/05/2008 %%             } { 
     582%% 15/05/2008 %%   %               solid F i get length affectecouleursolid_ncotes 
     583%% 15/05/2008 %%                solid i affectecouleursolid_facei 
     584%% 15/05/2008 %%             } ifelse 
     585%% 15/05/2008 %%  
     586%% 15/05/2008 %%          } ifelse 
     587%% 15/05/2008 %%       } if 
     588%% 15/05/2008 %%  
     589%% 15/05/2008 %%       /face_a_dessiner [  %% face visible : F [i] 
     590%% 15/05/2008 %%          0 1 n 1 sub { 
     591%% 15/05/2008 %%             /j exch def 
     592%% 15/05/2008 %%             solid j i solidgetsommetface 
     593%% 15/05/2008 %%          } for 
     594%% 15/05/2008 %%       ] def  
     595%% 15/05/2008 %%       face_a_dessiner polygone3d 
     596%% 15/05/2008 %%       /lignedeniveau [] def 
     597%% 15/05/2008 %%  
     598%% 15/05/2008 %%       %% trace de la ligne de niveau 
     599%% 15/05/2008 %%       tracelignedeniveau? { 
     600%% 15/05/2008 %%          gsave 
     601%% 15/05/2008 %%             linewidthlignedeniveau setlinewidth 
     602%% 15/05/2008 %%             couleurlignedeniveau 
     603%% 15/05/2008 %%             0 1 n 1 sub { 
     604%% 15/05/2008 %%                /j exch def 
     605%% 15/05/2008 %%                face_a_dessiner j getp3d 
     606%% 15/05/2008 %%                face_a_dessiner j 1 add n mod getp3d 
     607%% 15/05/2008 %%                hauteurlignedeniveau segment_inter_planz { 
     608%% 15/05/2008 %%                1 dict begin 
     609%% 15/05/2008 %%                   /table exch def 
     610%% 15/05/2008 %%                   /lignedeniveau [  
     611%% 15/05/2008 %%                      lignedeniveau aload pop  
     612%% 15/05/2008 %%                      table 0 getp3d 
     613%% 15/05/2008 %%                      table length 4 ge { 
     614%% 15/05/2008 %%                         table 1 getp3d 
     615%% 15/05/2008 %%                      } if 
     616%% 15/05/2008 %%                   ] store 
     617%% 15/05/2008 %%                end 
     618%% 15/05/2008 %%                } if 
     619%% 15/05/2008 %%             } for 
     620%% 15/05/2008 %%             lignedeniveau length 4 ge  
     621%% 15/05/2008 %%                {lignedeniveau ligne3d} 
     622%% 15/05/2008 %%             if 
     623%% 15/05/2008 %%          grestore 
     624%% 15/05/2008 %%       } if 
     625%% 15/05/2008 %%  
     626%% 15/05/2008 %%       %% on marque les aretes 
     627%% 15/05/2008 %%       aretescachees { 
     628%% 15/05/2008 %%          0 1 n 1 sub { 
     629%% 15/05/2008 %%             /j exch def 
     630%% 15/05/2008 %%             /k1 F i j get_ij def              %% indice sommet1 
     631%% 15/05/2008 %%             /k2 F i j 1 add n mod get_ij def  %% indice sommet2 
     632%% 15/05/2008 %%             A k1 k2 true put_ij 
     633%% 15/05/2008 %%             A k2 k1 true put_ij 
     634%% 15/05/2008 %%          } for 
     635%% 15/05/2008 %%       } if 
     636%% 15/05/2008 %%    } if 
     637%% 15/05/2008 %% end 
     638%% 15/05/2008 %% } def 
     639 
     640%% 27/05/08 %% %% syntaxe : solid i affectecouleursolid_facei --> si la couleur de 
     641%% 27/05/08 %% %% la face i est definie, affecte fillstyle a cette couleur 
     642%% 27/05/08 %% /affectecouleursolid_facei { 
     643%% 27/05/08 %% 3 dict begin 
     644%% 27/05/08 %%    /i exch def 
     645%% 27/05/08 %%    /solid exch def 
     646%% 27/05/08 %%    solid solidgetfcolors /FC exch def 
     647%% 27/05/08 %%    FC length 1 sub i ge { 
     648%% 27/05/08 %%       FC i get length 1 ge { 
     649%% 27/05/08 %%          /fillstyle FC i get ( fill) append cvx 
     650%% 27/05/08 %%          true 
     651%% 27/05/08 %%       } { 
     652%% 27/05/08 %%          false 
     653%% 27/05/08 %%       } ifelse 
     654%% 27/05/08 %%    } { 
     655%% 27/05/08 %%       false 
     656%% 27/05/08 %%    } ifelse 
     657%% 27/05/08 %% end 
     658%% 27/05/08 %% {def} if 
     659%% 27/05/08 %% } def 
     660 
     661%% 27/05/08 %% %% syntaxe : A solid i dessinefacevisible 
     662%% 27/05/08 %% /dessinefacevisible { 
     663%% 27/05/08 %% 8 dict begin 
     664%% 27/05/08 %%    /i exch def 
     665%% 27/05/08 %%    /solid exch def 
     666%% 27/05/08 %%    /A exch def 
     667%% 27/05/08 %%    solid issolid not { 
     668%% 27/05/08 %%       (Error : mauvais type d argument dans dessinefacevisible) == 
     669%% 27/05/08 %%       quit 
     670%% 27/05/08 %%    } if 
     671%% 27/05/08 %%    /F solid solidgetfaces def 
     672%% 27/05/08 %%    /S solid solidgetsommets def 
     673%% 27/05/08 %%  
     674%% 27/05/08 %%    solid i solidfacevisible? { 
     675%% 27/05/08 %%       /n F i get length def %% nb de sommets de la face 
     676%% 27/05/08 %%  
     677%% 27/05/08 %%       startest { 
     678%% 27/05/08 %%          %% choix de la couleur 
     679%% 27/05/08 %%          /lightcolor where { 
     680%% 27/05/08 %%             pop 
     681%% 27/05/08 %%             /coeff 
     682%% 27/05/08 %%                lightintensity 
     683%% 27/05/08 %%                solid i solidnormaleface normalize3d 
     684%% 27/05/08 %%                solid i solidcentreface lightsrc vecteur3d normalize3d 
     685%% 27/05/08 %%                scalprod3d mul 
     686%% 27/05/08 %%                0 max 1 min 
     687%% 27/05/08 %%             def 
     688%% 27/05/08 %%             /fillstyle { 
     689%% 27/05/08 %%                 lightcolor {coeff mul} apply setcolor fill 
     690%% 27/05/08 %%             } def 
     691%% 27/05/08 %%             solidgrid not { 
     692%% 27/05/08 %%                lightcolor {coeff mul} apply setcolor 
     693%% 27/05/08 %%             } if 
     694%% 27/05/08 %%          } { 
     695%% 27/05/08 %%             /lightsrc where { 
     696%% 27/05/08 %%                pop 
     697%% 27/05/08 %%                /coeff 
     698%% 27/05/08 %%                   lightintensity 
     699%% 27/05/08 %%                   solid i solidnormaleface normalize3d 
     700%% 27/05/08 %%                   solid i solidcentreface lightsrc vecteur3d normalize3d 
     701%% 27/05/08 %%                   scalprod3d mul 
     702%% 27/05/08 %%                   0 max 1 min 
     703%% 27/05/08 %%                def 
     704%% 27/05/08 %%                /lacouleur [ 
     705%% 27/05/08 %%                   gsave 
     706%% 27/05/08 %%                      solid solidgetfcolors i get cvx exec currentrgbcolor 
     707%% 27/05/08 %%                   grestore 
     708%% 27/05/08 %%                ] def 
     709%% 27/05/08 %%                /fillstyle { 
     710%% 27/05/08 %%                   lacouleur {coeff mul} apply setcolor fill 
     711%% 27/05/08 %%                } def 
     712%% 27/05/08 %%                solidgrid not { 
     713%% 27/05/08 %%                   lacouleur {coeff mul} apply setcolor 
     714%% 27/05/08 %%                } if 
     715%% 27/05/08 %%             } { 
     716%% 27/05/08 %%                solid i affectecouleursolid_facei 
     717%% 27/05/08 %%             } ifelse 
     718%% 27/05/08 %%  
     719%% 27/05/08 %%          } ifelse 
     720%% 27/05/08 %%       } if 
     721%% 27/05/08 %%  
     722%% 27/05/08 %%       /face_a_dessiner [  %% face visible : F [i] 
     723%% 27/05/08 %%          0 1 n 1 sub { 
     724%% 27/05/08 %%             /j exch def 
     725%% 27/05/08 %%             solid j i solidgetsommetface 
     726%% 27/05/08 %%          } for 
     727%% 27/05/08 %%       ] def  
     728%% 27/05/08 %%       face_a_dessiner polygone3d 
     729%% 27/05/08 %%  
     730%% 27/05/08 %%       %% on marque les aretes 
     731%% 27/05/08 %%       aretescachees { 
     732%% 27/05/08 %%          0 1 n 1 sub { 
     733%% 27/05/08 %%             /j exch def 
     734%% 27/05/08 %%             /k1 F i j get_ij def              %% indice sommet1 
     735%% 27/05/08 %%             /k2 F i j 1 add n mod get_ij def  %% indice sommet2 
     736%% 27/05/08 %%             A k1 k2 true put_ij 
     737%% 27/05/08 %%             A k2 k1 true put_ij 
     738%% 27/05/08 %%          } for 
     739%% 27/05/08 %%       } if 
     740%% 27/05/08 %%  
     741%% 27/05/08 %%  
     742%% 27/05/08 %%       %% trace de la ligne de niveau 
     743%% 27/05/08 %%       solidintersectiontype 0 ge { 
     744%% 27/05/08 %%          0 1 solidintersectionplan length 1 sub { 
     745%% 27/05/08 %%             /k exch def 
     746%% 27/05/08 %%             /lignedeniveau [] def 
     747%% 27/05/08 %%             gsave 
     748%% 27/05/08 %%                k solidintersectionlinewidth length lt { 
     749%% 27/05/08 %%                   solidintersectionlinewidth k get setlinewidth 
     750%% 27/05/08 %%                } { 
     751%% 27/05/08 %%                   solidintersectionlinewidth 0 get setlinewidth 
     752%% 27/05/08 %%                } ifelse 
     753%% 27/05/08 %%                k solidintersectioncolor length lt { 
     754%% 27/05/08 %%                   solidintersectioncolor k get cvx exec 
     755%% 27/05/08 %%                } { 
     756%% 27/05/08 %%                   solidintersectioncolor 0 get cvx exec 
     757%% 27/05/08 %%                } ifelse 
     758%% 27/05/08 %%                0 1 n 1 sub { 
     759%% 27/05/08 %%                   /j exch def 
     760%% 27/05/08 %%                   face_a_dessiner j getp3d 
     761%% 27/05/08 %%                   face_a_dessiner j 1 add n mod getp3d 
     762%% 27/05/08 %%                   solidintersectionplan k get segment_inter_plan { 
     763%% 27/05/08 %%                   1 dict begin 
     764%% 27/05/08 %%                      /table exch def 
     765%% 27/05/08 %%                      /lignedeniveau [  
     766%% 27/05/08 %%                         lignedeniveau aload pop  
     767%% 27/05/08 %%                         table 0 getp3d 
     768%% 27/05/08 %%                         table length 4 ge { 
     769%% 27/05/08 %%                            table 1 getp3d 
     770%% 27/05/08 %%                         } if 
     771%% 27/05/08 %%                      ] store 
     772%% 27/05/08 %%                   end 
     773%% 27/05/08 %%                   } if 
     774%% 27/05/08 %%                } for 
     775%% 27/05/08 %%                 
     776%% 27/05/08 %%                %% dessin de la ligne 
     777%% 27/05/08 %%                lignedeniveau length 4 ge { 
     778%% 27/05/08 %%                   solid i solidisinface { 
     779%% 27/05/08 %%                      pointilles  
     780%% 27/05/08 %%                   } if 
     781%% 27/05/08 %%                   lignedeniveau ligne3d 
     782%% 27/05/08 %%                } if 
     783%% 27/05/08 %%             grestore 
     784%% 27/05/08 %%          } for          
     785%% 27/05/08 %%       } if 
     786%% 27/05/08 %%        
     787%% 27/05/08 %%    } if 
     788%% 27/05/08 %% end 
     789%% 27/05/08 %% } def 
     790%% 27/05/08 %%  
     791%% 27/05/08 %% %% syntaxe : A solid i dessinefacecachee 
     792%% 27/05/08 %% /dessinefacecachee { 
     793%% 27/05/08 %% 6 dict begin 
     794%% 27/05/08 %%    /i exch def 
     795%% 27/05/08 %%    /solid exch def 
     796%% 27/05/08 %%    solid issolid not { 
     797%% 27/05/08 %%       (Error : mauvais type d argument dans dessinefacecachee) == 
     798%% 27/05/08 %%       quit 
     799%% 27/05/08 %%    } if 
     800%% 27/05/08 %%    /A exch def 
     801%% 27/05/08 %%  
     802%% 27/05/08 %%    /F solid solidgetfaces def 
     803%% 27/05/08 %%    /S solid solidgetsommets def 
     804%% 27/05/08 %%  
     805%% 27/05/08 %%    solid i solidfacevisible? not { 
     806%% 27/05/08 %%       %% face cachee => on prend chacune des aretes de la face et on 
     807%% 27/05/08 %%       %% regarde si elle est deja dessinee. 
     808%% 27/05/08 %%       4 dict begin 
     809%% 27/05/08 %%          /n F i get length def %% nb de sommets de la face 
     810%% 27/05/08 %%          0 1 n 1 sub { 
     811%% 27/05/08 %%          /k exch def 
     812%% 27/05/08 %%             /k1 F i k get_ij def              %% indice sommet1 
     813%% 27/05/08 %%             /k2 F i k 1 add n mod get_ij def  %% indice sommet2 
     814%% 27/05/08 %%             A k1 k2 get_ij not { 
     815%% 27/05/08 %%                gsave 
     816%% 27/05/08 %%                   currentlinewidth .5 mul setlinewidth 
     817%% 27/05/08 %%                   pointilles 
     818%% 27/05/08 %%                   [S k1 getp3d 
     819%% 27/05/08 %%                   S k2 getp3d] ligne3d 
     820%% 27/05/08 %%                   A k1 k2 true put_ij 
     821%% 27/05/08 %%                   A k2 k1 true put_ij 
     822%% 27/05/08 %%                grestore 
     823%% 27/05/08 %%             } if 
     824%% 27/05/08 %%          } for 
     825%% 27/05/08 %%  
     826%% 27/05/08 %%       %% trace de la ligne de niveau 
     827%% 27/05/08 %%       solidintersectiontype 0 ge { 
     828%% 27/05/08 %%          /face_a_dessiner [  %% face visible : F [i] 
     829%% 27/05/08 %%             0 1 n 1 sub { 
     830%% 27/05/08 %%                /j exch def 
     831%% 27/05/08 %%                solid j i solidgetsommetface 
     832%% 27/05/08 %%             } for 
     833%% 27/05/08 %%          ] def  
     834%% 27/05/08 %%          0 1 solidintersectionplan length 1 sub { 
     835%% 27/05/08 %%             /k exch def 
     836%% 27/05/08 %%             /lignedeniveau [] def 
     837%% 27/05/08 %%             gsave 
     838%% 27/05/08 %%                pointilles 
     839%% 27/05/08 %%                k solidintersectionlinewidth length lt { 
     840%% 27/05/08 %%                   solidintersectionlinewidth k get setlinewidth 
     841%% 27/05/08 %%                } { 
     842%% 27/05/08 %%                   solidintersectionlinewidth 0 get setlinewidth 
     843%% 27/05/08 %%                } ifelse 
     844%% 27/05/08 %%                k solidintersectioncolor length lt { 
     845%% 27/05/08 %%                   solidintersectioncolor k get cvx exec 
     846%% 27/05/08 %%                } { 
     847%% 27/05/08 %%                   solidintersectioncolor 0 get cvx exec 
     848%% 27/05/08 %%                } ifelse 
     849%% 27/05/08 %%                0 1 n 1 sub { 
     850%% 27/05/08 %%                   /j exch def 
     851%% 27/05/08 %%                   face_a_dessiner j getp3d 
     852%% 27/05/08 %%                   face_a_dessiner j 1 add n mod getp3d 
     853%% 27/05/08 %%                   solidintersectionplan k get segment_inter_plan { 
     854%% 27/05/08 %%                   1 dict begin 
     855%% 27/05/08 %%                      /table exch def 
     856%% 27/05/08 %%                      table length 6 eq { 
     857%% 27/05/08 %%                         /lignedeniveau table store 
     858%% 27/05/08 %%                         exit 
     859%% 27/05/08 %%                      } { 
     860%% 27/05/08 %%                         /lignedeniveau [  
     861%% 27/05/08 %%                            lignedeniveau aload pop  
     862%% 27/05/08 %%                            table 0 getp3d 
     863%% 27/05/08 %%                         ] store 
     864%% 27/05/08 %%                      } ifelse 
     865%% 27/05/08 %%                   end 
     866%% 27/05/08 %%                   } if 
     867%% 27/05/08 %%                } for 
     868%% 27/05/08 %%                 
     869%% 27/05/08 %%                %% dessin de la ligne 
     870%% 27/05/08 %%                lignedeniveau length 4 ge { 
     871%% 27/05/08 %%                   [lignedeniveau aload pop sortp3d] ligne3d 
     872%% 27/05/08 %%                } if 
     873%% 27/05/08 %%             grestore 
     874%% 27/05/08 %%          } for          
     875%% 27/05/08 %%       } if 
     876%% 27/05/08 %%        
     877%% 27/05/08 %%       end 
     878%% 27/05/08 %%    } if 
     879%% 27/05/08 %% end 
     880%% 27/05/08 %% } def 
  • trunk/jps2ps/pps/marks.pps

    r11 r12  
    88   dup xtick 
    99   /Courier findfont .8 fontsize mul scalefont setfont 
    10    dup chaine cvs exch  
     10   dup dup truncate eq { 
     11      cvi dup chaine cvs exch  
     12   } { 
     13      dup chaine cvs exch  
     14   } ifelse 
    1115   Oy xmarkstyle 
    1216} def 
  • trunk/jps2ps/pps/min.pps

    r4 r12  
    11/min { 
    2    2 copy 
    3    gt {exch} if 
    4    pop 
     22 dict begin 
     3   dup isarray { 
     4      duparray /table exch def pop 
     5      table 0 get 
     6      1 1 table length 1 sub { 
     7         /i exch def 
     8         table i get 
     9         min 
     10      } for 
     11   } { 
     12      2 copy 
     13      gt {exch} if 
     14      pop 
     15   } ifelse 
     16end 
    517} def 
    618 
  • trunk/jps2ps/pps/newgrillecirculaire.pps

    r4 r12  
    3737             theta cos r j mul K div mul 
    3838             theta sin r j mul K div mul 
    39              2 copy f %exch atan 90 div 
     39             0 %2 copy f %exch atan 90 div 
    4040          } for 
    4141       } for 
  • trunk/jps2ps/pps/numstr2array.pps

    r11 r12  
    3939end 
    4040} def 
     41 
     42/str2num {cvx exec} def 
    4143 
    4244%% syntaxe : str numstr2array -> array 
  • trunk/jps2ps/pps/planaffine.pps

    r11 r12  
    371371   /imJ defpoint3d 
    372372   /imI defpoint3d 
    373    resultat [imI imJ imK] planputbase 
     373   resultat [imI imJ] planputbase 
    374374   currentdict /origine known { 
    375375      origine /z exch def /y exch def /x exch def