\section{Generalization of the notion of a cylinder and a cone} \subsection{Cylinder or \Index{cylindric area}} This paragraph generalizes the notion of a cylinder, or a cylindric area\footnote{This was written by Maxime \textsc{Chupin}, as a result of a question on the list \url{http://melusine.eu.org/cgi-bin/mailman/listinfo/syracuse}}. A \textit{routing} curve has to be defined by a function and the direction of the \textit{cylinder} axis needs to be arranged. In the example below the routing curve is sinusoidal, situated in the plane $z=-2$: \begin{verbatim} \defFunction[algebraic]{G1}(t){t}{2*sin(t)}{-2} \end{verbatim} The direction of the cylinder is defined by the components of a vector \texttt{\Lkeyword{axe}=0 1 1}. The drawing calls \Lkeyword{object}=\Lkeyval{cylindre} which in addition to the usual parameters---which is the height \texttt{\Lkeyword{h}=4}--- is about the \textbf{length of the generator} and not of the distance between the two base planes, and needs to define the routing curve \texttt{\Lkeyword{function}=G1} and the interval of the variable $t$ \texttt{\Lkeyword{range}=-3 3}. \begin{verbatim} \psSolid[object=cylindre, h=4,function=G1, range=-3 3, ngrid=3 16, axe=0 1 1, incolor=green!50, fillcolor=yellow!50] \end{verbatim} \begin{center} \psset{unit=0.75} \begin{pspicture}(-5,-4)(5,4) \psset{lightsrc=viewpoint,viewpoint=100 10 20 rtp2xyz,Decran=100} \psSolid[object=grille,base=-4 4 -6 6,linecolor={[rgb]{0.72 0.72 0.5}},action=draw](0,0,-2) \defFunction[algebraic]{G1}(t){t}{2*sin(t)}{-2} \defFunction[algebraic]{G2}(t){t}{2*sin(t)+4}{2} \psSolid[object=courbe,function=G1, range=-3 3,r=0, linecolor=blue, linewidth=2pt] \psSolid[object=cylindre, h=5.65685,function=G1, range=-3 3, ngrid=3 16, axe=0 1 1, incolor=green!50, fillcolor=yellow!50] \psSolid[object=courbe,function=G2, range=-3 3,r=0, linecolor=blue, linewidth=2pt] \psSolid[object=parallelepiped, a=8,b=12,c=4,action=draw](0,0,0) \psSolid[object=plan,action=draw, definition=equation, args={[0 0 1 -2] 90}, base=-6 6 -4 4,planmarks,showBase] \psSolid[object=plan,action=draw, definition=equation, args={[0 1 0 -6] 180}, base=-4 4 -2 2,planmarks,showBase] \psSolid[object=plan,action=draw, definition=equation, args={[1 0 0 -4] 90}, base=-6 6 -2 2,planmarks,showBase] \psSolid[object=vecteur, linecolor=red, args=0 3 3] \end{pspicture} \end{center} In the following example, before drawing the horizontal planes, we calculate the distance between these two planes. \begin{verbatim} \pstVerb{/ladistance 2 sqrt 2 mul def} \end{verbatim} {\psset{unit=0.75,lightsrc=viewpoint,viewpoint=100 -10 20 rtp2xyz,Decran=100} \begin{LTXexample}[pos=t] \begin{pspicture}(-1.5,-3)(6.5,6) \psSolid[object=grille,base=-3 3 -1 8,action=draw] \pstVerb{/ladistance 2 sqrt 2 mul def} \defFunction[algebraic]{G3}(t){6*(cos(t))^3*sin(t)}{4*(cos(t))^2}{0} \defFunction[algebraic]{G4}(t){6*(cos(t))^3*sin(t)}{4*(cos(t))^2+ladistance}{ladistance} \psSolid[object=courbe,function=G3,range=0 6.28,r=0,linecolor=blue,linewidth=2pt] \psSolid[object=cylindre,range=0 -6.28,h=4,function=G3,axe=0 1 1,ngrid=3 36, fillcolor=green!50,incolor=yellow!50] \psSolid[object=courbe,function=G4,range=0 6.28,r=0,linecolor=blue,linewidth=2pt] \psSolid[object=vecteur,linecolor=red,args=0 ladistance dup] \psSolid[object=plan,action=draw,definition=equation,args={[0 0 1 ladistance neg] 90}, base=-1 8 -3 3,planmarks,showBase] \axesIIID(0,4.5,0)(4,8,5) \rput(0,-3){\texttt{axe=0 1 1}} \end{pspicture} \end{LTXexample}} \begin{LTXexample}[width=8cm] \psset{unit=0.75,lightsrc=viewpoint, viewpoint=100 -10 20 rtp2xyz,Decran=100} \begin{pspicture}(-1.5,-3)(6.5,6) \psSolid[object=grille,base=-3 3 -1 6,action=draw] \defFunction[algebraic]{G5}(t) {t}{0.5*t^2}{0} \defFunction[algebraic]{G6}(t) {t}{0.5*t^2}{4} \psSolid[object=courbe,function=G5, range=-3 2,r=0,linecolor=blue, linewidth=2pt] \psSolid[object=cylindre, range=-3 2,h=4, function=G5, axe=0 0 1, %% valeur par d\'{e}faut incolor=green!50, fillcolor=yellow!50, ngrid=3 8] \psSolid[object=courbe,function=G6, range=-3 2,r=0,linecolor=blue, linewidth=2pt] \axesIIID(0,4.5,0)(4,6,5) \psSolid[object=vecteur, linecolor=red,args=0 0 4] \psSolid[object=plan,action=draw, definition=equation, args={[0 0 1 -4] 90}, base=-1 6 -3 3,planmarks,showBase] \end{pspicture} \end{LTXexample} \begin{LTXexample}[width=8cm] \psset{unit=0.75,lightsrc=viewpoint, viewpoint=100 -10 20 rtp2xyz,Decran=100} \begin{pspicture}(-3.5,-3)(6.5,6) \psset{lightsrc=viewpoint,viewpoint=100 45 45,Decran=100} \psSolid[object=grille,base=-3 3 -2 7,fillcolor=gray!30] \defFunction[algebraic]{G7}(t) {2*cos(t)}{2*sin(t)}{0} \defFunction[algebraic]{G8}(t) {2*cos(t)}{2*sin(t)+4}{4} \psSolid[object=courbe,function=G7, range=0 6.28,r=0, linecolor=blue,linewidth=2pt] \psSolid[object=cylindre, range=0 6.28,h=5.65685, function=G7,axe=0 1 1, incolor=green!20, fillcolor=yellow!50, ngrid=3 36] \psSolid[object=courbe,function=G8, range=0 6.28,r=0,linecolor=blue, linewidth=2pt] \axesIIID(2,4.5,2)(4,8,5) \psSolid[object=vecteur, linecolor=red,args=0 1 1](0,4,4) \psSolid[object=plan,action=draw, definition=equation, args={[0 0 1 -4] 90}, base=-2 7 -3 3,planmarks,showBase] \end{pspicture} \end{LTXexample} \encadre{The routing curve can be any curve and need not necessarily be a plane horizontal.} \begin{LTXexample}[width=8cm] \begin{pspicture}(-3.5,-2)(4,5) \psset{unit=0.75,lightsrc=viewpoint,viewpoint=100 -5 10 rtp2xyz,Decran=100} \psSolid[object=grille,base=-4 4 -4 4,ngrid=8. 8.](0,0,-1) \defFunction[algebraic]{G9}(t) {3*cos(t)}{3*sin(t)}{1*cos(5*t)} \psSolid[object=cylindre, range=0 6.28,h=5,function=G9, axe=0 0 1,incolor=green!50, fillcolor=yellow!50, ngrid=4 72,grid] \end{pspicture} \end{LTXexample} \subsection{Cone or \Index{conic area}} This paragraph generalizes the notion of a cone, or a conic area\footnote{This was written by Maxime \textsc{Chupin}, as the result of a question on the list \url{http://melusine.eu.org/cgi-bin/mailman/listinfo/syracuse}}. A \textit{routing} curve needs to be defined by a function which defines the base of the cone, and the vertex of the \textit{cone} which is by default \texttt{\Lkeyword{origine}=0 0 0}. The parts above and below the cone are symmetric concerning the vertice. In the example below, the routing curve is a parabolic arc, situated in the plane $z=-2$. \begin{LTXexample}[width=7.5cm] \begin{pspicture}(-3,-4)(4.5,6) \psset{unit=0.75,lightsrc=viewpoint,viewpoint=100 10 10 rtp2xyz,Decran=100} \psSolid[object=grille,base=-4 4 -3 3,action=draw](0,0,-2) \defFunction[algebraic]{G1}(t){t}{0.25*t^2}{-2} \defFunction[algebraic]{G2}(t){-t}{-0.25*t^2}{2} \psSolid[object=courbe,function=G1, range=-3.46 3,r=0, linecolor=blue,linewidth=2pt] \psSolid[object=cone,function=G1, range=-3.46 3,ngrid=3 16, incolor=green!50, fillcolor=yellow!50, origine=0 0 0] \psSolid[object=courbe, function=G2,range=-3.46 3, r=0,linecolor=blue, linewidth=2pt] \psPoint(0,0,0){I} \uput[l](I){\red$(0,0,0)$} \psdot[linecolor=red](I) \gridIIID[Zmin=-2,Zmax=2,spotX=r](-4,4)(-3,3) \end{pspicture} \end{LTXexample} \begin{LTXexample}[width=7.5cm] \begin{pspicture}(-3,-4)(4.5,6) \psset{unit=0.7,lightsrc=viewpoint,viewpoint=100 -10 20 rtp2xyz,Decran=100} \psSolid[object=grille,base=-4 4 -3 3, linecolor={[rgb]{0.72 0.72 0.5}},action=draw](0,0,-2) \defFunction[algebraic]{G1}(t){t}{2*sin(t)}{-2} \defFunction[algebraic]{G2}(t){-t}{-2*sin(t)}{2} \psSolid[object=courbe,function=G1, range=-3.14 3.14,r=0, linecolor=blue, linewidth=2pt] \psSolid[object=cone,function=G1, range=-3.14 3.14,ngrid=3 16, incolor=green!50, fillcolor=yellow!50, origine=0 0 0] \psSolid[object=courbe, function=G2,range=-3.14 3.14, r=0,linecolor=blue, linewidth=2pt] \psPoint(0,0,0){I} \uput[l](I){\red$(0,0,0)$} \psdot[linecolor=red](I) \gridIIID[Zmin=-2,Zmax=2,spotX=r](-4,4)(-3,3) \end{pspicture} \end{LTXexample} \begin{LTXexample}[width=7.5cm] \begin{pspicture}(-3,-4)(4.5,6) \psset{unit=0.7,lightsrc=viewpoint,viewpoint=100 -10 20 rtp2xyz,Decran=100} \psSolid[object=grille,base=-4 4 -4 4,linecolor={[rgb]{0.72 0.72 0.5}},action=draw](0,0,-2) \defFunction[algebraic]{G1}(t){t}{2*sin(t)}{-2} \defFunction[algebraic]{G2}(t){-t}{-2*sin(t)-2}{2} \psSolid[object=courbe,function=G1, range=-3.14 3.14,r=0, linecolor=blue, linewidth=2pt] \psSolid[object=cone, function=G1,range=-3.14 3.14, ngrid=3 16,incolor=green!50, fillcolor=yellow!50, origine=0 -1 0] \psSolid[object=courbe, function=G2,range=-3.14 3.14, r=0,linecolor=blue, linewidth=2pt] \psPoint(0,-1,0){I}\uput[l](I){\red$(0,-1,0)$} \psdot[linecolor=red](I) \gridIIID[Zmin=-2,Zmax=2,spotX=r](-4,4)(-4,4) \end{pspicture} \end{LTXexample} \encadre{For the cones as well, the routing curve can be any curve and need not necessarily be a plane horizontal curve, as the following example, written by Maxime \textsc{Chupin}, will show.} \centerline{\url{http://melusine.eu.org/lab/bpst/pst-solides3d/cone/cone-dir_02.pst}} \endinput