Changeset 23

Show
Ignore:
Timestamp:
05/09/08 15:47:22 (8 months ago)
Author:
jpv
Message:

Interfaçage des troncatures et du chanfreinage de faces

Files:

Legend:

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

    r22 r23  
    1111\ifx\MultidoLoaded\endinput\else\input multido.tex \fi 
    1212% JPV & ML & AS 
    13 \def\fileversion{3.09
    14 \def\filedate{2008/05/08
     13\def\fileversion{3.10
     14\def\filedate{2008/05/09
    1515\message{`PSTSOLIDESIIID' v\fileversion, \filedate} 
    1616% 
     
    5252\define@key[psset]{pst-solides3d}{c}{\def\pst@solides@c{#1}} % arete 3 du parallelepipede 
    5353\define@key[psset]{pst-solides3d}{h}{\def\pst@solides@h{#1}} % hauteur du cylindre, du cone, du prisme 
     54\define@key[psset]{pst-solides3d}{trunccoeff}{\def\pst@solides@trunccoeff{#1}} % coeff de troncature 
     55\define@key[psset]{pst-solides3d}{chanfreincoeff}{\def\pst@solides@chanfreincoeff{#1}} % coeff de chanfrein 
    5456\define@key[psset]{pst-solides3d}{base}{\def\pst@solides@base{#1}} % base du prisme 
    5557\psset[pst-solides3d]{base=-1 -1 1 -1 0 1}% coordonnees d'un triangle, base triangulaire par defaut 
    5658\define@key[psset]{pst-solides3d}{axe}{\def\pst@solides@axe{#1}} % axe du prisme 
    5759\psset[pst-solides3d]{axe=0 0 1}% vecteur definissant la direction de l'axe du prisme 
    58 \psset[pst-solides3d]{R=4,r1=4,r0=1.5,r=2,no=0,a=4,b=a,c=a,h=6,phi=0,theta=90,resolution=36} 
     60\psset[pst-solides3d]{R=4,r1=4,r0=1.5,r=2,no=0,a=4,b=a,c=a,h=6,phi=0,theta=90,resolution=36,% 
     61trunccoeff=.25,chanfreincoeff=.8} 
    5962\define@key[psset]{pst-solides3d}{hauteurlignedeniveau}{\def\psk@solides@hauteurlignedeniveau{#1}} 
    6063\psset[pst-solides3d]{hauteurlignedeniveau=0}% 
     
    120123\define@boolkey[psset]{pst-solides3d}[Pst@]{SphericalCoor}[true]{} 
    121124\psset{SphericalCoor=false} 
     125 
     126\define@boolkey[psset]{pst-solides3d}[Pst@]{chanfreinrm}[false]{} 
     127\psset{chanfreinrm=true} 
    122128 
    123129\define@boolkey[psset]{pst-solides3d}[Pst@]{grid}[false]{} 
     
    148154\define@key[psset]{pst-solides3d}{file}{\def\pst@solides@file{#1}} 
    149155\psset[pst-solides3d]{file=}% pas de fichier par defaut 
     156%% couleur face pour chanfrein 
     157\define@key[psset]{pst-solides3d}{fcolor}{\def\pst@solides@fcolor{#1}} 
     158\psset[pst-solides3d]{fcolor=}% pas de couleur par defaut 
    150159%% couleurs de faces isolees 
    151160\define@key[psset]{pst-solides3d}{fcol}{\def\pst@solides@fcol{#1}} 
     
    167176%% numerotation des faces 
    168177\define@key[psset]{pst-solides3d}{numfaces}{\def\pst@solides@numfaces{#1}} 
    169 \psset[pst-solides3d]{numfaces=}% pas de numerotation defaut 
     178\psset[pst-solides3d]{numfaces=}% pas de numerotation pra defaut 
     179%% troncature des sommets 
     180\define@key[psset]{pst-solides3d}{trunc}{\def\pst@solides@trunc{#1}} 
     181\psset[pst-solides3d]{trunc=}% pas de troncature pra defaut 
     182%% chanfreinage des faces 
     183\define@key[psset]{pst-solides3d}{chanfrein}{\def\pst@solides@chanfrein{#1}} 
     184\psset[pst-solides3d]{chanfrein=}% pas de chanfrein par defaut 
    170185%% numerotation des sommets 
    171186\define@key[psset]{pst-solides3d}{num}{\def\pst@solides@num{#1}} 
     
    342357/c \pst@solides@c\space def % arete 3 du parallelepipede 
    343358/h \pst@solides@h\space def % hauteur du cylindre, du cone, du prisme 
     359/trunccoeff \pst@solides@trunccoeff\space def % coeff de troncature 
     360/chanfreincoeff \pst@solides@chanfreincoeff\space def % coeff de chanfrein 
    344361/section {\pst@solides@section} def % section de l'objet de revolution 
    345362/base [ \pst@solides@base ] def 
     
    391408\fi 
    392409% 
     410\ifx\pst@solides@fcolor\@empty 
     411    \else 
     412/solidfcolor (\pst@solides@fcolor) def 
     413\fi 
     414% 
    393415\ifx\pst@solides@fcol\@empty 
    394416/fcol [] def 
     
    450472\fi 
    451473% 
     474\ifx\pst@solides@trunc\@empty 
     475/solidtrunc [] def 
     476    \else 
     477/solidtrunc [\pst@solides@trunc] def 
     478\fi 
     479\ifx\pst@solides@chanfrein\@empty 
     480/solidchanfrein [] def 
     481    \else 
     482/solidchanfrein [\pst@solides@chanfrein] def 
     483\fi 
     484% 
    452485\ifx\pst@solides@ngrid\@empty 
    453486/ngrid [] def 
     
    460493\else 
    461494   /tracelignedeniveau? false def 
     495\fi 
     496% 
     497\ifPst@chanfreinrm 
     498   /chanfreinrm true def 
     499\else 
     500   /chanfreinrm false def 
    462501\fi 
    463502% 
  • trunk/solides.pro

    r22 r23  
    11%! 
    22% PostScript prologue for pst-solides3d.tex. 
    3 % Version 3.12, 2008/05/08 
     3% Version 3.13, 2008/05/09 
    44% 
    55%% COPYRIGHT 2008 by Jean-Paul Vignault, Manuel Luque 
     
    53455345      solid coeff table i get  
    53465346      currentdict /couleurface known { 
    5347          couleurface  
     5347         couleurface 
    53485348      } if 
    53495349      rmfacecentrale s@lidchampfreineface 
     
    54165416      solid N 
    54175417      currentdict /couleurface known { 
    5418             couleurface  
     5418            couleurface 
    54195419      } { 
    54205420         couleurfaceorigine 
     
    73627362   linecolor 
    73637363   solidlinewidth setlinewidth 
     7364   solidtrunc length 0 ne { 
     7365      solidtrunc 0 get isstring { 
     7366         dup trunccoeff solidtronque 
     7367      } { 
     7368         dup solidtrunc trunccoeff solidtronque 
     7369      } ifelse 
     7370   } if 
    73647371   RotX 0 ne RotY 0 ne or RotZ 0 ne or { 
    73657372      {RotX RotY RotZ rotateOpoint3d} solidtransform 
     
    73737380      dup rmfaces i get solidrmface 
    73747381   } for 
    7375    solidhollow { 
    7376       dup videsolid 
    7377    } if 
    73787382   activationgestioncouleurs { 
    73797383      dup solidwithinfaces { 
     
    74017405      } if 
    74027406   } ifelse 
     7407   solidchanfrein length 0 ne { 
     7408      solidchanfrein 0 get isstring { 
     7409         dup chanfreincoeff 
     7410         /solidfcolor where { 
     7411            pop 
     7412            solidfcolor 
     7413         } if 
     7414         chanfreinrm solidchampfreine 
     7415      } { 
     7416         dup chanfreincoeff solidchanfrein 
     7417         /solidfcolor where { 
     7418            pop 
     7419            solidfcolor 
     7420         } if 
     7421         chanfreinrm solidchampfreine 
     7422      } ifelse 
     7423   } if 
     7424   solidhollow { 
     7425      dup videsolid 
     7426   } if 
    74037427   dup action 
    74047428   noir 
  • trunk/tests/test_01.tex

    r6 r23  
    1515\maketitle 
    1616 
     17\section {Test tronquesolid avec PSTricks} 
     18 
     19On tronque quelques sommets 
    1720%\psset{lightsrc=10 20 30,SphericalCoor=true,viewpoint=50 20 30} 
    1821\psset{SphericalCoor=true,viewpoint=50 20 30} 
    1922 
    20 \section {Test tronquesolid} 
     23\begin{center} 
     24\psset{unit=0.75} 
     25\psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 
     26\begin{pspicture*}(-5,-4)(6,9) 
     27\psframe(-5,-4)(6,9) 
     28\psSolid[object=cube, 
     29   trunc=0 1 3] 
     30\end{pspicture*} 
     31\end{center} 
     32 
     33\newpage 
     34On tronque tous les sommets 
     35\begin{center} 
     36\psset{unit=0.75} 
     37\psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 
     38\begin{pspicture*}(-5,-4)(6,9) 
     39\psframe(-5,-4)(6,9) 
     40\psSolid[object=cube, 
     41   trunc=all, 
     42   trunccoeff=.1] 
     43\end{pspicture*} 
     44\end{center} 
     45 
     46 
     47\section {Test tronquesolid avec jps} 
    21481 seul sommet 
    2249 
  • trunk/tests/test_02.tex

    r6 r23  
    1818\psset{SphericalCoor=true,viewpoint=50 20 30} 
    1919 
    20 \section {Test champfrein} 
     20\section {Test chanfrein avec PSTricks} 
     21 
     221 seule face, en gardant la face centrale 
     23\begin{center} 
     24\psset{unit=0.75} 
     25\psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 
     26\begin{pspicture*}(-5,-4)(6,5) 
     27\psframe(-5,-4)(6,5) 
     28\psSolid[object=cube, 
     29   fillcolor=red, 
     30   chanfreinrm, 
     31   fcolor=Yellow, 
     32   chanfrein=0] 
     33\end{pspicture*} 
     34\end{center} 
     35 
     361 seule face 
     37\begin{center} 
     38\psset{unit=0.75} 
     39\psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 
     40\begin{pspicture*}(-5,-4)(6,5) 
     41\psframe(-5,-4)(6,5) 
     42\psSolid[object=cube, 
     43   fillcolor=cyan, 
     44   chanfrein=0] 
     45\end{pspicture*} 
     46\end{center} 
     47 
     48toutes les faces 
     49\begin{center} 
     50\psset{unit=0.75} 
     51\psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=50} 
     52\begin{pspicture*}(-5,-4)(6,5) 
     53\psframe(-5,-4)(6,5) 
     54\psSolid[object=cube, 
     55   fillcolor=cyan, 
     56   chanfreincoeff=.5, 
     57   chanfreinrm, 
     58   fcolor=.5 setfillopacity Yellow, 
     59   hollow, 
     60   chanfrein=all] 
     61\end{pspicture*} 
     62\end{center} 
     63 
     64 
     65\section {Test chanfrein avec jps} 
    21661 seule face 
    2267