Changeset 99

Show
Ignore:
Timestamp:
07/15/08 22:01:26 (5 months ago)
Author:
herbert
Message:

modified gridIIID (.tex), added pst-Surface (.pro)

Files:

Legend:

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

    r95 r99  
    2121\ifx\MultidoLoaded\endinput\else\input multido.tex \fi  
    2222% JPV & ML & AS & HV 
    23 \def\fileversion{4.03
    24 \def\filedate{2008/07/14
     23\def\fileversion{4.04
     24\def\filedate{2008/07/15
    2525\message{`PSTSOLIDESIIID' v\fileversion, \filedate} 
    2626% 
     
    109109% donnee par filcollor 
    110110% teinte des faces interieures de l'objet a partir de PSTricks 
    111 \define@key[psset]{pst-solides3d}{incolor}{% 
    112 \pst@getcolor{#1}\psincolor} 
     111\define@key[psset]{pst-solides3d}{incolor}{\pst@getcolor{#1}\psincolor} 
    113112\psset[pst-solides3d]{incolor=green} 
    114113% 
    115114%% couleurs definies par l'utilisateur 
    116 \define@key[psset]{pst-solides3d}{color1}{% 
    117 \pst@getcolor{#1}\pscolora} 
     115\define@key[psset]{pst-solides3d}{color1}{\pst@getcolor{#1}\pscolora} 
    118116\psset[pst-solides3d]{color1=cyan} 
    119117% 
    120 \define@key[psset]{pst-solides3d}{color2}{% 
    121 \pst@getcolor{#1}\pscolorb} 
     118\define@key[psset]{pst-solides3d}{color2}{\pst@getcolor{#1}\pscolorb} 
    122119\psset[pst-solides3d]{color2=magenta} 
    123120% 
    124 \define@key[psset]{pst-solides3d}{color3}{% 
    125 \pst@getcolor{#1}\pscolorc} 
     121\define@key[psset]{pst-solides3d}{color3}{\pst@getcolor{#1}\pscolorc} 
    126122\psset[pst-solides3d]{color3=blue} 
    127123% 
    128 \define@key[psset]{pst-solides3d}{color4}{% 
    129 \pst@getcolor{#1}\pscolord} 
     124\define@key[psset]{pst-solides3d}{color4}{\pst@getcolor{#1}\pscolord} 
    130125\psset[pst-solides3d]{color4=red} 
    131126% 
     
    150145\define@boolkey[psset]{pst-solides3d}[Pst@]{affinagerm}[false]{} 
    151146\psset{affinagerm=true} 
    152 % 
    153147\define@boolkey[psset]{pst-solides3d}[Pst@]{chanfrein}[true]{} 
    154148\psset{chanfrein=false} 
    155 % 
    156149\define@boolkey[psset]{pst-solides3d}[Pst@]{grid}[false]{} 
    157150\psset{grid=true} 
    158 % 
    159151\define@boolkey[psset]{pst-solides3d}[Pst@]{dualreg}[true]{} 
    160152\psset{dualreg=false} 
    161 % 
    162153\define@boolkey[psset]{pst-solides3d}[Pst@]{geode}[true]{} 
    163154\psset{geode=false} 
    164 % 
    165155\define@boolkey[psset]{pst-solides3d}[Pst@]{hollow}[true]{} 
    166156\psset{hollow=false} 
    167 % 
    168157\define@boolkey[psset]{pst-solides3d}[Pst@]{biface}[true]{} 
    169158\psset{biface=true}% 
    170 % 
    171159\define@boolkey[psset]{pst-solides3d}[Pst@]{axesboxed}[true]{} 
    172160\psset{axesboxed=false}% 
     
    295283cylindre,cylindrecreux,cone,conecreux,tronccone,troncconecreux,% 
    296284grille,prisme,anneau,parallelepiped,prismecreux,ruban,calottesphere,face,% 
    297 surface,calottespherecreuse,polygoneregulier,fusion,new,chemin,courbeR2,courbe,% 
     285Surface,surface,calottespherecreuse,polygoneregulier,fusion,new,chemin,courbeR2,courbe,% 
    298286surfaceparametree,texte,trigospherique,vecteur,line,objfile,datfile,surface*,% 
    299287plan,offfile,geode,load,plantype,point,pie,droite,polygone,cercle,rightangle} 
     
    327315\define@key[psset]{pst-solides3d}{spotZ}{\def\pst@solides@@spotZ{#1}}% 
    328316\define@key[psset]{pst-solides3d}{QZ}{\def\pst@solides@@QZ{#1}}% 
    329 \define@key[psset]{pst-solides3d}{Zmin}{\def\pst@solides@@Zmin{#1}}% 
    330 \define@key[psset]{pst-solides3d}{Zmax}{\def\pst@solides@@Zmax{#1}}% 
     317\define@key[psset]{pst-solides3d}{Zmin}{\def\pst@solides@@Zmin{#1 }}% 
     318\define@key[psset]{pst-solides3d}{Zmax}{\def\pst@solides@@Zmax{#1 }}% 
    331319\psset[pst-solides3d]{spotX=dr,spotY=dl,spotZ=l,QZ=0,Zmin=-4,Zmax=4} 
    332320% spotX, Y, Z vaut de 0 a 360 degres pour placer les valeurs correctement 
    333321% QZ translation du quadrillage suivant l'axe Oz 
    334322 
     323\define@key[psset]{pst-solides3d}{stepX}{\pst@getint{#1}\psk@solides@stepX} 
     324\define@key[psset]{pst-solides3d}{stepY}{\pst@getint{#1}\psk@solides@stepY} 
     325\define@key[psset]{pst-solides3d}{stepZ}{\pst@getint{#1}\psk@solides@stepZ} 
     326\define@key[psset]{pst-solides3d}{ticklength}{\pst@checknum{#1}\psk@solides@ticklength} 
     327\psset[pst-solides3d]{stepX=1,stepY=1,stepZ=1,ticklength=0.2}% the step for the axes labels 
    335328 
    336329\def\gridIIID{\pst@object{gridIIID}} 
     
    343336    intersectiontype=-1, 
    344337    a={#2 #1 sub},b={#4 #3 sub}, 
    345     c={\pst@solides@@Zmax\space \pst@solides@@Zmin\space sub}, 
    346     action=draw](0,0,\pst@solides@@Zmax\space \pst@solides@@Zmin\space add 2 div ) 
    347 %    (0,0,\pst@solides@@QZ) 
    348   \pst@cnta=#2 % 
    349   \advance\pst@cnta by -#1 \advance\pst@cnta by \@ne 
    350   \multido{\ix=#1+1}{\pst@cnta}{% 
    351     \psPoint(\ix\space,#4,\pst@solides@@Zmin){X1} 
    352     \psPoint(\ix\space,#4 .2 add,\pst@solides@@Zmin){X2} 
     338    c={\pst@solides@@Zmax \pst@solides@@Zmin sub}, 
     339    action=draw](0,0,\pst@solides@@Zmax \pst@solides@@Zmin add 2 div )% 
     340  \ifnum#1<0 \pst@cnta=-#1 \def\pst@minus{-}\else\pst@cnta=#1 \def\pst@minus{}\fi 
     341  \divide\pst@cnta by \psk@solides@stepX 
     342  \multido{\ix=\psk@solides@stepX+\psk@solides@stepX}{\pst@cnta}{% 
     343    \psPoint(\pst@minus\ix,#4,\pst@solides@@Zmin){X1}% 
     344    \psPoint(\pst@minus\ix,#4 \psk@solides@ticklength\space add,\pst@solides@@Zmin){X2}% 
     345    \psline(X1)(X2)% 
     346    \uput[\pst@solides@@spotX](X1){\small\pst@minus\ix}}% 
     347  \ifnum#2<0 \pst@cnta=-#2 \def\pst@minus{-}\else\pst@cnta=#2 \def\pst@minus{}\fi 
     348  \divide\pst@cnta by \psk@solides@stepX% 
     349  \advance\pst@cnta by \@ne 
     350  \multido{\ix=0+\psk@solides@stepX}{\the\pst@cnta}{% 
     351    \psPoint(\pst@minus\ix,#4,\pst@solides@@Zmin){X1} 
     352    \psPoint(\pst@minus\ix,#4 \psk@solides@ticklength\space add,\pst@solides@@Zmin){X2} 
    353353    \psline(X1)(X2) 
    354     \uput[\pst@solides@@spotX](X1){\small\ix}} 
    355   \pst@cnta=#4 % 
    356   \advance\pst@cnta by -#3 \advance\pst@cnta by \@ne% 
    357   \multido{\iy=#3+1}{\pst@cnta}{% 
    358     \psPoint(#2,\iy\space,\pst@solides@@Zmin){Y1} 
    359     \psPoint(#2 .2 add,\iy\space,\pst@solides@@Zmin){Y2} 
     354    \uput[\pst@solides@@spotX](X1){\small\pst@minus\ix}} 
     355
     356  \ifnum#3<0 \pst@cnta=-#3 \def\pst@minus{-}\else\pst@cnta=#3 \def\pst@minus{}\fi 
     357  \divide\pst@cnta by \psk@solides@stepY 
     358  \multido{\iy=\psk@solides@stepY+\psk@solides@stepY}{\pst@cnta}{% 
     359    \psPoint(#2,\pst@minus\iy,\pst@solides@@Zmin){Y1} 
     360    \psPoint(#2 \psk@solides@ticklength\space add,\pst@minus\iy,\pst@solides@@Zmin){Y2} 
    360361    \psline(Y1)(Y2) 
    361     \uput[\pst@solides@@spotY](Y1){\small\iy}} 
    362   \pst@cnta=\pst@solides@@Zmax % 
    363   \pst@cntb=\pst@solides@@Zmin % 
     362    \uput[\pst@solides@@spotY](Y1){\small\pst@minus\iy}} 
     363  \ifnum#4<0 \pst@cnta=-#4 \def\pst@minus{-}\else\pst@cnta=#4 \def\pst@minus{}\fi 
     364  \divide\pst@cnta by \psk@solides@stepY 
     365  \advance\pst@cnta by \@ne 
     366  \multido{\iy=0+\psk@solides@stepY}{\pst@cnta}{% 
     367    \psPoint(#2,\pst@minus\iy,\pst@solides@@Zmin){Y1} 
     368    \psPoint(#2 \psk@solides@ticklength\space add,\pst@minus\iy,\pst@solides@@Zmin){Y2} 
     369    \psline(Y1)(Y2) 
     370    \uput[\pst@solides@@spotY](Y1){\small\pst@minus\iy}} 
     371
     372  \pst@cnta=\pst@solides@@Zmin \pst@cntb=\pst@solides@@Zmax  
    364373  \ifnum\pst@cnta=\pst@cntb\else% same z values? 
    365     \advance\pst@cnta by -\pst@solides@@Zmin \advance\pst@cnta by \@ne 
    366     \multido{\iz=\pst@solides@@Zmin+1}{\pst@cnta}{% 
    367       \psPoint(#2,#3,\iz\space){Z1} 
    368       \psPoint(#2,#3 .2 sub,\iz\space){Z2} 
     374    \pst@cnta=\pst@solides@@Zmin 
     375    \ifnum\pst@cnta<0 \pst@cnta=-\pst@cnta \def\pst@minus{-} 
     376    \else\def\pst@minus{}\fi% 
     377    \divide\pst@cnta by \psk@solides@stepZ 
     378    \multido{\iz=\psk@solides@stepZ+\psk@solides@stepZ}{\pst@cnta}{% 
     379      \psPoint(#2,#3,\pst@minus\iz){Z1} 
     380      \psPoint(#2,#3 \psk@solides@ticklength\space sub,\pst@minus\iz){Z2} 
    369381      \psline(Z1)(Z2) 
    370       \uput[\pst@solides@@spotZ](Z1){\small\iz}} 
    371   \fi% 
     382      \uput[\pst@solides@@spotZ](Z1){\small\pst@minus\iz}} 
     383    \pst@cnta=\pst@solides@@Zmax % 
     384    \ifnum\pst@cnta<0 \pst@cnta=-\pst@pst@cnta \def\pst@minus{-} 
     385    \else\def\pst@minus{}\fi% 
     386    \divide\pst@cnta by \psk@solides@stepZ 
     387    \advance\pst@cnta by \@ne 
     388    \multido{\iz=0+\psk@solides@stepZ}{\pst@cnta}{% 
     389      \psPoint(#2,#3,\pst@minus\iz){Z1} 
     390      \psPoint(#2,#3 \psk@solides@ticklength\space sub,\pst@minus\iz){Z2} 
     391      \psline(Z1)(Z2) 
     392      \uput[\pst@solides@@spotZ](Z1){\small\pst@minus\iz}} 
     393  \fi 
     394
    372395  \psPoint(0,0,\pst@solides@@Zmax\space 3 add){Z'} 
    373396  \psPoint(#2 2 add,0,0){X'} 
     
    412435/fontsize {\pst@solides@fontsize\space \pst@number\psunit mul 28.45 div } bind def 
    413436% 
    414 \ifPst@visibility 
    415    /projectionsifacevisible true def 
    416 \else 
    417    /projectionsifacevisible false def 
    418 \fi 
     437/projectionsifacevisible \ifPst@visibility true \else false \fi def 
    419438% 
    420439/R \pst@solides@R\space def % pour le tore 
     
    441460/axe  { \pst@solides@axe } def 
    442461/plansection  [ \pst@solides@plansection ] def 
    443 \ifx\pst@solides@function\@empty 
    444     \else 
    445 /function  (\pst@solides@function) def 
     462\ifx\pst@solides@function\@empty\else 
     463  /function  (\pst@solides@function) def 
    446464\fi 
    447465% 
     
    468486/proj-fontsize {\pst@solides@fontsize\space \pst@number\psunit mul 28.45 div } bind def 
    469487% 
    470 \ifx\pst@solides@CoordinatesLight\@empty 
    471     \else 
    472 /lightsrc {\pst@solides@CoordinatesLight} def 
     488\ifx\pst@solides@CoordinatesLight\@empty\else 
     489  /lightsrc {\pst@solides@CoordinatesLight} def 
    473490\fi 
    474491% 
    475492/rmfaces [\pst@solides@CoordinatesRm] def 
    476493% 
    477 \ifx\pst@solides@plansepare\@empty 
    478     \else 
    479 /plansepare {\pst@solides@plansepare} def 
    480 \fi 
    481 
    482 \ifx\pst@solides@transform\@empty 
    483     \else 
    484 /pst-transformoption { \pst@solides@transform} def 
    485 \fi 
    486 
    487 \ifx\pst@solides@name\@empty 
    488     \else 
    489 /solidname (\pst@solides@name) def 
    490 \fi 
    491 \ifx\pst@solides@file\@empty 
    492     \else 
    493 /solidfilename (\pst@solides@file) def 
    494 \fi 
    495 
    496 \ifx\pst@solides@planname\@empty 
    497     \else 
    498 /solidplanname (\pst@solides@planname) def 
    499 \fi 
    500 
    501 \ifx\pst@solides@load\@empty 
    502     \else 
    503 /solidloadname {\pst@solides@load} def 
    504 \fi 
    505 
    506 \ifx\pst@solides@fcolor\@empty 
    507     \else 
    508 /solidfcolor (\pst@solides@fcolor) def 
     494\ifx\pst@solides@plansepare\@empty\else 
     495  /plansepare {\pst@solides@plansepare} def 
     496\fi 
     497
     498\ifx\pst@solides@transform\@empty\else 
     499  /pst-transformoption { \pst@solides@transform} def 
     500\fi 
     501
     502\ifx\pst@solides@name\@empty\else 
     503  /solidname (\pst@solides@name) def 
     504\fi 
     505\ifx\pst@solides@file\@empty\else 
     506  /solidfilename (\pst@solides@file) def 
     507\fi 
     508
     509\ifx\pst@solides@planname\@empty\else 
     510  /solidplanname (\pst@solides@planname) def 
     511\fi 
     512
     513\ifx\pst@solides@load\@empty\else 
     514  /solidloadname {\pst@solides@load} def 
     515\fi 
     516
     517\ifx\pst@solides@fcolor\@empty\else 
     518  /solidfcolor (\pst@solides@fcolor) def 
    509519\fi 
    510520% 
     
    515525/origin {\pst@solides@origin} def 
    516526% 
    517 %% \ifPst@hue 
    518 %%    /solidhue true def 
    519 %% \else 
    520 %%    /solidhue false def 
    521 %% \fi 
     527%%  
     528%% /solidhue \ifPst@hue true \else false \fi def 
    522529% 
    523530/sommets [\pst@solides@sommets] def 
     
    530537/ngrid [\pst@solides@ngrid] def 
    531538% 
    532 \ifPst@affinagerm 
    533    /affinagerm true def 
    534 \else 
    535    /affinagerm false def 
    536 \fi 
    537 
    538 \ifPst@chanfrein 
    539    /chanfrein true def 
    540 \else 
    541    /chanfrein false def 
    542 \fi 
    543 
    544 \ifPst@grid 
    545    /solidgrid true def 
    546 \else 
    547    /solidgrid false def 
    548 \fi 
    549 
    550 \ifPst@planmarks 
    551    /solidplanmarks true def 
    552 \else 
    553    /solidplanmarks false def 
    554 \fi 
    555 
    556 \ifPst@plangrid 
    557    /solidplangrid true def 
    558 \else 
    559    /solidplangrid false def 
    560 \fi 
    561 
    562 \ifPst@showBase 
    563    /solidshowbase3d true def 
    564 \else 
    565    /solidshowbase3d false def 
    566 \fi 
    567 
    568 \ifPst@deactivatecolor 
    569    /activationgestioncouleurs false def 
    570 \else 
    571    /activationgestioncouleurs true def 
    572 \fi 
    573 
    574 \ifPst@showbase 
    575    /solidshowbase true def 
    576 \else 
    577    /solidshowbase false def 
    578 \fi 
    579 
    580 \ifPst@dualreg 
    581    /soliddualreg true def 
    582 \else 
    583    /soliddualreg false def 
    584 \fi 
    585 
    586 \ifPst@geode 
    587    /solidgeode true def 
    588 \else 
    589    /solidgeode false def 
    590 \fi 
    591 
    592 \ifPst@hollow 
    593    /solidhollow true def 
    594 \else 
    595    /solidhollow false def 
    596 \fi 
    597 \ifPst@biface 
    598    /solidbiface true def 
    599 \else 
    600    /solidbiface false def 
    601 \fi 
    602 %% \ifPst@num 
    603 %%    /solidnum true def 
    604 %% \else 
    605 %%    /solidnum false def 
    606 %% \fi 
     539/affinagerm \ifPst@affinagerm true \else false \fi def 
     540/chanfrein \ifPst@chanfrein true \else false \fi def 
     541/solidgrid \ifPst@grid true \else false \fi def 
     542/solidplanmarks \ifPst@planmarks true \else false \fi def 
     543/solidplangrid \ifPst@plangrid true \else false \fi def 
     544/solidshowbase3d \ifPst@showBase true \else false \fi def 
     545/activationgestioncouleurs \ifPst@deactivatecolor false \else true \fi def 
     546/solidshowbase \ifPst@showbase true \else false \fi def 
     547/soliddualreg \ifPst@dualreg true \else false \fi def 
     548/solidgeode \ifPst@geode true \else false \fi def 
     549/solidhollow \ifPst@hollow true \else false \fi def 
     550/solidbiface \ifPst@biface true \else false \fi def 
     551
     552%%  
     553%% /solidnum \ifPst@num true \else false \fi def 
    607554% 
    608555%\ifPst@SphericalCoor 
     
    617564%    XpointVue YpointVue ZpointVue /viewpoint defpoint3d 
    618565%\else 
    619     viewpointXYZ /ZpointVue ED /YpointVue ED /XpointVue ED 
    620     /THETA {YpointVue XpointVue atan} bind def 
    621     /PHI   {ZpointVue XpointVue dup mul YpointVue dup mul add sqrt atan} bind def 
    622     /Dobs  {XpointVue dup mul YpointVue dup mul add ZpointVue dup mul add sqrt} bind def 
     566viewpointXYZ /ZpointVue ED /YpointVue ED /XpointVue ED 
     567/THETA {YpointVue XpointVue atan} bind def 
     568/PHI   {ZpointVue XpointVue dup mul YpointVue dup mul add sqrt atan} bind def 
     569/Dobs  {XpointVue dup mul YpointVue dup mul add ZpointVue dup mul add sqrt} bind def 
    623570%    CoefficientsMT 
    624     XpointVue YpointVue ZpointVue /viewpoint defpoint3d 
     571XpointVue YpointVue ZpointVue /viewpoint defpoint3d 
    625572%\fi 
    626573> 
     
    793740\def\psSurface{\pst@object{psSurface}} 
    794741\def\psSurface@i(#1,#2)(#3,#4)#5{{% 
    795     \use@par 
    796742%% \def\hue{0 1 #3 #1 sub \pst@solides@dx\space div 
    797743%%              #4 #2 sub \pst@solides@dy\space div mul 
     
    799745%%                   #4 #2 sub \pst@solides@dy\space div 
    800746%%                    mul div sub 0.75 1] (sethsbcolor) astr2str} for} 
    801 \ifPst@solidmemory 
    802   \else 
    803 \begin@ClosedObj 
    804 \fi 
    805 %  \begin@ClosedObj 
     747\ifPst@solidmemory\use@par\else\begin@ClosedObj\fi 
    806748    \addto@pscode{% 
    807749    1 setlinejoin 
     
    821763 fonction 
    822764end } def 
    823  pst-surface 
     765 pst-Surface 
    824766 end 
    825767}% fin du code ps 
     
    831773\end@ClosedObj% 
    832774\fi 
    833 %    \end@ClosedObj% 
    834775}} 
    835776 
  • trunk/solides.pro

    r93 r99  
    11%! 
    22% PostScript prologue for pst-solides3d.tex. 
    3 % Version 4.05, 2008/07/13 
     3% Version 4.06, 2008/07/15 
    44% 
    55%% COPYRIGHT 2008 by Jean-Paul Vignault 
     
    1050610506} def 
    1050710507 
     10508/pst-Surface { 
     10509   base 
     10510   base aload pop 
     10511   ngrid length 2 ge { 
     10512      [ngrid 0 get ngrid 1 get] 
     10513   } { 
     10514      ngrid length 1 eq { 
     10515         [ngrid 0 get dup] 
     10516      } ifelse 
     10517   } ifelse 
     10518   {f} newsurface 
     10519   solidbiface { 
     10520      dup videsolid 
     10521   } if 
     10522   gere_pstricks_opt 
     10523} def 
     10524 
    1050810525/pst-surface { 
    1050910526   base 
     
    1051610533      } ifelse 
    1051710534   } ifelse 
    10518    {f} newsurface 
     10535   { function cvx exec } newsurface 
    1051910536   solidbiface { 
    1052010537      dup videsolid