Retour

par-surfaces.tex

Télécharger le fichier
\section{Présentation}
 
Cette commande prend la forme suivante :
\begin{verbatim}
\psSurface[options](xmin,ymin)(xmax,ymax){equation de la surface z=f(x,y)}
\end{verbatim}
avec comme options possibles les mêmes que dans le cas des solides
avec quelques options spécifiques :
\begin{itemize}
  \item Le maillage de la surface est défini par le paramètre
    \verb+[ngrid=n1 n2]+, qui possède quelques particularités :
 
\psframebox[fillstyle=solid,fillcolor=yellow,linestyle=none]{%
\begin{minipage}{1\linewidth}
  \begin{itemize}
    \item Si \texttt{n1} et/ou  \texttt{n2 } sont entiers, ce(s)
      nombre(s) représente(nt) le nombre de mailles suivant $Ox$ et/ou
      $Oy$.
    \item Si \texttt{n1} et/ou  \texttt{n2 } sont décimaux, ce(s)
      nombre(s) représente(nt) le pas d'incrémentation suivant $Ox$
      et/ou $Oy$.
    \item Si \texttt{[ngrid=n]} ne possède qu'un seul paramètre, alors
      le nombre de mailles ou, suivant le cas, le pas d'incrémentation
      sera identique sur les deux axes.
  \end{itemize}
\end{minipage}
  }
  \item \textbf{\textdbend{} \texttt{[algebraic]} : cette option
  permet d'écrire la fonction en notation algébrique, \texttt{pstricks.pro} contient maintenant le code \texttt{AlgToPs}
   de Dominique Rodriguez qui le permet et qui auparavant était inclus dans \texttt{pstricks-add.pro}. Cette version de \texttt{pstricks}
   est fournie avec \texttt{pst-solides3d}. Le cas échéant, il faudra inclure le package \texttt{pstricks-add} dans le préambule de votre document.}
  \item \texttt{[grid]} : par défaut le maillage est activé, si
  l'option \texttt{[grid]} est écrite, alors le maillage est désactivé~!
  \item \texttt{[axesboxed]} : cette option permet de tracer un
  quadrillage 3D de façon semi-automatique, car il convient de placer
  à la main les bornes de $z$, par défaut cette option est désactivée :
   \begin{itemize}
     \item \texttt{[Zmin]} ;
     \item \texttt{[Zmax]} ;
     \item \texttt{[QZ]} : permet de décaler verticalement le repère
  de la valeur \texttt{[QZ=valeur]} ;
     \item \texttt{[spotX]} : permet de placer, si le choix fait par
  défaut n'est pas satisfaisant, les valeurs des graduations sur l'axe
  des $x$ autour de l'extrémité de la graduation.
      Cette valeur est celle que l'on indique à la commande \verb+\uput[angle](x,y){donnée}+ ;
     \item \texttt{[spotY]} : idem ;
     \item \texttt{[spotZ]} : idem.
   \end{itemize}
\end{itemize}
Si l'option \Cadre{[axesboxed]} ne vous donne pas satisfaction il est
possible d'adapter la commande suivante, qui convient au premier
exemple :
\begin{gbar}
\small
\begin{verbatim}
\psSolid[object=parallelepiped,a=8,b=8,c=8,action=draw](0,0,0)
\multido{\ix=-4+1}{9}{%
    \psPoint(\ix\space,4,-4){X1}
    \psPoint(\ix\space,4.2,-4){X2}
    \psline(X1)(X2)\uput[dr](X1){\ix}}
\multido{\iy=-4+1}{9}{%
    \psPoint(4,\iy\space,-4){Y1}
    \psPoint(4.2,\iy\space,-4){Y2}
    \psline(Y1)(Y2)\uput[dl](Y1){\iy}}
\multido{\iz=-4+1}{9}{%
    \psPoint(4,-4,\iz\space){Z1}
    \psPoint(4,-4.2,\iz\space){Z2}
    \psline(Z1)(Z2)\uput[l](Z1){\iz}}
\end{verbatim}
\end{gbar}
%L'option \Cadre{[hue=0 1]} permet de remplir les facettes avec des dégradés
%de couleur.
\section{Exemple 1 : selle de cheval}
\begin{LTXexample}[pos=t,numbersep=1em]
\psset{unit=0.75}
\psset{viewpoint=50 40 30 rtp2xyz,Decran=50}
\psset{lightsrc=viewpoint}
\begin{pspicture}(-6,-7)(7,7)
\psSurface[ngrid=.25 .25,incolor=yellow,
   linewidth=0.5\pslinewidth,axesboxed,
   algebraic,hue=0 1](-4,-4)(4,4){%
   ((y^2)-(x^2))/4 }
\end{pspicture}
\end{LTXexample}
%\newpage
\section{Exemple 2 : selle de cheval sans maillage}
 
Les lignes du maillage sont supprimées en écrivant dans les options :
\verb+grid+.
\begin{LTXexample}[pos=t,numbersep=1em]
\psset{unit=0.75}
\psset{lightsrc=30 30 25}
\psset{viewpoint=50 40 30 rtp2xyz,Decran=50}
\begin{pspicture}(-6,-8)(7,8)
\psSurface[fillcolor=red!50,ngrid=.25 .25,
   incolor=yellow,linewidth=0.5\pslinewidth,
   grid,axesboxed](-4,-4)(4,4){%
   y dup mul x dup mul sub 4 div }
\end{pspicture}
\end{LTXexample}
 
%\newpage
 
\section{Exemple 3 : paraboloïde}
 
\begin{LTXexample}[pos=t,numbersep=1em]
\psset{unit=0.75}
\psset{lightsrc=30 -10 10,linewidth=0.5\pslinewidth}
\psset{viewpoint=50 40 30 rtp2xyz,Decran=50}
\begin{pspicture}(-6,-4)(7,12)
\psSolid[object=grille,base=-4 4 -4 4,action=draw]%
\psSurface[
   fillcolor=cyan!50,
   intersectionplan={[0 0 1 -5]}, 
   intersectioncolor=(bleu),
   intersectionlinewidth=3,
    intersectiontype=0,
     ngrid=.25 .25,incolor=yellow,
   axesboxed,Zmin=0,Zmax=8,QZ=4](-4,-4)(4,4){%
   y dup mul x dup mul add 4 div }
\end{pspicture}
\end{LTXexample}
 
%\newpage
 
\section{Exemple 4}
\begin{LTXexample}[pos=t,numbersep=1em]
\psset{unit=0.75}
\psset{lightsrc=30 -10 10}
\psset{viewpoint=50 20 30 rtp2xyz,Decran=70}
\begin{pspicture}(-7,-8)(7,8)
\psSurface[ngrid=.2 .2,algebraic,axesboxed,Zmin=-1,Zmax=1,
           linewidth=0.5\pslinewidth,spotX=r,spotY=d,spotZ=l,
           hue=0 1](-5,-5)(5,5){%
   sin((x^2+y^2)/3) }
\end{pspicture}
\end{LTXexample}
 
%\newpage
 
\section{Exemple 5}
Dans cet exemple, on montre comment colorier les facettes chacune avec
une teinte différente en utilisant directement le code
\texttt{postscript}.
\begin{LTXexample}[pos=t,numbersep=1em]
\psset{unit=0.5}
\psset{lightsrc=30 -10 10}
\psset{viewpoint=100 20 20 rtp2xyz,Decran=80}
\begin{pspicture}(-6,-12)(7,14)
\psSurface[ngrid=0.4 0.4,algebraic,axesboxed,Zmin=-2,Zmax=10,QZ=4,
           linewidth=0.25\pslinewidth,
           fcol=0 1 4225
           {/iF ED iF [iF 4225 div 0.75 1] (sethsbcolor) astr2str} for
          ](-13,-13)(13,13){%
   10*sin(sqrt((x^2+y^2)))/(sqrt(x^2+y^2)) }
\end{pspicture}
\end{LTXexample}
 
%\newpage
 
\section{Exemple 6 : paraboloïde hyperbolique d'équation $z = xy$}
 
Dans cet exemple, on combine le tracé de la surface et celui des
contours de l'intersection du paraboloïde avec les plans $z=4$  et
$z=-4$.
Pour cela on utilise \verb+\psSolid[object=courbe]+.
\begin{verbatim}
\defFunction{F}(t){t}{4 t div 4 min}{4}
\psSolid[object=courbe,range=1 4,
   linecolor=red,linewidth=2\pslinewidth,
   function=F]
\end{verbatim}
On notera l'utilisation de deux fonctions \texttt{min} et
\texttt{max}, qui permettent à partir d'un couple de valeurs,
d'extraire la plus petite ou la plus grande.
\begin{center}
\psset{unit=0.75}
\psset{viewpoint=50 20 30 rtp2xyz,Decran=50}
\psset{lightsrc=viewpoint,linewidth=0.5\pslinewidth}
\begin{pspicture}(-6,-7)(7,7)
\psSolid[object=datfile,file=paraboloid,hue=0 1 0.5 1,incolor=yellow]
\gridIIID[Zmin=-4,Zmax=4,spotX=r](-4,4)(-4,4)
\defFunction{F}(t){t}{4 t div 4 min}{4}
\psSolid[object=courbe,range=1 4,r=0,
   linecolor=red,linewidth=2\pslinewidth,
   function=F]
\defFunction{G}(t){t}{4 t div -4 max}{4}
\psSolid[object=courbe,range=-1 -4,r=0,
   linecolor=red,linewidth=2\pslinewidth,
   function=G]
\defFunction{H}(t){t neg}{4 t div -4 max}{-4}
\psSolid[object=courbe,range=-1 -4,r=0,
   linecolor=red,linewidth=2\pslinewidth,
   function=H]
\end{pspicture}
\end{center}
\begin{gbar}
 \begin{verbatim}
\psSurface[hue=0 1,ngrid=.2 .5,incolor=yellow,axesboxed,
           Zmin=-4,Zmax=4,spotX=r](-4,-4)(4,4){x y mul 4 min -4 max}
\end{verbatim}
\end{gbar}
%\newpage
 
\section{Exemple 8 : surface d'équation $z = xy(x^2+y^2)$}
 
\begin{LTXexample}[pos=t,numbersep=1em]
\psset{unit=0.5}
\psset{lightsrc=10 12 20,linewidth=0.5\pslinewidth}
\psset{viewpoint=30 50 60 rtp2xyz,Decran=50}
\begin{pspicture}(-10,-10)(10,10)
\psSurface[
   fillcolor=cyan!50,algebraic,axesboxed,
   ngrid=.25 .25,incolor=yellow,hue=0 1,
   Zmin=-3,Zmax=3](-3,-3)(3,3){%
   x*y*(x^2-y^2)*0.1}
\end{pspicture}
\end{LTXexample}