diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-solides3d/doc/par-plan.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-solides3d/doc/par-plan.tex | 612 |
1 files changed, 612 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-solides3d/doc/par-plan.tex b/Master/texmf-dist/doc/generic/pst-solides3d/doc/par-plan.tex new file mode 100644 index 00000000000..3954dc7add1 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-solides3d/doc/par-plan.tex @@ -0,0 +1,612 @@ +\section {L'objet \texttt{plan}} + +\subsection {Présentation~: type \textsl{plan\/} et type \textsl {solid} } + +Le statut de l'objet \verb+plan+ est tout à fait particulier dans +\verb+pst-solides3d+. En effet, tous les objets vus jusqu'à présents +ont une structure commune~: ils sont de type \textsl{solid}. Autrement +dit ils sont entièrement définis par une liste de sommets, de faces et +de couleurs. +Or pour de nombreuses applications, il est nécessaire d'avoir des +renseignements complémentaires pour un plan~: une origine, une +orientation, une base de référence, etc... + +Pour pouvoir répondre à ces exigences, il a été créé une autre +structure de données, dite de type \textsl {plan}, qui permet de +stocker toutes les informations nécessaires. Toutes les +manipulations de plan vont transiter par un tel objet. Ce n'est qu'au +moment de la représentation que l'objet de type \textsl {plan\/} sera +converti en un objet de type \textsl {solid\/} représentable par la +macro \verb+\psSolid+. + +Un objet de type \textsl{plan\/} permet donc de décrire une portion de +plan affine orienté. Pour une définition complète d'un tel objet, il +nous faut une origine +$I$, une base vectorielle $(\vec u, \vec v)$ de ce +plan, une étendue sur l'axe $(I, \vec u)$ et une étendue sur l'axe +$(I, \vec v)$. +De plus, on pourra spécifier le maillage souhaité, autrement dit le +nombre de facettes utilisées pour représenter cette portion de plan +affine lors de la transformation en objet de type \textsl{solid}. + +Ce type d'objet peut être utilisé pour définir des sections +planes, et il est obligatoire pour définir un plan de projection. + +Son utilisation est transparente pour l'utilisateur PSTricks. La seule +chose à savoir, c'est que lorsque l'on manipule un +\verb+[object=plan]+ avec la macro \verb+\psSolid+, on manipule en +fait deux objets en même temps~: l'un de type \textsl{plan\/} et +l'autre de type \textsl{solid}. Et lorsque l'on demande une sauvegarde +de cet objet (voir le chapitre <<\textsl {Utilisation avancée}>>) sous +le nom $monplan$ par exemple avec l'option \verb+[name=monplan]+, ce +sont en fait $2$ sauvegardes qui sont effectuées. La première, sous le +nom $monplan$, est l'objet de type \textsl{plan}, et la deuxième, sous +le nom $monplan\_s$, est l'objet de type \textsl {solid}. + + +\subsection {Définir un plan orienté} + +Pour créer un tel objet, on utilise \Cadre{[object=plan]} qui +utilise plusieurs arguments~: + +\begin{itemize} + +\item \Cadre{[definition=...]} qui permet de spécifier la méthode + choisie pour définir le plan + +\item \Cadre{[args=...]} qui permet de spécifier les arguments + nécessaires à la méthode choisie précédemment + +\item \Cadre{[bases=$xmin$ $xmax$ $ymin$ $ymax$]} qui permet de + spécifier l'étendue sur chacun des axes. + +\item \Cadre{[phi]} (valeur $0$ par défaut) qui spécifie l'angle de + rotation (en degrés) du plan autour de sa normale après sa + définition première. + + +\end{itemize} + +\subsection {Options spécifiques} + +L'objet \verb+plan+ possède plusieurs options spécifiques d'affichage~: +\Cadre{[planmarks]} qui projette l'impression des axes et graduations, +\Cadre{[plangrid]} qui projette l'impression d'un quadrillage, +\Cadre{[showbase]} qui projette l'impression des vecteurs de base du +plan, et +\Cadre{[showBase]} (noter la majuscule) qui projette l'impression des +vecteurs de base du plan et qui dessine le vecteur normal associé. + +Ces options sont valables quelque soit le mode de définition choisi +pour le plan. + +\begin{center} +\psset{unit=0.4} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(6,4) +\psframe(-5,-4)(5,3) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, +] +\end{pspicture*} +%% +\psset{unit=1} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(6,4) +\psframe(-5,-4)(5,3) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + planmarks, +] +\end{pspicture*} +%% +\psset{unit=1} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(6,4) +\psframe(-5,-4)(5,3) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + plangrid, +] +\end{pspicture*} +%% +\psset{unit=1} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(6,4) +\psframe(-5,-4)(5,3) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + showbase, +] +\end{pspicture*} +%% +\psset{unit=1} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(6,4) +\psframe(-5,-4)(5,3) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + showBase, +] +\end{pspicture*} +%% +\psset{unit=1} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(6,4) +\psframe(-5,-4)(5,3) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + plangrid, + showBase, + action=none +] +\end{pspicture*} +\end{center} + +Ces options peuvent être utilisées, même si le plan n'est pas +représenté. + +\subsection {Définir un plan à partir d'une équation cartésienne} + +On appelle \textsl{équation cartésienne} d'un plan affine une équation +du type +\[ + ax+by+cz+d=0 +\] +La donnée des coefficients $a$, $b$, $c$ et $d$ permet de définir un +plan affine. + +\subsubsection {Utilisation avec l'orientation et l'origine par défaut} + +Pour définir un plan affine, on peut utiliser +\Cadre{[definition=equation]}, et \Cadre{[args=\{[$a$ $b$ $c$ +$d$]\}]}. L'orientation et l'origine du plan affine sont alors choisis +par le package. + +Par exemple, le quadruplet $(a, b, c, d) = (0, 0, 1, 0)$ désigne le +plan d'équation $z=0$~: + +\begin{multicols}{2} +%\begin{center} +\psset{unit=0.65} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(5,4) +\psframe(-5,-4)(5,4) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, +] +\axesIIID(0,0,0)(2.2,3.2,4) +\end{pspicture*} +%\end{center} + +\columnbreak + +\begin{verbatim} + \psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, + ] +\end{verbatim} +\end{multicols} + +Le paramètre \Cadre{[base=xmin xmax ymin ymax]} permet de spécifier +l'étendue sur chacun des axes. + +\subsubsection {Spécification de l'origine} + +Le paramètre \Cadre{[origine=$x_0$ $y_0$ $z_0$]} permet de spécifier +l'origine du plan affine. Si le point $(x_0, y_0, z_0)$ proposé ne +vérifie pas l'équation du plan, alors on ne tient pas compte de cette +origine. + +Par exemple, voici une représentation du plan d'équation $z=0$ pour +laquelle on a spécifié $(1, 2, 0)$ comme origine~: + +\begin{multicols}{2} +\psset{unit=0.65} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-4,-5.5)(6,4) +\psframe(-4,-5.5)(6,4) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + fillcolor=Aquamarine, + origine=1 2 0, + base=-2.2 2.2 -3.2 3.2, + planmarks, +] +\axesIIID(0,0,0)(2.2,3.2,4) +\end{pspicture*} + +\columnbreak + +\begin{verbatim} + \psSolid[object=plan, + definition=equation, + args={[0 0 1 0]}, + origine=1 2 0, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + planmarks, + ] +\end{verbatim} +\end{multicols} + + + +\subsubsection {Spécification de l'orientation} + +Si l'orientation proposée ne convient pas, on peut spécifier un angle +de rotation $\alpha $ (en degrés) autour de la normale avec la syntaxe +\Cadre{[args=\{[a b c d] $\alpha $\}]}. + +\begin{multicols}{2} + +\psset{unit=0.65} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(5,4) +\psframe(-5,-4)(5,4) +\psSolid[object=plan, + definition=equation, + args={[0 0 1 0] 90}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + planmarks, +] +\axesIIID(0,0,0)(3.2,2.2,4) +\end{pspicture*} + +\columnbreak +\begin{verbatim} + \psSolid[object=plan, + definition=equation, + args={[0 0 1 0] 90}, + fillcolor=Aquamarine, + base=-2.2 2.2 -3.2 3.2, + planmarks, + ] +\end{verbatim} +\end{multicols} + +\subsection {Définir un plan à partir d'un vecteur normal et d'un point} + +Il est possible de définir un plan affine à partir d'un point et d'un +vecteur normal. On utilise pour cela le paramètre +\Cadre{[definition=normalpoint]}. + +On peut ensuite préciser ou non l'orientation. + +\subsubsection {Méthode 1~: Sans préciser l'orientation} + +On utilise \Cadre{[args=\{$x_0$ $y_0$ $z_0$ [$a$ $b$ $c$]\}]} où $(x_0, +y_0, z_0)$ est l'origine du plan affine, et $(a, b, c)$ un vecteur normal à +ce plan. + +\begin{multicols}{2} + +\psset{unit=0.65} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(5,4) +\psframe(-5,-4)(5,4) +\psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [0 0 1]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, +] +\axesIIID(0,0,0)(2.2,3.2,4) +\end{pspicture*} + +\columnbreak + +\begin{verbatim} + \psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [0 0 1]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, + ] +\end{verbatim} +\end{multicols} + +\subsubsection {Méthode 2~: préciser un angle de rotation} + +On utilise \Cadre{[args=\{$x_0$ $y_0$ $z_0$ [$a$ $b$ $c$ $\alpha +$]\}]} où $(x_0, y_0, z_0)$ est l'origine du plan affine, $(a, b, +c)$ un vecteur normal à ce plan, et $\alpha $ l'angle de rotation (en +degrés) autour de l'axe normal. + +%\newpage + +\begin{multicols}{2} + +\psset{unit=0.65} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10, fontsize=10} +\begin{pspicture*}(-5,-4)(5,4) +\psframe(-5,-4)(5,4) +\psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [0 0 1 45]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, +] +\axesIIID(0,0,0)(2.2,3.2,4) +\end{pspicture*} + +\columnbreak + +\begin{verbatim} + \psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [0 0 1 45]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, + ] +\end{verbatim} +\end{multicols} + +\subsubsection {Méthode 3~: préciser le premier vecteur de la base} + +On utilise \Cadre{[args=\{$x_0$ $y_0$ $z_0$ [$u_x$ $u_y$ $u_z$ $a$ $b$ +$c$ ]\}]} où $(x_0, y_0, z_0)$ est l'origine du plan affine, +$(a, b, c)$ un vecteur normal à ce plan, et $(u_x, u_y, u_z)$ le +premier vecteur d'une base de ce plan. + +\begin{multicols}{2} + +\psset{unit=0.65} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(5,4) +\psframe(-5,-4)(5,4) +\psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [1 1 0 0 0 1]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, +] +\axesIIID(0,0,0)(2.2,3.2,4) +\end{pspicture*} + +\columnbreak + +\begin{verbatim} + \psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [1 1 0 0 0 1]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, + ] +\end{verbatim} +\end{multicols} + +\subsubsection {Méthode 4~: préciser le premier vecteur de la base et + un angle de rotation} + +On utilise \Cadre{[args=\{$x_0$ $y_0$ $z_0$ [$u_x$ $u_y$ $u_z$ $a$ $b$ +$c$ $\alpha $]\}]} où $(x_0, y_0, z_0)$ est l'origine du plan affine, +$(a, b, c)$ un vecteur normal à ce plan, et $(u_x, u_y, u_z)$ le +premier vecteur d'une base de ce plan, auquel on fait subir une +rotation de $\alpha $ (en degrés) autour de l'axe normal. + +\begin{multicols}{2} + +\psset{unit=0.65} +\psset{viewpoint=10 18 60 rtp2xyz,Decran=10,fontsize=10} +\begin{pspicture*}(-5,-4)(5,4) +\psframe(-5,-4)(5,4) +\psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [1 1 0 0 0 1 45]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, +] +\axesIIID(0,0,0)(2.2,3.2,4) +\end{pspicture*} + +\columnbreak + +\begin{verbatim} + \psSolid[object=plan, + definition=normalpoint, + args={0 0 0 [1 1 0 0 0 1 45]}, + fillcolor=Aquamarine, + planmarks, + base=-2.2 2.2 -3.2 3.2, + showbase, + ] +\end{verbatim} +\end{multicols} + +\subsection {Définition d'un plan à partir d'une face de solide} + +On utilise \Cadre{[definition=solidface]} avec les arguments +\Cadre{[args=$name$ $i$]} où $name$ est un nom désignant le solide et +$i$ est l'indice de la face considérée. On prend pour origine le +centre de la face considérée. + +Dans l'exemple ci-dessous, on définit le plan par la face d'indice $0$ +du cube nommé $A$. + +\begin{multicols}{2} + +\begin{pspicture*}(-4,-2)(4,2.3) +\psframe(-4,-2)(4,2.3) +\psset{viewpoint=10 18 20 rtp2xyz,Decran=10} +\psset{solidmemory} +\psSolid[object=cube,a=2,fontsize=20,numfaces=all,name=A] +\psSolid[object=plan, + definition=solidface, + args=A 0, + showBase, +] +\composeSolid +\end{pspicture*} + +\columnbreak + +\begin{verbatim} +\psset{solidmemory} +\psSolid[object=cube,a=2,fontsize=20,numfaces=all, + name=A] +\psSolid[object=plan, + definition=solidface, + args=A 0, + showBase, +] +\end{verbatim} +\end{multicols} + +Si l'utilisateur précise les coordonnées $(x, y, z)$ dans la macro +\verb+\psSolid[...](+$x,y,z$\verb+)+, alors le plan construit est +parallèle à la face d'indice $i$ du solide $name$, et il passe par le +point $(x, y, z)$ qui est pris pour origine. + +\begin{multicols}{2} + +\begin{pspicture*}(-4,-2)(4,3.5) +\psframe(-4,-2)(4,3.5) +\psset{viewpoint=10 18 25 rtp2xyz,Decran=10} +\psset{solidmemory} +\psSolid[object=cube,a=2,fontsize=20,numfaces=all,name=A] +\psSolid[object=plan, + definition=solidface, + args=A 0, + showBase, +](0,0,2) +\composeSolid +\end{pspicture*} + +\columnbreak + +\begin{verbatim} +\psset{solidmemory} +\psSolid[object=cube,a=2,fontsize=20,numfaces=all, + name=A] +\psSolid[object=plan, + definition=solidface, + args=A 0, + showBase, +](0,0,2) +\end{verbatim} +\end{multicols} + + +%% Le paramètre \verb+[base=+$x{min}$ ${x{max}}$ ${y{min}}$ +%% ${y{max}}$\verb+]+ permet de spécifier la taille de la grille. +%% +%% \begin{multicols}{2} +%% \psset{unit=1} +%% \psset{viewpoint=50 50 20 rtp2xyz,Decran=30} +%% \begin{pspicture}(-4,-2)(3,3) +%% \psframe(-4,-2)(3,3) +%% \psSolid[object=grille, +%% base=0 4 -3 3, +%% linecolor=gray](0,0,0) +%% \axesIIID(0,0,0)(4,3,3) +%% \end{pspicture} +%% +%% \columnbreak +%% +%% \begin{verbatim} +%% \psSolid[object=grille, +%% base=0 4 -3 3, +%% linecolor=gray](0,0,0) +%% \end{verbatim} +%% \end{multicols} +%% +%% Le paramètre \verb+[ngrid=+$n_1$ $n_2$\verb+]+ permet de spécifier le +%% maillage de la grille. Si $n_2$ est absent, on considère que $n_2 = +%% n_1$. +%% +%% Si $n_1$ est entier, il représente le nombre de mailles sur l'axe +%% $Ox$. S'il est réel, il représente le pas de maillage sur l'axe +%% $Ox$. Par exemple, le nombre codé \verb+1+ est entier, alors que celui +%% codé \verb+1.+ est réel (noter le point). +%% +%% +%% \begin{multicols}{2} +%% \psset{unit=1} +%% \psset{viewpoint=50 50 20 rtp2xyz,Decran=30} +%% \begin{pspicture}(-4,-2)(3,3) +%% \psframe(-4,-2)(3,3) +%% \psSolid[object=grille, +%% ngrid=1, +%% base=0 4 -3 3, +%% linecolor=gray](0,0,0) +%% \axesIIID(0,0,0)(3,3,3) +%% \end{pspicture} +%% +%% \columnbreak +%% +%% \begin{verbatim} +%% \psSolid[object=grille, +%% ngrid=1, +%% base=0 4 -3 3, +%% linecolor=gray](0,0,0) +%% \end{verbatim} +%% \end{multicols} +%% +%% \begin{multicols}{2} +%% \psset{unit=1} +%% \psset{viewpoint=50 50 20 rtp2xyz,Decran=30} +%% \begin{pspicture}(-4,-2)(3,3) +%% \psframe(-4,-2)(3,3) +%% \psSolid[object=grille, +%% ngrid=1. 1, +%% base=0 4 -3 3, +%% linecolor=gray](0,0,0) +%% \axesIIID(0,0,0)(3,3,3) +%% \end{pspicture} +%% +%% \columnbreak +%% +%% \begin{verbatim} +%% \psSolid[object=grille, +%% ngrid=1. 1, +%% base=0 4 -3 3, +%% linecolor=gray](0,0,0) +%% \end{verbatim} +%% \end{multicols} +%% +%% |