\section{Parameterised surfaces}

\subsection{The method}

The parameterised \Index{surfaces} are setup as $[x(u,v),y(u,v),z(u,v)]$ and administered thanks to the macro \Lcs{psSolid} by the option
\texttt{\Lkeyword{object}=\Lkeyval{surfaceparametree}} and defined either in \textit{Reverse Polish Notation}(\textit{RPN}):


\begin{verbatim}
\defFunction{shell}(u,v){1.2 v exp u Sin dup mul v Cos mul mul}% x(u,v)
                        {1.2 v exp u Sin dup mul v Sin mul mul}% y(u,v)
                        {1.2 v exp u Sin u Cos mul mul}        % z(u,v)
\end{verbatim}

or in \textit{algebraic notation}:

\begin{verbatim}
\defFunction[algebraic]{shell}(u,v){1.2^v*(sin(u)^2*cos(v))}% x(u,v)
                                   {1.2^v*(sin(u)^2*sin(v))}% y(u,v)
                                   {1.2^v*(sin(u)*cos(u))}  % z(u,v)
\end{verbatim}

The range for the values of $u$ and $v$ are defined within the option
\texttt{\Lkeyword{range}=$\mathtt{u_{min}}$ $\mathtt{u_{max}}$ $\mathtt{v_{min}}$ %$
$\mathtt{v_{max}}$}.

The drawing of the function is activated with
\texttt{\Lkeyword{function}=name}, this name is implied when the parametric equations are written:
\verb+\defFunction{name}...+

Any other choice of $u$ and $v$ are accepted. Let's remind that the argument of
\texttt{Sin} and \texttt{Cos} must be in radians those of \texttt{sin} and
\texttt{cos} in degrees if \textit{RPN} is  used. Within the algebraic notation, the argument is in radians.


\subsection{Example 1: a \Index{sea shell}}
\newcommand\quadrillage{%
\psset{linecolor={[cmyk]{1,0,1,0.5}}}\green
\multido{\ix=-4+1}{9}{%
    \psPoint(\ix\space,4,-3){X1}
    \psPoint(\ix\space,4 .2 add,-3){X2}
    \psline(X1)(X2)
    \uput[-120](X1){\small\ix}}
\multido{\iy=-4+1}{9}{%
    \psPoint(-4,\iy\space,-3){Y1}
    \psPoint(-4 .2 sub,\iy\space,-3){Y2}
    \psline(Y1)(Y2)
    \uput[0](Y1){\small\iy}}
\multido{\iz=-3+1}{7}{%
    \psPoint(4,4,\iz\space){Z1}
    \psPoint(4,4 .2 add,\iz\space){Z2}
    \psline(Z1)(Z2)
    \uput[l](Z1){\small\iz}}
\psPoint(0,4 0.5 add,-3){X0}
\uput[-120](X0){$x$}
    \psPoint(-4 .5 sub,0,-3){Y0}
\uput[0](Y0){$y$}}
\begin{LTXexample}[width=7.8cm]
\psset{unit=0.75}
\begin{pspicture}(-5.5,-6)(4.5,4)
\psframe*(-5.5,-6)(4.5,4)
\psset[pst-solides3d]{viewpoint=20 120 30 rtp2xyz,
  Decran=15,lightsrc=-10 15 10}
% Parametric Surfaces
\psSolid[object=grille,base=-4 4 -4 4,
  action=draw*,linecolor={[cmyk]{1,0,1,0.5}}]
  (0,0,-3)
\defFunction{shell}(u,v)
  {1.2 v exp u Sin dup mul v Cos mul mul}
  {1.2 v exp u Sin dup mul v Sin mul mul}
  {1.2 v exp u Sin u Cos mul mul}
\psSolid[object=surfaceparametree,
  linecolor={[cmyk]{1,0,1,0.5}},
  base=0 pi pi 4 div neg 5 pi mul 2 div,
  fillcolor=yellow!50,incolor=green!50,
  function=shell,linewidth=0.5\pslinewidth,ngrid=25]%
\psSolid[object=parallelepiped,a=8,b=8,c=6,
  action=draw,linecolor={[cmyk]{1,0,1,0.5}}]%
\quadrillage
\end{pspicture}
\end{LTXexample}

\begin{LTXexample}[width=7.8cm]
\psset{unit=0.75}
\begin{pspicture}(-5,-4)(5,6)
\psframe*(-5,-4)(5,6)
\psset[pst-solides3d]{viewpoint=20 20 -10 rtp2xyz,
  Decran=15,lightsrc=5 10 2}
% Parametric Surfaces
\psSolid[object=grille,base=-4 4 -4 4,
  action=draw*,linecolor=red](0,0,-3)
\defFunction[algebraic]{shell}(u,v)
  {1.21^v*(sin(u)*cos(u))}
  {1.21^v*(sin(u)^2*sin(v))}
  {1.21^v*(sin(u)^2*cos(v))}
%% \defFunction{shell}(u,v)
%%    {1.2 v exp u Sin u Cos mul mul}
%%    {1.2 v exp u Sin dup mul v Sin mul mul}
%%    {1.2 v exp u Sin dup mul v Cos mul mul}
\psSolid[object=surfaceparametree,
   linecolor={[cmyk]{1,0,1,0.5}},
   base=0 pi pi 4 div neg 5 pi mul 2 div,
   fillcolor=green!50,incolor=yellow!50,
   function=shell,linewidth=0.5\pslinewidth,
   ngrid=25]%
\white%
\gridIIID[Zmin=-3,Zmax=4,linecolor=white,
  QZ=0.5](-4,4)(-4,4)
\end{pspicture}
\end{LTXexample}



\subsection{Example 2: a \Index{helix}}
\begin{LTXexample}[width=5.5cm]
\psset{unit=0.75}
\begin{pspicture}(-3,-4)(3,6)
\psset[pst-solides3d]{viewpoint=20 10 2,Decran=20,
  lightsrc=20 10 10}
% Parametric Surfaces
\defFunction{helix}(u,v)
  {1 .4 v Cos mul sub u Cos mul 2 mul}
  {1 .4 v Cos mul sub u Sin mul 2 mul}
  {.4 v Sin mul u .3 mul add}
\psSolid[object=surfaceparametree,linewidth=0.5\pslinewidth,
  base=-10 10 0 6.28,fillcolor=yellow!50,incolor=green!50,
  function=helix,
  ngrid=60 0.4]%
\gridIIID[Zmin=-3,Zmax=3](-2,2)(-2,2)
\end{pspicture}
\end{LTXexample}


\subsection{Example 3: a \Index{cone}}
\begin{LTXexample}[width=10cm]
\psset{unit=0.5}
\begin{pspicture}(-9,-7)(10,12)
\psframe*(-9,-7)(10,12)
\psset[pst-solides3d]{
  viewpoint=20 5 10,
  Decran=50,lightsrc=20 10 5}
\psSolid[
  object=grille,base=-2 2 -2 2,
  linecolor=white](0,0,-2)
% Parametric Surfaces
\defFunction{cone}(u,v)
  {u v Cos mul}{u v Sin mul}{u}
\psSolid[object=surfaceparametree,
   base=-2 2 0 2 pi mul,
   fillcolor=yellow!50,
   incolor=green!50,function=cone,
   linewidth=0.5\pslinewidth,
   ngrid=25 40]%
\psset{linecolor=white}\white
\gridIIID[Zmin=-2,Zmax=2]
  (-2,2)(-2,2)
\end{pspicture}
\end{LTXexample}


\subsection{An advised website}
You will find on the website:

\url{http://k3dsurf.sourceforge.net/}

an excellent software to represent surfaces with numerous examples of parameterised surfaces and others.

\endinput

