\section{Solid rings}

This paragraph discusses the cylindric \Index{rings}. Within the macro
\Lcs{psSolid}, this object is passed with the option:
\texttt{\Lkeyword{object}=\Lkeyval{anneau}}, that comes with 3 parameters:
\begin{compactitem}
 \item the inner radius \texttt{\Lkeyword{r}=1.5} (value by default);
 \item the outer radius \texttt{\Lkeyword{R}=4} (value by default);
 \item the height \texttt{\Lkeyword{h}=6} (value by default).
\end{compactitem}

The argument \Lkeyword{ngrid} defines the number of sections used to make a complete
rotation of $360$~degrees. Its default value is $24$.

The section of the ring, whose shape is \textit{rectangular} was chosen as default,
and can be redesigned by the user.
We will discuss different examples of sections for rings.

\subsection{Predefined command: the ring with a rectangular section}

This section is defined in the plane $Oyz$, it is parameterized with the
triple $(r, R, h)$. The values of the outer radius $R$, inner radius $r$ and the
height $h$ are passed in the macro \Lcs{psSolid}. By default, one has a ring with
a variable rectangular section, and the definition takes place at the time
of the transmission of the values $(r, R, h)$ into the options of \Lcs{psSolid}.

If the user redefines the \TeX {} macro \verb+\Section+ with some numeric values
instead of the  parameters $r$, $R$ and $h$, then
the ring won't be variable anymore  and it is not necessary to transmit the
values  $r$, $R$, and $h$ into the options of \Lcs{psSolid}.

\begin{minipage}{0.45\linewidth}
\begin{verbatim}
\newcommand\Section{%
% y z
 R h 2 div neg % sommet 1
 % S1 (R,-h/2)
 R h 2 div     % sommet 2
 % S2 (r,h/2)
 r h 2 div     % sommet 3
 % S3 (r,h/2)
 r h 2 div neg % sommet 4
 % S4 (r,-h/2)
           }
\end{verbatim}
\end{minipage}
\hfill
\begin{minipage}{0.45\linewidth}
\psset{unit=0.5}
\begin{pspicture}(-5,-3)(5,3)
\pstVerb{/R 4 def /r 2 def /h 2 def}%
\newcommand\RectangularSection{%
  \pspolygon[fillstyle=vlines,linewidth=2\pslinewidth]%
  (!R h 2 div neg)(!R h 2 div)(!r h 2 div)(!r h 2 div neg)}
\rput(0,0){\RectangularSection}\rput(-6,0){\RectangularSection}
\psline(-2,1)(2,1)\psline(-2,-1)(2,-1)
\psline[linestyle=dashed,dash=1 0.2 0.05 0.2]{->}(0,-3)(0,3)
\psline[linestyle=dashed]{->}(-4,0)(4.2,0)
\uput[u](0,3){$z$}\uput[r](4.1,0){$y$}\uput[dl](0,0){$O$}
\psline{->}(0,1.5)(2,1.5)\uput[u](1,1.5){$r$}
\psline{->}(0,2.5)(4,2.5)\uput[u](2,2.5){$R$}
\psline{<->}(5,-1)(5,1)\uput[r](5,0){$h$}
\uput[dr](!R h 2 div neg){1}
\uput[ur](!R h 2 div ){2}
\uput[ul](!r h 2 div ){3}
\uput[dl](!r h 2 div neg){4}
\end{pspicture}
\end{minipage}
\newpage
\begin{LTXexample}[width=6cm]
\psset{unit=0.5}
\begin{pspicture}(-5,-4)(5,4)
\psset[pst-solides3d]{viewpoint=50 20 40 rtp2xyz,
 Decran=25,lightsrc=10 20 20}
\psSolid[object=anneau,fillcolor=cyan,
 h=3,R=8,r=6,ngrid=4,RotX=10](0,0,0)
\end{pspicture}\\
\begin{pspicture}(-5,-4)(5,4)
\psset[pst-solides3d]{viewpoint=50 -20 -40 rtp2xyz,
 Decran=25,lightsrc=-10 -20 -20}
\psSolid[object=anneau,
fillcolor=yellow,h=3,R=8,r=6,
RotX=90,RotZ=10](0,0,0)
\end{pspicture}
\end{LTXexample}



\subsection{Example 1: a simple ring with a triangular section}

Below is a very simple ring with a fixed triangular section.
The section is defined by $3$~points $(6, -2)$, $(10, 0)$
and $(6, 2)$ within the option \Lkeyword{section} of \Lcs{psSolid}.

\begin{LTXexample}[width=6cm]
\psset{unit=0.5}
\begin{pspicture}(-5,-6)(5,6)
\psset[pst-solides3d]{viewpoint=50 20 40 rtp2xyz,Decran=25,
  lightsrc=10 20 20}
\psSolid[object=anneau,
  section=6 -2 10 0 6 2,
  fillcolor=cyan,RotX=10]%
\end{pspicture}
\end{LTXexample}

%\newpage

\subsection{Example 2: a ring with a variable triangular section}

\newcommand\SectionTriangulaire{
        R h 2 div neg % sommet 1
        R r add 2 div h 2 div % sommet 2
        r h 2 div neg % sommet 3
}

\begin{minipage}{0.45\linewidth}
\begin{verbatim}
\newcommand\SectionTriangulaire{
% y <----z---->
 R h 2 div neg
 % S1 (R,-h/2)
 R r add 2 div h 2 div
 % S2 ((R+r)/2,h/2)
 r h 2 div neg
 % S3 (r,-h/2)
}
\end{verbatim}
\end{minipage}
\hfill
\begin{minipage}{0.45\linewidth}
\psset{unit=0.5}
\begin{pspicture}(-5,-3)(5,3)
%\psgrid
\pstVerb{/R 4 def /r 2 def /h 2 def}%
\newcommand\TriangularSection{%
  \pspolygon[fillstyle=vlines,linewidth=2\pslinewidth]%
  (!R h 2 div neg)(!R r add 2 div h 2 div)(!r h 2 div neg)}
\rput(0,0){\TriangularSection}\rput(-6,0){\TriangularSection}
\psline(-3,1)(3,1)\psline(-4,-1)(4,-1)
\psline[linestyle=dashed,dash=1 0.2 0.05 0.2]{->}(0,-3)(0,3)
\uput[u](0,3){$z$}\uput[r](4.1,0){$y$}\uput[dl](0,0){$O$}
\psline[linestyle=dashed](2,-1)(2,1.5)
\psline[linestyle=dashed](4,-1)(4,2.5)
\psline[linestyle=dashed]{->}(-4,0)(4.2,0)
\psline{->}(0,1.5)(2,1.5)\uput[u](1,1.5){$r$}
\psline{->}(0,2.5)(4,2.5)\uput[u](2,2.5){$R$}
\psline{<->}(5,-1)(5,1)\uput[r](5,0){$h$}
\uput[dr](!R h 2 div neg){1}
\uput[u](!R r add 2 div h 2 div){2}
\uput[dl](!r h 2 div neg){3}
\end{pspicture}
\end{minipage}
\begin{center}
%%
\psset{unit=0.5}
\begin{pspicture}(-5,-6)(5,6)
\psframe(-5,-4)(5,4)
\psset[pst-solides3d]{viewpoint=50 20 40 rtp2xyz,Decran=25,lightsrc=10 20 20}
\psSolid[object=anneau,section=\SectionTriangulaire,fillcolor=cyan,h=3,R=8,r=4,RotX=10]%
\end{pspicture}
%%
\begin{pspicture}(-5,-6)(5,5)
\psframe(-5,-4)(5,4)
\psset[pst-solides3d]{viewpoint=50 -20 -40 rtp2xyz,Decran=25,lightsrc=-10 -20 -20}
\psSolid[object=anneau,section=\SectionTriangulaire,fillcolor=yellow,h=3,R=8,r=4,RotX=-90,RotZ=10]%
\end{pspicture}
\end{center}

\begin{verbatim}
\psSolid[object=anneau,section=\SectionTriangulaire,%
        fillcolor=cyan,h=3,R=8,r=4,RotX=10](0,0,0)
\psSolid[object=anneau,section=\SectionTriangulaire,%
        fillcolor=yellow,h=3,R=8,r=4,RotX=-90,RotZ=10](0,0,0)
\end{verbatim}

%%\newpage

\newcommand\SectionPneu{
  /m {90 4 div} bind def
  /Scos {m cos 2 m mul cos add 3 m mul cos add} bind def
  /Z0 {h 4 div} bind def
  /c {Z0 Scos div} bind def
  /Z1 {Z0 c m cos mul add} bind def
  /Z2 {Z1 c m 2 mul cos mul add} bind def
  /R1 {R c m sin mul sub} bind def
  /R2 {R1 c m 2 mul sin mul sub} bind def
  /R3 {R2 c m 3 mul sin mul sub} bind def
  R h 4 div neg % 1
  R h 4 div % 2
  R1 Z1 % 3
  R2 Z2 % 4
  R3 h 2 div % 5
  r h 2 div  % 6
  r h 2 div neg  % 7
  R3 h 2 div neg % 8
  R2 Z2 neg % 9
  R1 Z1 neg % 10
  }

\subsection{Example 3: a ring with a``tyre''-like section: cylindric ring with chamfered edges}

\begin{minipage}{0.45\linewidth}
{\small
\begin{verbatim}
\renewcommand\SectionPneu{
  /m {90 4 div} bind def
  /Scos {m cos 2 m mul cos add 3 m mul cos add} bind def
  /Z0 {h 4 div} bind def
  /c {Z0 Scos div} bind def
  /Z1 {Z0 c m cos mul add} bind def
  /Z2 {Z1 c m 2 mul cos mul add} bind def
  /R1 {R c m sin mul sub} bind def
  /R2 {R1 c m 2 mul sin mul sub} bind def
  /R3 {R2 c m 3 mul sin mul sub} bind def
  R h 4 div neg % 1
  R h 4 div % 2
  R1 Z1 % 3
  R2 Z2 % 4
  R3 h 2 div % 5
  r h 2 div  % 6
  r h 2 div neg  % 7
  R3 h 2 div neg % 8
  R2 Z2 neg % 9
  R1 Z1 neg % 10
  }
\end{verbatim}}
\end{minipage}
\hfill
\begin{minipage}{0.45\linewidth}
%\psset{unit=0.65}
\begin{pspicture}(-2,-3)(5,6)
%\psgrid
\pstVerb{/R 4 def /r 2 def /h 2 def}%
\pstVerb{/m {90 4 div} bind def
  /Scos {m cos 2 m mul cos add 3 m mul cos add} bind def
  /Z0 {h 4 div} bind def
  /c {Z0 Scos div} bind def
  /Z1 {Z0 c m cos mul add} bind def
  /Z2 {Z1 c m 2 mul cos mul add} bind def
  /R1 {R c m sin mul sub} bind def
  /R2 {R1 c m 2 mul sin mul sub} bind def
  /R3 {R2 c m 3 mul sin mul sub} bind def}%
\pnode(!R h 4 div neg){S1}
\pnode(!R h 4 div){S2}
\pnode(!R1 Z1){S3}
\pnode(!R2 Z2){S4}
\pnode(!R3 h 2 div){S5}
\pnode(!r h 2 div){S6}
\pnode(!r h 2 div neg){S7}
\pnode(!R3 h 2 div neg){S8}
\pnode(!R2 Z2 neg){S9}
\pnode(!R1 Z1 neg){S10}
\newcommand\pneuSection{\pspolygon[fillstyle=vlines,linewidth=2\pslinewidth]%
(S1)(S2)(S3)(S4)(S5)(S6)(S7)(S8)(S9)(S10)}
\rput(0,0){\pneuSection}\rput{180}{\pspolygon[fillstyle=vlines,linewidth=2\pslinewidth]%
(!R h 4 div neg)(!R h 4 div)(!R1 Z1)(!R2 Z2)(!R3 h 2 div)(!r h 2 div)(!r h 2 div neg)(!R3 h 2 div neg)(!R2 Z2 neg)(!R1 Z1 neg)}
\psline(-3,1)(3,1)\psline(-3,-1)(3,-1)
\psline[linestyle=dashed,dash=1 0.2 0.05 0.2]{->}(0,-3)(0,3)
\uput[u](0,3){$z$}\uput[r](4.1,0){$y$}\uput[dl](0,0){$O$}
\psline[linestyle=dashed](2,-1)(2,1.5)
\psline[linestyle=dashed](4,-1)(4,2.5)
\psline[linestyle=dashed]{->}(-4,0)(4.2,0)
\psline{->}(0,1.5)(2,1.5)\uput[u](1,1.5){$r$}
\psline{->}(0,2.5)(4,2.5)\uput[u](2,2.5){$R$}
\psline{<->}(5,-1)(5,1)\uput[r](5,0){$h$}
\uput[r](S1){1}
\uput[r](S2){2}
\uput[u](S3){3}
\uput[u](S4){4}
\uput[u](S5){5}
\uput[ul](S6){6}
\uput[dl](S7){7}
\uput[dl](S8){8}
\uput[dr](S9){9}
\uput[r](S10){10}
\psdots[linecolor=red](S1)(S2)(S3)(S4)(S5)(S6)(S7)(S8)(S9)(S10)
\end{pspicture}
\end{minipage}

%\iffalse
\begin{center}
\psset{unit=0.7}
\begin{pspicture}(-5,-5)(5,4)
\psframe(-5,-4)(5,4)
\psset[pst-solides3d]{viewpoint=50 20 40 rtp2xyz,Decran=25,lightsrc=10 20 20}
\psSolid[object=anneau,section=\SectionPneu,fillcolor=cyan,h=3,R=8,r=4,RotX=10]%
\end{pspicture}
%%
\begin{pspicture}(-5,-5)(5,4)
\psframe(-5,-4)(5,4)
\psset[pst-solides3d]{viewpoint=50 -20 -40 rtp2xyz,Decran=25,lightsrc=-10 -20 -20}
\psSolid[object=anneau,section=\SectionPneu,fillcolor=yellow,h=3,R=8,r=4,RotX=-90,RotZ=10]%
\end{pspicture}
\end{center}
%%

\begin{verbatim}
\psSolid[object=anneau,section=\SectionPneu,%
        fillcolor=cyan,h=3,R=8,r=4,RotX=10](0,0,0)
\psSolid[object=anneau,section=\SectionPneu,%
        fillcolor=yellow,h=3,R=8,r=4,RotX=-90,RotZ=10]%
\end{verbatim}

%\fi
\newpage

\subsection{Example 4: an empty bobbin}

\newcommand\SectionBobine{
  r h 2 div % 1
  r h 2 div neg % 2
  R h 2 div neg % 3
  R h 3 div neg % 4
  R h 4 div sub h 3 div neg % 5
  R h 4 div sub h 3 div % 6
  R h 3 div % 7
  R h 2 div % 8
  }

\begin{minipage}{0.45\linewidth}
\begin{verbatim}
\newcommand\SectionBobine{
  r h 2 div % 1
  r h 2 div neg % 2
  R h 2 div neg % 3
  R h 3 div neg % 4
  R h 4 div sub h 3 div neg % 5
  R h 4 div sub h 3 div % 6
  R h 3 div % 7
  R h 2 div % 8
  }
\end{verbatim}
\end{minipage}
\hfill
\begin{minipage}{0.45\linewidth}
\begin{pspicture}(-2,-2)(5,2)
\pstVerb{/RB 4 def /rB 2 def /hB 3 def}%
\pnode(!rB hB 2 div){S1}
\pnode(!rB hB 2 div neg){S2}
\pnode(!RB hB 2 div neg){S3}
\pnode(!RB hB 3 div neg){S4}
\pnode(!RB hB 4 div sub hB 3 div neg){S5}
\pnode(!RB hB 4 div sub hB 3 div){S6}
\pnode(!RB hB 3 div){S7}
\pnode(!RB hB 2 div){S8}
\newcommand\pneuSection{\pspolygon[fillstyle=vlines,linewidth=2\pslinewidth]%
(S1)(S2)(S3)(S4)(S5)(S6)(S7)(S8)}
\rput(0,0){\pneuSection}\rput{180}{\pspolygon[fillstyle=vlines,linewidth=2\pslinewidth]%
(!rB hB 2 div)(!rB hB 2 div neg)(!RB hB 2 div neg)(!RB hB 3 div neg)(!RB hB 4 div sub hB 3 div neg)(!RB hB 4 div sub hB 3 div)(!RB hB 3 div)(!RB hB 2 div)}
\psline(-3,1.5)(3,1.5)\psline(-3,-1.5)(3,-1.5)
\psline[linestyle=dashed,dash=1 0.2 0.05 0.2]{->}(0,-3)(0,3)
\uput[u](0,3){$z$}\uput[r](4.1,0){$y$}\uput[dl](0,0){$O$}
\psline[linestyle=dashed](2,-1)(2,1.5)
\psline[linestyle=dashed](4,-1)(4,2.5)
\psline[linestyle=dashed](-4,-1)(4,-1)
\psline[linestyle=dashed](-4,1)(4,1)
\psline[linestyle=dashed]{->}(-4,0)(4.2,0)
\psline{->}(0,1.8)(2,1.8)\uput[u](1,1.8){$r$}
\psline{->}(0,2.5)(4,2.5)\uput[u](2,2.5){$R$}
\psline{<->}(5,-1.5)(5,1.5)\uput[r](5,0){$h$}
\uput[u](S1){1}
\uput[d](S2){2}
\uput[d](S3){3}
\uput[r](S4){4}
\uput[ur](S5){5}
\uput[dr](S6){6}
\uput[r](S7){7}
\uput[r](S8){8}
\psdots[linecolor=red](S1)(S2)(S3)(S4)(S5)(S6)(S7)(S8)
\end{pspicture}
\end{minipage}
\begin{center}
\begin{pspicture}(-5,-6)(5,5)
\psframe*[linecolor=blue!50](-5,-5)(5,4)
\psset[pst-solides3d]{viewpoint=70 40 10 rtp2xyz,Decran=25,lightsrc=0 30 100}
\psSolid[object=grille,base=-15 15 -15 15,fillcolor=yellow!30!black!10](0,0,-8)
%\psSolid[object=prisme,h=2,base=-15 1 -15 -1 15 -1 15 1](0,0,-8)
\psSolid[object=anneau,section=\SectionBobine,fillcolor=gray!50,h=6,R=8,r=4,RotX=90,linecolor=gray]%
\end{pspicture}
\end{center}
\begin{verbatim}
\psSolid[object=grille,base=-15 15 -15 15,fillcolor=yellow!30](0,0,-8)
\psSolid[object=anneau,section=\SectionBobine,%
        fillcolor=gray!50,h=6,R=8,r=4,RotX=90,linecolor=gray]%
\end{verbatim}



\subsection{Some other rings}

Three other examples are available on the website:

\centerline{\url{http://syracuse.eu.org/lab/bpst/pst-solides3d/anneaux}}


\endinput