diff options
author | Karl Berry <karl@freefriends.org> | 2010-04-12 17:36:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-04-12 17:36:45 +0000 |
commit | d68dc2a80b6149839a67b6498294f1b774687157 (patch) | |
tree | b846801b3f2b0a1c6590dda241807d9f38f0e3b8 /Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex | |
parent | eb5da0fa2dab043786ca8eca9ed5df4453633c4f (diff) |
pst-solides3d 4.18 (11apr10)
git-svn-id: svn://tug.org/texlive/trunk@17821 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex b/Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex new file mode 100644 index 00000000000..a425dff8065 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex @@ -0,0 +1,255 @@ +\section{Tubes} + +This section is about to substitute a curve in two or three dimensions (2D or 3D), +that are setup parameterised, by a \Index{tube}, where the initial curve is the axes and +we can choose the radius and grid. We find some mathematical elements concerning +these objects on the following websites: + +\centerline{\url{http://fr.wikipedia.org/wiki/Tube_(math\%C3\%A9matiques)}} + +\centerline{\url{http://www.mathcurve.com/surfaces/tube/tube.shtml}} + +As usual, the \texttt{pst-solides3d} package offers two possibilities to draw the tubes: +\begin{itemize} + \item via PSTricks and the argument \Lkeyword{object} of \Lcs{psSolid} + \item directly with \verb+\codejps+ +\end{itemize} + +\encadre{It is often advisable to calculate in advance, by hand or with a preferred software, the first derivatives of the parametric functions which define the coordinates.} + +However, if this derivative isn't defined explicitly by the user, the package makes some approximate calculations, but the result then is not always sufficient. + + +\subsection{Usage with PSTricks} + +\subsubsection{Give your curves a relief} +``\textit{Donnez du relief \`{a} vos courbes}'', this is the title of the article +from Robert \textsc{Ferr\'{e}ol}, available on: + +\url{http://mapage.noos.fr/r.ferreol/atelecharger/textes/relief/courbes\%20en\%20relief.html} + +from who the following functions were borrowed and which are analogous to a +Lissajous figure enrolled around a cylinder. + + +\begin{LTXexample}[pos=t] +\begin{pspicture}(-3.5,-4)(4,4) +\psset{lightsrc=80 30 30,viewpoint=100 45 30 rtp2xyz,Decran=110,linewidth=0.2pt} +\defFunction[algebraic]{Func}(t){2.5*cos(t)}{2.5*sin(t)}{2*cos(5*t)} +\defFunction[algebraic]{Func'}(t){-2.5*sin(t)}{2.5*cos(t)}{-10*sin(5*t)} +\psSolid[object=courbe,range=0 6.28,hue=0 1 0.7 1, + ngrid=360 8,function=Func,r=0.15] +\end{pspicture} +\end{LTXexample} + + +The argument \texttt{\Lkeyword{object}=\Lkeyval{courbe}} with the parameters +\Lkeyword{r}, \Lkeyword{function} and \Lkeyword{range} is used to specify +the radius of the tube, the name of the function to be used and the range. + +We can also refine the grid with the optional argument +\texttt{\Lkeyword{ngrid}=$n_1$ $n_2$} where $n_1$ represents the number of +vertices of a section of a tube (if $n_1 = 6$, this gives a tube with a +hexagonal section) and $n_2$ represents the number of divisions along it. + + +\subsubsection{A \Index{hairline curve} is produced with the radius \texttt{r=0}} + +And thus, no fear to specify the derived function. + +\begin{LTXexample}[pos=t] +\begin{pspicture}(-3.5,-4)(4,4) +\psset{lightsrc=80 30 30,viewpoint=100 45 30 rtp2xyz,Decran=110} +\defFunction[algebraic]{FI}(t){2.5*cos(t)}{2.5*sin(t)}{2*cos(5*t)} +\psSolid[object=courbe,range=0 6.28,linewidth=2pt,linecolor=blue,function=FI,r=0] +\end{pspicture} +\end{LTXexample} + + +\subsection{Usage with \texttt{\textbackslash{}codejps}} + +The syntax is \texttt{\textbackslash{}codejps\{t\_min t\_max (name\_function) +radius\_tube [n1 n2] newtube\}}. + + +\begin{LTXexample}[pos=t] +\begin{pspicture}(-3.5,-3.5)(4,3.5) +\psset{lightsrc=80 30 30,viewpoint=100 45 90 rtp2xyz,Decran=100,linewidth=0.2pt} +\codejps{ +/rpn {tx@AlgToPs begin AlgToPs end cvx exec} def +/xc {((2+1*cos(2.75*t))*cos(t)) rpn } def +/yc {((2+1*cos(2.75*t))*sin(t)) rpn } def +/zc {(1*sin(2.75*t)) rpn } def +/xc' {(-2.75*sin(2.75*t)*cos(t)-(2+cos(2.75*t))*sin(t)) rpn } def +/yc' {(-2.75*sin(2.75*t)*sin(t)+(2+cos(2.75*t))*cos(t)) rpn } def +/zc' {(2.75*cos(2.75*t)) rpn } def +/g { 3 dict begin /t exch def xc yc zc end } def +/g' { % first derivative +3 dict begin /t exch def xc' yc' zc' end } def +/solenoide{ +% t_min t_max (name_function) radius_tube [resolution] + 0 25.2 (g) 0.1 [360 8] newtube dup [0 1] solidputhuecolors} def +solenoide +drawsolid** +}% +\end{pspicture} +\end{LTXexample} + +\subsection{Improving the speed of readout} + +The curve with the name ``\textit{horopter}'' is the subject of this website: + +\centerline{\url{http://www.mathcurve.com/courbes3d/horoptere/horoptere.shtml}} + +\subsubsection{Obtaining the curve directly} + +The following lines allow us to calculate the points and draw the curve. +The \Index{resolution} \texttt{\Lkeyword{ngrid}=72 12} of the curve was increased, so some +more calculation time to produce the result, which some will judge as very long. +\begin{verbatim} +\begin{pspicture}(-7,-2)(7,4) +\psset{lightsrc=80 30 30} +\psset{viewpoint=1000 60 20 rtp2xyz,Decran=1000} +\psframe(-7,-2)(7,4) +\psset{solidmemory} +\codejps{/a 2 def /b 2 def}% +\defFunction[algebraic]{F3}(t) + {a*(1+cos(t))} + {b*tan(t/2)} + {a*sin(t)} +\defFunction[algebraic]{F3'}(t) + {-a*sin(t)} + {b*(1+tan(1/2*t)^2)} + {a*cos(t)} +\psSolid[object=courbe, + range=-2.7468 2.7468, + ngrid=72 12, + function=F3,hue=0 1 0.7 1, + action=none,name=H1, + r=1]% +\psSolid[object=cylindrecreux, + h=20,r=1,RotX=90, + incolor=green!30,action=none, + name=C1, + ngrid=36 36](2,10,0) +\psSolid[object=fusion, + base=H1 C1] +\composeSolid +\end{pspicture} +\end{verbatim} + +\subsubsection{Saving the parameters of the curve} + +If this curve is used several times, it is advisable to backup all the +characteristics of that curve, like: +coordinates of the vertices, list of colours of the faces with placing +the last command \texttt{\Lkeyword{action}=\Lkeyval{writesolid}}: +\begin{verbatim} +\psSolid[object=fusion, + base=H1 C1, + file=horoptere, + action=writesolid] +\end{verbatim} +The following sequence \Cadre{LaTeX fichier.tex->dvips->GSview + (Windows) or gv (Linux)} will generate 4 files: +\begin{itemize} + \item \texttt{horoptere-couleurs.dat} $\rightarrow$ the colours of the faces; + \item \texttt{horoptere-faces.dat} $\rightarrow$ the list of faces; + \item \texttt{horoptere-sommets.dat} $\rightarrow$ the list of vertices; + \item \texttt{horoptere-io.dat} $\rightarrow$ the number of faces and vertices. +\end{itemize} + +then read and execute the files with the command: +\texttt{\textbackslash{}psSolid[object=datfile,file=horoptere]}, the time saved can be quite significant + + + +\encadre{By default, under Windows and Linux, the security of files on the hard drive is activated and doesn't allow to write on the drive. +To deactivate that security option, more or less temporarily, here the two corresponding procedures: + +\begin{description} + + \item[Linux:] The advice from Jean-Michel \textsc{Sarlat}: the simplest will be to use GhostScript directly, within the console. As there is no image to wait for: + +\$$>$ gs -dNOSAFER monfichier.ps quit.ps + \item[Windows:] Within the menue \texttt{Options}, the option + \textsf{Security of files} must be turned to unchecked. +\end{description}} + +\subsubsection{The plot of the curve} + +\begin{LTXexample}[width=9cm] +\begin{pspicture}(-5,-3.5)(4,3) +\psset{lightsrc=80 30 30} +\psset{viewpoint=100 60 20 rtp2xyz, + Decran=75} +\psframe*[linecolor=cyan!30](-4.5,-3)(3.5,3) +\psSolid[object=datfile,file=./horoptere] +\end{pspicture} +\end{LTXexample} + + + +\subsection{Some other examples} + + +\subsubsection{A straight line} + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3.5,-2)(3.5,2) +\psset{viewpoint=100 -20 20 rtp2xyz, + Decran=75,unit=0.8} +\psSolid[object=grille,base=-4 4 -4 4]% +\defFunction[algebraic]{FIV}(t){t}{t}{0.5} +\defFunction[algebraic]{FIV'}(t){1}{1}{0} +\psSolid[object=courbe, + range=-4 4, ngrid=16 16, + function=FIV, r=0.5] +\end{pspicture} +\end{LTXexample} + + + +\subsubsection{A \Index{hypocycloid}} + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3.5,-3)(3.5,3) +\psset{viewpoint=100 20 45 rtp2xyz, + Decran=75,unit=0.7} +\psSolid[object=grille,base=-5 5 -5 5]% +\defFunction[algebraic]{FII}(t) + {4*cos(t)+cos(4*t)/2} + {4*sin(t)-sin(4*t)/2} + {1} +\defFunction[algebraic]{FII'}(t) + {-4*sin(t)-2*sin(4*t)} + {4*cos(t)-2*cos(4*t)} + {0} +\psSolid[object=courbe, + range=0 6.28,ngrid=90 16, + function=FII,r=1] +\end{pspicture} +\end{LTXexample} + +\subsubsection{The spring of Gaston} + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3.5,-4)(3.5,4.5) +\psset{lightsrc=80 30 30, + viewpoint=100 20 20 rtp2xyz,Decran=50} +\defFunction[algebraic]{FIII}(t) + {(t^2+3)*sin(15*t)} + {(t^2+3)*cos(15*t)}{2*t} +\defFunction[algebraic]{FIII'}(t) + {2*t*sin(15*t)+15*(t^2+3)*cos(15*t)} + {2*t*cos(15*t)-15*(t^2+3)*sin(15*t)}{2} +\psSolid[object=courbe, + range=-2 2,ngrid=360 6, + function=FIII,hue=0.2 0.3, + linewidth=0.1pt,r=0.2] +\end{pspicture} +\end{LTXexample} + + +\endinput + |