\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\usepackage{pstcol}
\usepackage{pst-R3D}
\input realcalc
\usepackage{trig}
\usepackage{multido}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}\SpecialCoor
\definecolor{Beige} {rgb}{0.96,0.96,0.86}
\title{Compléments théoriques\\
pour PST-MIRROR}
\author{\shortstack{Manuel \textsc{Luque}}}
\date{11 août 2002}
\begin{document}
\maketitle
\begin{center}
\begin{minipage}{0.8\textwidth}
\begin{center}
Résumé
\end{center}
Pour illustrer ces compléments, j'utilise le package \textsf{PST-R3D}
qui est une adaptation, que j'ai faite, de \textsf{PST-3D} à la perspective cavalière. Dans ce package Timothy Van Zandt
avait eu l'idée très
ingénieuse de construire la \textsf{matrice de transformation courante~:~CTM} de
\texttt{PostScript} à partir des formules de transformation permettant de
représenter en projection parallèle dans une direction donnée par les
coordonnées de $\mathtt{[viewpoint=p_x p_y p_z]}$ un plan défini par une normale
à ce plan $\mathtt{[normal= n_x n_y n_z]}$ et un point origine appartenant à ce
plan.
J'ai repris cette idée dans \textsf{PST-R3D}, et bien sûr dans ce
qui nous intéresse~:~la vison d'un objet dans une boule-miroir,
c'est-à-dire dans le package \textsf{PST-MIRROR}, pour le cas particulier de la définition d'un plan.
\end{minipage}
\end{center}
\section*{Formules de transformation}
\begin{minipage}{.4\textwidth}
Formules permettant de passer du repère ($O,\overrightarrow{I},\overrightarrow{J},\overrightarrow{K}$)
au repère ($O,\overrightarrow{i},\overrightarrow{j},\overrightarrow{k}$)\\
$\overrightarrow{K}$ représentera la normale au plan que l'on souhaite
dessiner en perspective cavalière. Ce vecteur $\overrightarrow{K}$ est défini
par la longitude $\theta$ et la latitude $\varphi$.
Dans ($O,\overrightarrow{i},\overrightarrow{j},\overrightarrow{k}$)
$$\overrightarrow{K}=\left( \begin{array}{c}
\cos\varphi\cos\theta\\
\cos\varphi\sin\theta\\
\sin\varphi
\end{array}
\right)$$
Il faut ensuite choisir les deux autres vecteurs de la base
($\overrightarrow{I},\overrightarrow{J},\overrightarrow{K}$). Je choisis de
garder $\overrightarrow{I}$ dans le plan $Oxy$.
\end{minipage}
\hfill
\begin{minipage}{0.5\textwidth}
\begin{pspicture}(-3,-3)(5,4.5)
\perspective[normale=-90 0]{\psline[linewidth=2\pslinewidth]{->}(4,0)\uput[90](4,0){\scalebox{-1 1}{$\overrightarrow{i}$}}\psline[linestyle=dashed]{->}(4,0)\uput[0](4,0){\scalebox{-1 1}{$x$}}}
\perspective[normale=0 0]{\psline[linewidth=2\pslinewidth]{->}(0,4)\uput[0](0,4){$\overrightarrow{k}$}\psline[linestyle=dashed]{->}(0,4)\uput[180](0,4){$z$}}
\perspective[normale=0 0]{\psline[linewidth=2\pslinewidth]{->}(5,0)\uput[90](5,0){$\overrightarrow{j}$}\psline[linestyle=dashed]{->}(5,0)\uput[0](5,0){$y$}}
\perspective[normale=0 90](0,0,0){\psline[linestyle=dotted](5;-30)\uput[0](5;-30){$x'$}\psframe(!2 sqrt 30 cos mul 2 mul 2 sqrt neg)\psarc{->}(0,0){2}{-90}{-30}\uput[0](2.2;-60){$\theta$}}
\perspective[normale=-30 0]{\psframe(!2 2 sqrt mul 2 2 sqrt mul)\psline[doubleline=true,linecolor=red]{->}(!2 2 sqrt mul 2 2 sqrt mul)\uput[90](!2 2 sqrt mul 2 2 sqrt
mul){$\red \overrightarrow{K}$}\psarc{->}(0,0){2}{0}{45}\uput[0](2;30){$\varphi$}}
\end{pspicture}
\end{minipage}
Vu de dessus, dans le plan $Oxy$ :
\begin{minipage}{.4\textwidth}
$$\overrightarrow{I}=\left( \begin{array}{c}
\hphantom{-}\sin\theta\\
-\cos\theta\\
0
\end{array}
\right)$$
\end{minipage}
\hfill
\begin{minipage}{0.5\textwidth}
\begin{pspicture}(-3,-4)(4,2)
\psline{->}(4,0)
\uput[0](4,0){$y$}
\psline[linestyle=dashed](0,2)
\psline{->}(0,-3.5)
\uput[270](0,-3.5){$x$}
\uput[135](0,0){O}
{\psset{linewidth=2\pslinewidth}
\psline{->}(0,-2)
\uput[0](0,-2){$\overrightarrow{i}$}
\psline{->}(2,0)
\uput[90](2,0){$\overrightarrow{j}$}
\psline[linestyle=dotted](3;-30)
\uput[0](3;-30){$x'$}
\psline[linecolor=red,doubleline=true]{->}(-2;60)
\uput[0](-2;60){$\red \overrightarrow{I}$}
}
\psarc{->}(0,0){1.5}{-90}{-30}\uput[0](1.6;-60){$\theta$}
\end{pspicture}
\end{minipage}
Il reste à trouver $\overrightarrow{J}$ pour que la base
($\overrightarrow{I},\overrightarrow{J},\overrightarrow{K}$) soit directe :
$\overrightarrow{J}=\overrightarrow{K}\times\overrightarrow{I}$
$$\overrightarrow{J}=\left(\begin{array}{c}
\cos\varphi\cos\theta\\
\cos\varphi\sin\theta\\
\sin\varphi
\end{array}
\right)
\times
\left(
\begin{array}{c}
\hphantom{-}\sin\theta\\
-\cos\theta\\
0
\end{array}
\right)
=
\left(\begin{array}{c}
\sin\varphi\cos\theta\\
\sin\varphi\sin\theta\\
-\cos\varphi
\end{array}
\right)
$$
La matrice de transformation :
$$A=\left( \begin{array}{ccc}
\hphantom{-}\sin\theta&\sin\varphi\cos\theta&\cos\varphi\cos\theta\\
-\cos\theta&\sin\varphi\sin\theta&\cos\varphi\sin\theta\\
0&-\cos\varphi&\sin\varphi
\end{array}
\right)$$
permet de déterminer les coordonnées ($x,y,z$) d'un point M si on connaît ses
coordonnées $(X,Y,Z)$ dans le repère
($O,\overrightarrow{I},\overrightarrow{J},\overrightarrow{K}$).
$$\left(\begin{array}{c}
x\\
y\\
z
\end{array}
\right)
=\left( \begin{array}{ccc}
\hphantom{-}\sin\theta&\sin\varphi\cos\theta&\cos\varphi\cos\theta\\
-\cos\theta&\sin\varphi\sin\theta&\cos\varphi\sin\theta\\
0&-\cos\varphi&\sin\varphi
\end{array}
\right)
\left(\begin{array}{c}
X\\
Y\\
Z
\end{array}
\right)
$$
$$\left\lbrace\begin{array}{cccclcl}
x&=&\hphantom{-}X\sin\theta&+&Y\sin\varphi\cos\theta&+&Z\cos\varphi\cos\theta\\
y&=&-X\cos\theta&+&Y\sin\varphi\sin\theta&+&Z\cos\varphi\sin\theta\\
z&=&&&-Y\cos\varphi&+&Z\sin\varphi
\end{array}
\right.
$$
Si l'on considère un point du plan appartenant au plan $XOY$ ($Z=0$):
$$\left\lbrace\begin{array}{ccccl}
x&=&\hphantom{-}X\sin\theta&+&Y\sin\varphi\cos\theta\\
y&=&-X\cos\theta&+&Y\sin\varphi\sin\theta\\
z&=&&&-Y\cos\varphi
\end{array}
\right.
$$
Et si maintenant, ce repère $OXYZ$ est translaté en un point
$O'(x_{O'},y_{O'},z_{O'})$
$$\left\lbrace\begin{array}{cccclcl}
x&=&\hphantom{-}X\sin\theta&+&Y\sin\varphi\cos\theta&+&x_{O'}\\
y&=&-X\cos\theta&+&Y\sin\varphi\sin\theta&+&y_{O'}\\
z&=&&&Y\cos\varphi&+&z_{O'}
\end{array}
\right.
$$
Ce sont ces formules que j'ai utilisées pour définir, les cercles
et les rectangles.
\end{document}