Changeset 67

Show
Ignore:
Timestamp:
06/26/08 13:18:48 (7 months ago)
Author:
jpv
Message:

Définition du plan de projection pour \psProjection

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/pst-solides3d.tex

    r66 r67  
    2020\ifx\MultidoLoaded\endinput\else\input multido.tex \fi 
    2121% JPV & ML & AS 
    22 \def\fileversion{3.29
    23 \def\filedate{2008/06/22
     22\def\fileversion{3.31
     23\def\filedate{2008/06/25
    2424\message{`PSTSOLIDESIIID' v\fileversion, \filedate} 
    2525% 
     
    450450% 
    451451/range [ \pst@solides@range ] def 
    452 /action {\pst@solides@action} def 
     452/action (\pst@solides@action) def 
    453453/texte (\pst@solides@text) def 
    454454/pos (\pst@solides@pos) def 
     
    873873    \ifPst@algebraic\toks@={}% 
    874874     \def\@tempb{#4}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
    875       \def\@tempb{#5}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
    876        \def\@tempb{#6}\ifx\@tempb\@empty 
    877                       \else\store@toks@after\@tempb\fi 
    878          \pstVerb{/#2 { \@tempa \the\toks@ } def }% 
    879     \else 
    880      \pstVerb{/#2 { \the\toks@ #4 #5 #6} def }% 
     875     \def\@tempb{#5}\ifx\@tempb\@empty \else\store@toks@after\@tempb\fi 
     876     \def\@tempb{#6}\ifx\@tempb\@empty 
     877                    \else\store@toks@after\@tempb\fi 
     878     \pstVerb{ 
     879       /#2 { 3 dict begin \@tempa \the\toks@  
     880             gere_pst-deffunction end } def }% 20080625  
     881    \else 
     882     \pstVerb{ 
     883       /#2 { 3 dict begin \the\toks@ #4 #5 #6  
     884             gere_pst-deffunction end } def }% 20080625 
    881885    \fi 
    882886\egroup} 
     
    885889  \toks@={}% 
    886890   \def\arg@ii{#1}\ifx\arg@ii\@empty \else\store@toks@before\arg@ii\fi 
    887     \def\arg@ii{#2}\ifx\arg@ii\@empty \else\store@toks@before\arg@ii\fi 
    888      \def\arg@ii{#3}\ifx\arg@ii\@empty 
    889 \else\store@toks@before\arg@ii\fi} 
     891   \def\arg@ii{#2}\ifx\arg@ii\@empty \else\store@toks@before\arg@ii\fi 
     892   \def\arg@ii{#3}\ifx\arg@ii\@empty \else\store@toks@before\arg@ii\fi 
     893   \edef\@tmpPSDefns{\the\toks@ mark }%       20080625 
     894   \global\toks@=\expandafter{\@tmpPSDefns}}% 20080625 
    890895\def\store@toks@before#1{% 
    891896 \edef\@tmpPSDefns{/#1 exch def \the\toks@}% 
     
    896901  \global\toks@=\expandafter{\@tmpPSDefns}% 
    897902} 
    898  
    899903 
    900904%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
     
    925929\define@key[psset]{pst-solides3d}{text}{\def\pst@solides@text{#1}} 
    926930\psset[pst-solides3d]{text=}% pas de texte par defaut 
     931% plan de projection 
     932\define@key[psset]{pst-solides3d}{plan}{\def\pst@solides@plan{#1}} 
     933\psset[pst-solides3d]{plan=}% pas de plan par defaut 
    927934% position du texte a projeter 
    928935\define@key[psset]{pst-solides3d}{pos}{\def\pst@solides@pos{#1}} 
     
    947954/texte (\pst@solides@text) def 
    948955/pos (\pst@solides@pos) def 
     956\ifx\pst@solides@plan\@empty 
     957   \else 
     958/planprojpst \pst@solides@plan \space def 
     959\fi 
    949960\ifx\pst@solides@solidname\@empty 
    950961    \else 
  • trunk/solides.pro

    r66 r67  
    11%! 
    22% PostScript prologue for pst-solides3d.tex. 
    3 % Version 3.36, 2008/06/23 
     3% Version 3.37, 2008/06/25 
    44% 
    55%% COPYRIGHT 2008 by Jean-Paul Vignault 
     
    214214/dashed {pointilles} def 
    215215 
    216 %%% les 3 procedures utilisees pour transformer les depots de AlgToPs en nombres 
    217 /pstrickactionR3 {  
    218 3 dict begin  
    219   /len@3 exch def  
    220   /len@2 exch def  
    221   /len@1 exch def  
    222   len@1 exec  
    223   len@2 exec  
    224   len@3 exec  
    225 end  
    226 } def  
    227  
    228 /pstrickactionR2 { 
    229    exec exch exec exch 
    230 } def 
    231  
    232 /pstrickactionR { 
    233    exec 
    234 } def 
    235  
    236216%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    237217%%%%             geometrie basique                      %%%% 
     
    291271   stroke 
    292272grestore 
     273} def 
     274 
     275/point_ { 
     276   1 setlinecap 
     277   5 setlinewidth 
     278      smoveto 
     279      0 0 rlineto 
    293280} def 
    294281 
     
    567554/eqc { 
    568555   eqp 
     556} def 
     557 
     558%%%%% ### eqstring ### 
     559/eqstring { 
     5603 dict begin 
     561   /str2 exch def 
     562   /str1 exch def 
     563   str1 length str2 length eq { 
     564      /i 0 def 
     565      true 
     566      str1 length { 
     567         str1 i get str2 i get eq and 
     568         /i i 1 add store 
     569      } repeat 
     570   } { 
     571      false 
     572   } ifelse 
     573end 
    569574} def 
    570575 
     
    13991404/courbeR3 { 
    14001405   tmin tmax 3 -1 roll CourbeR3 
     1406} def 
     1407 
     1408%%%%% ### cercle ### 
     1409%% syntaxe : x0 y0 r cercle 
     1410/cercle { 
     14113 dict begin 
     1412   /r@y@n exch def 
     1413   /y@ exch def 
     1414   /x@ exch def 
     1415   0 360 {cos r@y@n mul x@ add} {sin r@y@n mul y@ add} Courbeparam 
     1416end 
     1417} def 
     1418 
     1419%% syntaxe : x0 y0 r cercle_ 
     1420/cercle_ { 
     14213 dict begin 
     1422   /r@y@n exch def 
     1423   /y@ exch def 
     1424   /x@ exch def 
     1425   x@ r@y@n add y@ smoveto 
     1426   0 360 {cos r@y@n mul x@ add} {sin r@y@n mul y@ add} Courbeparam_ 
     1427end 
     1428} def 
     1429 
     1430%% syntaxe : x0 y0 r cercle-_ 
     1431/cercle-_ { 
     14323 dict begin 
     1433   /r@y@n exch def 
     1434   /y@ exch def 
     1435   /x@ exch def 
     1436   x@ r@y@n add y@ smoveto 
     1437   360 0 {cos r@y@n mul x@ add} {sin r@y@n mul y@ add} Courbeparam_ 
     1438end 
     1439} def 
     1440 
     1441%% syntaxe : x0 y0 r cercle* 
     1442/cercle* { 
     14431 dict begin 
     1444   /startest true def 
     1445   cercle 
     1446end 
     1447} def 
     1448 
     1449%% syntaxe : alpha beta x0 y0 r Cercle 
     1450/Cercle { 
     14514 dict begin 
     1452   dup isstring 
     1453      {/option exch def} 
     1454   if 
     1455   /r@y@n exch def 
     1456   /y@ exch def 
     1457   /x@ exch def 
     1458   {cos r@y@n mul x@ add} {sin r@y@n mul y@ add}  
     1459   currentdict /option known 
     1460      {option} 
     1461   if 
     1462   Courbeparam 
     1463end 
     1464} def 
     1465 
     1466%% syntaxe : alpha beta x0 y0 r Cercle_ 
     1467/Cercle_ { 
     14683 dict begin 
     1469   /r@y@n exch def 
     1470   /y@ exch def 
     1471   /x@ exch def 
     1472   {cos r@y@n mul x@ add} {sin r@y@n mul y@ add} Courbeparam_ 
     1473end 
     1474} def 
     1475 
     1476%% syntaxe : alpha beta x0 y0 r Cercle 
     1477/Cercle* { 
     14781 dict begin 
     1479   /startest {true} def 
     1480   Cercle 
     1481end 
    14011482} def 
    14021483 
     
    88368917%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    88378918 
     8919%%% les 3 procedures utilisees pour transformer les depots de AlgToPs en nombres 
     8920/pstrickactionR3 {  
     89213 dict begin  
     8922  /len@3 exch def  
     8923  /len@2 exch def  
     8924  /len@1 exch def  
     8925  len@1 exec  
     8926  len@2 exec  
     8927  len@3 exec  
     8928end  
     8929} def  
     8930 
     8931/pstrickactionR2 { 
     8932   exec exch exec exch 
     8933} def 
     8934 
     8935/pstrickactionR { 
     8936   exec 
     8937} def 
     8938 
     8939/gere_pst-deffunction { 
     8940   counttomark 
     8941   dup 1 eq { 
     8942      pop 
     8943      pstrickactionR 
     8944      ] aload pop 
     8945   } { 
     8946      2 eq { 
     8947         pstrickactionR2 
     8948         ] aload pop 
     8949      } { 
     8950         pstrickactionR3 
     8951         ] aload pop 
     8952      } ifelse 
     8953   } ifelse 
     8954} def 
     8955 
    88388956%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    88398957%%%%             procedures pour \psSolid               %%%% 
     
    90019119      /vecteur_en_c@urs false def 
    90029120   } ifelse 
    9003    dup action 
     9121   dup action cvx exec 
    90049122   noir 
    90059123   solidnumf length 0 ne { 
     
    95339651   setTimes 
    95349652   linecolor 
    9535    args definition cvx exec point3d 
     9653   action (none) eqstring not { 
     9654      args definition cvx exec point3d 
     9655   } if 
    95369656   texte args definition cvx exec pos (text3d) append cvx exec 
    95379657   tx@Dict /solidname known { 
     
    95409660      tx@Dict /solidname undef 
    95419661   } if 
    9542  
    95439662grestore 
    95449663} def 
     
    95599678 
    95609679/gere_pstricks_proj_opt { 
    9561       /solidprojname where { 
    9562          /solidprojname get noface phi  
    9563          xorigine 0 eq 
    9564          yorigine 0 eq and 
    9565          zorigine 0 eq and  
    9566          xorigine isinteger not and 
    9567          yorigine isinteger not and 
    9568          yorigine isinteger not and { 
     9680      /planprojpst where { 
     9681         pop 
     9682         planprojpst projectionsifacevisible projpath 
     9683         /planprojpst where pop /planprojpst undef 
     9684      } { 
     9685         /solidprojname where { 
     9686            /solidprojname get noface phi   
     9687            xorigine 0 eq 
     9688            yorigine 0 eq and 
     9689            zorigine 0 eq and  
     9690            xorigine isinteger not and 
     9691            yorigine isinteger not and 
     9692            yorigine isinteger not and { 
     9693            } { 
     9694               [xorigine yorigine zorigine] (                 ) astr2str  
     9695            } ifelse 
     9696            projectionsifacevisible solidprojpath 
    95699697         } { 
    9570             [xorigine yorigine zorigine] (                 ) astr2str  
     9698            xorigine yorigine zorigine [ normale ] projectionsifacevisible planprojpath 
    95719699         } ifelse 
    9572          projectionsifacevisible solidprojpath 
    9573       } { 
    9574          xorigine yorigine zorigine [ normale ] projectionsifacevisible planprojpath 
    95759700      } ifelse 
    95769701} def 
     
    96009725} def 
    96019726 
     9727/proj-pst-point { 
     9728   solidlinewidth setlinewidth 
     9729%   newpath 
     9730      linecolor 
     9731      xorigine yorigine point_ 
     9732%      gere_pstricks_proj_opt 
     9733%   linecolor 
     9734   planprojpst projectionsifacevisible projpath 
     9735   stroke 
     9736} def 
     9737 
    96029738/proj-pst-texte { 
    960397392 dict begin 
     
    96069742      newpath 
    96079743      linecolor 
    9608       texte 0 0  
     9744      texte  
     9745      /planprojpst where { 
     9746         pop 
     9747         xorigine yorigine 
     9748      } { 
     9749         0 0 
     9750      } ifelse 
    96099751      pos (text_) append cvx exec 
    96109752      gere_pstricks_proj_opt 
  • trunk/tests/index.txt

    r61 r67  
    1717test_17 : point 
    1818test_18 : cylindre généralisé 
    19  
     19test_19 : cône généralisé 
     20test_20 : encapsulation des variables dans \defFunction 
     21test_21 : def du plan de projection 
     22test_22 : axesIIID 
  • trunk/tests/test_17.tex

    r45 r67  
    3333   pos=dr, 
    3434   text=A, 
     35   action=none, 
    3536   args=0 0 0]% 
    3637\end{pspicture*}