summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-04-12 17:36:45 +0000
committerKarl Berry <karl@freefriends.org>2010-04-12 17:36:45 +0000
commitd68dc2a80b6149839a67b6498294f1b774687157 (patch)
treeb846801b3f2b0a1c6590dda241807d9f38f0e3b8 /Master/texmf-dist/doc/generic/pst-solides3d/doc-src/par-tube-en.tex
parenteb5da0fa2dab043786ca8eca9ed5df4453633c4f (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.tex255
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
+