diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-transform_en_corr.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-transform_en_corr.tex | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-transform_en_corr.tex b/Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-transform_en_corr.tex new file mode 100644 index 00000000000..d141e5cb126 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-solides3d/doc-en/par-transform_en_corr.tex @@ -0,0 +1,162 @@ +\section{The option \texttt{transform}} + +The option \verb+transform=...+, which is nothing else than a formula $\mathbb{R}^3 \rightarrow \mathbb{R}^3$, +which is applied to every point of the solid. In the first example, the object that accepts the transformation is a cube. +The referenced cube is yellow, the transformed cube is green and the cube before the transformation is setup with a reticule. + +\subsection{Identical scaling factor in the three coordinates} + +The scaling factor is set to $0.5$. It is either introduced within the PostScript variable `\texttt{/Facteur}': +\begin{verbatim} +\pstVerb{/Facteur {.5 mulv3d} def}% +\end{verbatim} +and then passed to the option \verb+transform+: +\begin{verbatim} +\psSolid[object=cube,a=2,ngrid=3, + transform=Facteur](2,0,1)% +\end{verbatim} +or directly passed to the option: +\begin{verbatim} +\psSolid[object=cube,a=2,ngrid=3, + transform={.5 mulv3d}](2,0,1)% +\end{verbatim} +Here the \textit{jps} abbreviation \texttt{transform=\{.5 mulv3d\}} for a function $\mathbb{R}^3 \rightarrow \mathbb{R}^3$ was used. + +Another method would be to use the code +\begin{verbatim} +\defFunction[algebraic]{matransformation}(x,y,z) + {.5*x} + {.5*y} + {.5*z} +\end{verbatim} +and then pass it to the option +\Cadre{[\texttt{transform=matransformation}]}. +\begin{LTXexample}[pos=t] +\psset{viewpoint=20 60 20 rtp2xyz,lightsrc=viewpoint,Decran=20} +\begin{pspicture}(-5,-3)(6,5) +\psframe(-5,-3)(6,5) +\psSolid[object=grille,base=-4 4 -4 4,fillcolor=red!50]% +\axesIIID(0,0,0)(4,4,4)% +\psSolid[object=cube,fillcolor=yellow!50, + a=2,ngrid=3](-2,0,1) +\psSolid[object=cube,fillcolor=green!50, + a=2,transform={.5 mulv3d}, + ngrid=3](2,0,1) +\psSolid[object=cube, + action=draw, + a=2,ngrid=3](2,0,1) +\end{pspicture} +\end{LTXexample} + +\encadre{The scaling factor also affects the position coordinates of the cube's center.} + +\subsection{Different scaling factors for the three coordinates} + +Let's for example use a factor 0.75 for $x$, 4 +for $y$ and 0.5 for $z$ using the function \texttt{scaleOpoint3d} from the + \textit{jps} library -- so a cube will be transformed to a cuboid. +\begin{LTXexample}[pos=t] +\psset{viewpoint=20 60 20 rtp2xyz,lightsrc=viewpoint,Decran=20} +\begin{pspicture}(-5,-3)(6,5) +\psframe(-5,-3)(6,5) +\psSolid[object=grille,base=-4 4 -4 4,fillcolor=red!50]% +\axesIIID(0,0,0)(4,4,4)% +\psSolid[object=cube,fillcolor=yellow!50, + a=2,ngrid=3](-2,0,1) +\psSolid[object=cube,fillcolor=green!50, + a=2,transform={.75 4 .5 scaleOpoint3d}, + ngrid=3](2,0,1) +\psSolid[object=cube, + action=draw, + a=2,ngrid=3](2,0,1) +\end{pspicture} +\end{LTXexample} + +\subsection{Transformation associated with the distance to the origin} + +Here an example applied to a cube: + +\begin{equation*} +\left\lbrace\begin{aligned} +x'&=\big(0.5\sqrt{x^2+y^2+z^2}+1-0.5\sqrt{3}\big)x \\ +y'&=\big(0.5\sqrt{x^2+y^2+z^2}+1-0.5\sqrt{3}\big)y \\ +z'&=\big(0.5\sqrt{x^2+y^2+z^2}+1-0.5\sqrt{3}\big)z +\end{aligned}\right. +\end{equation*} + +\begin{LTXexample}[width=7cm] +\begin{pspicture}(-3,-4)(4,3) +\psset{viewpoint=20 60 20 rtp2xyz,lightsrc=10 15 7,Decran=20} +\pstVerb{ +/gro { +4 dict begin + /M defpoint3d + /a .5 def + /b 1 a 3 sqrt mul sub def + /k M norme3d a mul b add def + M k mulv3d +end +} def}% +\psset{linewidth=.02,linecolor=gray} +\psSolid[object=cube,a=3,ngrid=9, + transform=gro]% +\end{pspicture} +\end{LTXexample} +%\newpage + +\subsection{Bending and torsion of beams} + +The solid to the left is a prism of the height 10 cm with 20 floors +(\verb+[ngrid=20 2]+). In every floor, an additional angle of rotation -- for example 10$^{\mathrm{o}}$ around the $Oz$ axis is -- given. + Now that the adjacent floors have a distance of $0.5$~cm, one multiplies $z\times20$. + +La flexion est envisagée dans le plan $xOz$ sous l'action d'une force perpendiculaire à la poutre appliquée en son extrémité. + +\begin{LTXexample}[pos=t] +\psset{viewpoint=100 50 20 rtp2xyz,lightsrc=viewpoint,Decran=100,unit=0.65} +\begin{pspicture}(-3,-1)(3.5,11) +\psframe(-3,-1)(3.5,11) +\psSolid[object=grille,base=-2 2 -2 2,ngrid=8]% +\psSolid[object=prisme,h=10,ngrid=20 2, + base=0.5 0 0.5 0.5 0 0.5 -0.5 0.5 -0.5 0 -0.5 -0.5 0 -0.5 0.5 -0.5]% +\end{pspicture} +\begin{pspicture}(-3,-1)(3.5,11) +\psframe(-3,-1)(3.5,11) +\psSolid[object=grille,base=-2 2 -2 2,ngrid=8]% +\pstVerb{ +/torsion {% on tourne de 10 degrés suivant l'axe Oz à chaque niveau +2 dict begin + /M defpoint3d % on récupère les coordonnées + M /z exch def pop pop + M 0 0 z 20 mul rotateOpoint3d +end} def}% +\psSolid[object=prisme,h=10,ngrid=20 2, + base=0.5 0 0.5 0.5 0 0.5 -0.5 0.5 -0.5 0 -0.5 -0.5 0 -0.5 0.5 -0.5, + transform=torsion]% +\psTransformPoint[RotZ=20](2 0 10)(0,0,0){A} +\psTransformPoint[RotZ=20](2 1 10)(0,0,0){A'} +\psTransformPoint[RotZ=20](-2 0 10)(0,0,0){B} +\psTransformPoint[RotZ=20](-2 -1 10)(0,0,0){B'} +\psline[linecolor=red]{v-v}(A')(A)(B)(B') +\end{pspicture} +\begin{pspicture}(-3.5,-1)(3,11) +\psframe(-3.5,-1)(3,11) +\psSolid[object=grille,base=-2 2 -2 2,ngrid=8]% +\pstVerb{% idée de Christophe Poulain +/flexion {% on tourne de 2 degrés suivant l'axe Oy à chaque niveau +2 dict begin + /M defpoint3d % on récupère les coordonnées + M /z exch def pop pop + M 0 z 2 mul 0 rotateOpoint3d +end} def}% +\axesIIID(0,0,0)(3,3,10) +\psSolid[object=prisme,h=10,ngrid=20 2, + base=0.5 0 0.5 0.5 0 0.5 -0.5 0.5 -0.5 0 -0.5 -0.5 0 -0.5 0.5 -0.5, + transform=flexion]% +\psTransformPoint[RotY=20](0.5 0 10)(0,0,0){A} +\psPoint(3 20 cos mul 20 sin 10 mul add 0.5 add,0, 20 cos 10 mul 20 sin 3 mul sub){A'} +\psdot(A)\psline[linecolor=red]{-v}(A)(A') +\end{pspicture} +\end{LTXexample} + +\endinput |