summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pst-solides3d/doc/par-plan.tex
diff options
context:
space:
mode:
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.tex612
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}
+%%
+%%