Changeset 32

Show
Ignore:
Timestamp:
06/01/08 18:14:46 (7 months ago)
Author:
jpv
Message:

Ajout de planshowbase et planshowbase3d

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/solides.pro

    r31 r32  
    11%! 
    22% PostScript prologue for pst-solides3d.tex. 
    3 % Version 3.18, 2008/05/3
     3% Version 3.19, 2008/06/0
    44% 
    55%% COPYRIGHT 2008 by Jean-Paul Vignault, Manuel Luque 
     
    416416 
    417417%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     418%%%%                  la 2D                             %%%% 
     419%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     420 
     421%%%%% ### vecteur ### 
     422%% syntaxe~: A B vecteur 
     423/vecteur { 
     424                %% xA yA xB yB  
     425   3 -1 roll    %% xA xB yB yA  
     426   sub          %% xA xB yB-yA  
     427   3 1 roll     %% yB-yA xA xB  
     428   exch sub     %% yB-yA xB-xA  
     429   exch 
     430} def 
     431 
     432%%%%% ### defpoint ### 
     433%% syntaxe : xA yA /A defpoint 
     434/defpoint { 
     4351 dict begin 
     436   /t@mp@r@ire exch def 
     437   [ 3 1 roll ] cvx t@mp@r@ire exch  
     438end def 
     439} def 
     440 
     441%%%%% ### normalize ### 
     442%% syntaxe : u normalize -> u / ||u|| 
     443/normalize { 
     4442 dict begin 
     445   /u defpoint 
     446   /n u norme def 
     447   u 1 n div mulv 
     448end 
     449} def 
     450 
     451%%%%% ### norme ### 
     452%% syntaxe : u norme --> |u| 
     453/norme { 
     454   dup mul 
     455   exch 
     456   dup mul 
     457   add sqrt 
     458} def 
     459 
     460%%%%% ### oldarrow ### 
     461%% syntaxe : A B oldarrow --> trace fleche en B, direction AB 
     462/oldarrow { 
     4634 dict begin 
     464gsave 
     465   /B defpoint 
     466   /A defpoint 
     467   oldarrowscale scale 
     468   oldarrowangle rotate 
     469   newpath  
     470   B smoveto 
     471   A B vecteur normalize /u defpoint 
     472   u neg exch /v defpoint 
     473   u oldarrowpointe neg mulv rmoveto %% ainsi c'est la pointe qui est en (0, 0) 
     474   %% le pt extremal arriere haut 
     475      u oldarrowplume neg mulv        %% l'abscisse 
     476      v oldarrow@ngle sin oldarrow@ngle cos div oldarrowplume mul mulv addv %% l'ordonnee 
     477   rlineto 
     478      u oldarrowplume oldarrowpointe add mulv 
     479      v oldarrow@ngle sin oldarrow@ngle cos div oldarrowplume mul neg mulv addv 
     480   rlineto  
     481      u oldarrowplume oldarrowpointe add neg mulv 
     482      v oldarrow@ngle sin oldarrow@ngle cos div oldarrowplume mul neg mulv addv 
     483   rlineto 
     484   closepath fill 
     485grestore 
     486end 
     487} def 
     488 
     489/oldarrowpointe 12.5 def 
     490/oldarrowplume 2.5 def  
     491/oldarrow@ngle 60 def         
     492/oldarrowscale {1 1} def 
     493/oldarrowangle 0 def     %% pour l'utilisateur 
     494 
     495%%%%% ### fin insertion ### 
     496 
     497%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    418498%%%%                  les tests                         %%%% 
    419499%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     
    9721052      newpath 
    9731053   } ifelse 
     1054end 
     1055} def 
     1056 
     1057%%%%% ### projscene ### 
     1058%% syntaxe : plantype bprojscene ... eprojscene 
     1059/bprojscene { 
     106010 dict begin 
     1061gsave 
     1062   /l@pl@n exch def 
     1063   /savestroke {SolidesDict /stroke get exec} def 
     1064   /stroke {l@pl@n projpath savestroke} def 
     1065   /savefill {SolidesDict /fill get exec} def 
     1066   /fill {l@pl@n projpath savefill} def 
     1067} def 
     1068/eprojscene { 
     1069grestore 
    9741070end 
    9751071} def 
     
    52525348      leplan mybool projpath 
    52535349   stroke 
     5350end 
     5351} def 
     5352 
     5353%% syntaxe : plantype str1 str2 planshowbase -> -  
     5354%% syntaxe : plantype str2 planshowbase -> -  
     5355%% syntaxe : plantype planshowbase -> -  
     5356/planshowbase { 
     53573 dict begin 
     5358   dup isstring { 
     5359      /couleur2 exch def 
     5360      dup isstring { 
     5361         /couleur1 exch def 
     5362      } { 
     5363         /couleur1 (rouge) def 
     5364      } ifelse 
     5365   } { 
     5366      /couleur1 (rouge) def 
     5367      /couleur2 (vert) def 
     5368   } ifelse 
     5369   bprojscene 
     5370      couleur1 cvx exec 
     5371      newpath 
     5372         0 0 smoveto 
     5373         1 0 slineto 
     5374      stroke 
     5375      0 0 1 0 oldarrow 
     5376      couleur2 cvx exec 
     5377      newpath 
     5378         0 0 smoveto 
     5379         0 1 slineto 
     5380      stroke 
     5381      0 0 0 1 oldarrow 
     5382   eprojscene 
     5383end 
     5384} def 
     5385 
     5386%% syntaxe : plantype str1 str2 str3 planshowbase3d -> -  
     5387%% syntaxe : plantype str2 str3 planshowbase3d -> -  
     5388%% syntaxe : plantype str3 planshowbase3d -> -  
     5389%% syntaxe : plantype planshowbase3d -> -  
     5390%% syntaxe : plantype str1 str2 str3 array planshowbase3d -> -  
     5391%% syntaxe : plantype str2 str3 array planshowbase3d -> -  
     5392%% syntaxe : plantype str3 array planshowbase3d -> -  
     5393%% syntaxe : plantype array planshowbase3d -> -  
     5394/planshowbase3d { 
     53957 dict begin 
     5396   dup dup isarray exch isplan not and { 
     5397      /table exch def 
     5398   } { 
     5399      /table {} def 
     5400   } ifelse 
     5401   dup isstring { 
     5402      /couleur3 exch def 
     5403      dup isstring { 
     5404         /couleur2 exch def 
     5405         dup isstring { 
     5406            /couleur1 exch def 
     5407         } { 
     5408            /couleur1 (rouge) def 
     5409         } ifelse 
     5410      } { 
     5411         /couleur2 (vert) def 
     5412         /couleur1 (rouge) def 
     5413      } ifelse 
     5414   } { 
     5415      /couleur1 (rouge) def 
     5416      /couleur2 (vert) def 
     5417      /couleur3 (bleu) def 
     5418   } ifelse 
     5419   /plan exch def 
     5420   plan couleur1 couleur2 planshowbase 
     5421   plan plangetorigine /I defpoint3d 
     5422   plan plangetbase 
     5423   dup 0 getp3d /u defpoint3d 
     5424   1 getp3d /v defpoint3d 
     5425   u v vectprod3d table newvecteur 
     5426   {I addv3d} solidtransform 
     5427   dup couleur3 solidputcolors 
     5428   solidgridOff 
     5429   drawsolid** 
    52545430end 
    52555431} def 
     
    74877663%%%%% ### newvecteur ###  
    74887664%% syntaxe : x y z newvecteur 
     7665%% syntaxe : x y z array newvecteur 
    74897666/newvecteur { 
    749076674 dict begin 
     7668   dup isarray { 
     7669      /table exch def 
     7670      /h@uteur table 1 get def 
     7671      /r@y@n table 0 get def 
     7672   } { 
     7673      /h@uteur .3 def 
     7674      /r@y@n .1 def 
     7675   } ifelse 
    74917676   /A defpoint3d 
    74927677   %%Sommets 
     
    74967681   ] def 
    74977682   S F generesolid 
    7498 %%   /axe exch def 
    74997683   [ A ] 
    75007684   normalvect_to_orthobase 
     
    75037687   /imI defpoint3d 
    75047688 
    7505    A norme3d /z exch .3 sub def  
    7506    0 .1 .3 [1 8] newcone 
     7689   A norme3d /z exch h@uteur sub def  
     7690   0 r@y@n h@uteur [1 8] newcone 
    75077691   dup (noir) outputcolors 
    75087692   {0 0 z translatepoint3d} solidtransform 
  • trunk/tests/index.txt

    r31 r32  
    1414test_14 : nommer un solide 
    1515test_15 : objet load + lumière ponctuelle 
     16test_16 : planshowbase et planshowbase3d