Initialisation du projet pst-solides3d.git (SVN revision 142)
[pst-solides3d.git] / doc / par-geode.tex
1 \section {Les géodes et leurs duales}
2
3 \subsection{Présentation mathématique}
4
5 D'excellentes études sur les géodes et leurs duales sont disponibles
6 sur les sites suivants~:
7
8 \centerline{\url{http://fr.wikipedia.org/wiki/G\%C3\%A9ode}}
9
10 Le paramétrage d'une géode est fidèle aux indications de la page :
11
12 \centerline{\url{http://hypo.ge-dip.etat-ge.ch/www/math/html/amch104.html}}
13
14 << \textit{On peut définir une géode à partir de deux paramètres : un
15 numéro $N$ indiquant le type de polyèdre initial ($N = 3$ pour le
16 tétraèdre, $N = 4$ pour l'octaèdre et $N = 5$ pour l'icosaèdre) et
17 un nombre $n$ indiquant le nombre de divisions le long de l'arête.}
18 >>
19
20 L'article \textit{Indexing the Sphere with the Hierarchical Triangular Mesh}
21 décrit une méthode permettant d'obtenir une représentation des géodes :
22
23 \centerline{\url{http://research.microsoft.com/research/pubs/view.aspx?msr_tr_id=MSR-TR-2005-123}}
24
25 \subsection{Construction avec pst-solides3d}
26
27 Deux approches sont possibles pour construire une géode ou sa duale~:
28 soit \textsl{via\/} \verb+\codejps+, soit en utilisant les objets de
29 \verb+\psSolid+.
30
31 Pour une géode, les codes
32 \begin{gbar}
33 \begin{verbatim}
34 \codejps{N n newgeode drawsolid**}
35 \end{verbatim}
36 \end{gbar}
37 et
38 \begin{gbar}
39 \begin{verbatim}
40 \psSolid[object=geode,ngrid=N n]
41 \end{verbatim}
42 \end{gbar}
43 sont équivalents. Et pour sa duale, les codes
44 Pour une géode, les codes
45 \begin{gbar}
46 \begin{verbatim}
47 \codejps{N n newdualgeode drawsolid**}
48 \end{verbatim}
49 \end{gbar}
50 et
51 \begin{gbar}
52 \begin{verbatim}
53 \psSolid[object=geode,dualreg,ngrid=N n]
54 \end{verbatim}
55 \end{gbar}
56 sont équivalents.
57 \subsection{Quelques exemples de géodes et de duales}
58 \begin{LTXexample}[pos=t]
59 \psset{viewpoint=50 -20 30 rtp2xyz,Decran=100}
60 \begin{pspicture}(-3,-3)(3,3)
61 \psframe(-3,-3)(3,3)
62 \psSolid[object=geode,
63 ngrid=5 0]
64 %\codejps{5 0 newgeode drawsolid**}
65 \psframe*(-2,-2.8)(2,-2.2)
66 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}}
67 \end{pspicture}
68 \hfill
69 \begin{pspicture}(-3,-3)(3,3)
70 \psframe(-3,-3)(3,3)
71 \psSolid[object=geode,
72 dualreg,
73 ngrid=5 0]
74 %\codejps{5 0 newdualgeode drawsolid**}
75 \psframe*(-2,-2.8)(2,-2.2)
76 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}}
77 \end{pspicture}
78 \end{LTXexample}
79
80 \begin{LTXexample}[pos=t]
81 \psset{viewpoint=50 -20 30 rtp2xyz,Decran=100}
82 \begin{pspicture}(-3,-3)(3,3)
83 \psframe(-3,-3)(3,3)
84 \psSolid[object=geode,
85 ngrid=5 1]
86 %\codejps{5 1 newgeode drawsolid**}
87 \psframe*(-2,-2.8)(2,-2.2)
88 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}}
89 \end{pspicture}
90 \hfill
91 \begin{pspicture}(-3,-3)(3,3)
92 \psframe(-3,-3)(3,3)
93 \psSolid[object=geode,
94 dualreg,
95 ngrid=5 1]
96 %\codejps{5 1 newdualgeode drawsolid**}
97 \psframe*(-2,-2.8)(2,-2.2)
98 \rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}}
99 \end{pspicture}
100 \end{LTXexample}
101
102 \subsection{Les paramètres des géodes}
103
104 Le rayon de la sphère est fixé à 1, pour augmenter la taille des
105 géodes on jouera sur l'un ou l'autre des deux paramètres suivants~:
106 \begin{itemize}
107 \item l'unité : \verb+\psset{unit=2}+
108 \item la position de l'écran :
109 \verb+viewpoint=50 -20 30,Decran=100+, si la distance de l'écran
110 est deux fois plus grande que la distance
111 à laquelle se trouve l'observateur l'échelle de la scène est multipliée par~2.
112 \end{itemize}
113
114 \encadre{En jps, le paramétrage s'effectue pour
115 la géode dans le \textbackslash{}codejps\{\textbf{N n newgeode}\} et
116 pour sa duale dans \textbackslash{}codejps\{\textbf{N n
117 newdualgeode}\}.}
118
119 \encadre{Avec \textbackslash{}psSolid, les paramètres $N$ et $n$ sont transmis
120 via l'argument \texttt{ngrid}}
121
122 Les options de couleurs et de transparence sont bien sûr possibles avec les géodes.
123
124 \begin{LTXexample}[pos=t]
125 \psset{unit=2}
126 \psset{viewpoint=50 -20 30 rtp2xyz,Decran=100,linewidth=2pt}
127 \begin{pspicture}(-3,-3)(3,3)
128 \psframe*(-3,-3)(3,3)
129 \codejps{
130 /geode42{4 2 newdualgeode} def
131 .7 setfillopacity
132 orange
133 /geodetransparente{
134 geode42
135 dup videsolid
136 dup (orange) inputcolors
137 dup [.1 .9] solidputhuecolors} def
138 geodetransparente
139 drawsolid**}
140 \end{pspicture}
141 \end{LTXexample}
142
143 \subsection{Conseils pour la construction `rapide' des géodes}
144
145 Le temps de calcul des géodes et de leurs duales dépend du nombre de
146 divisions sur une arête (le deuxième paramètre $n$) et il devient
147 rapidement très grand, ce qui est vraiment une gêne lorsqu'on est
148 obligé d'attendre, plus ou moins patiemment, le résultat de la
149 transformation \Cadre{dvips->ps2pdf}.
150
151 Comme pour tous les autres solides, il est possible de sauvegarder la
152 structure calculée dans des fichiers externes, ce qui permettra un
153 gain de temps appréciable si on doit faire des essais de couleurs ou
154 de point de vue.
155
156 Il faut opérer en deux étapes :
157
158 \subsubsection {Sauvegarde en fichier \texttt{.dat} des paramètres de la géode}
159
160 \begin{verbatim}
161 \documentclass{article}
162 \usepackage{pst-solides3d}
163 \begin{document}
164 \codejps{
165 4 4 newdualgeode
166 dup {[.5 .6]} exec solidputhuecolors
167 (geodedual44) writesolidfile
168 }
169 \end{document}
170 \end{verbatim}
171 \Cadre{LaTeX->dvips->GSview (Windows)ou gv (Linux)}
172
173 Cette dernière opération va créer 4 fichiers :
174 \begin{itemize}
175 \item \texttt{geodedual44-couleurs.dat} -> les couleurs des faces ;
176 \item \texttt{geodedual44-faces.dat} -> la liste des faces ;
177 \item \texttt{geodedual44-sommets.dat} -> la liste des sommets ;
178 \item \texttt{geodedual44-io.dat} -> le nombre de faces et de sommets.
179 \end{itemize}
180
181 \encadre{Par défaut, sous Windows et Linux, la protection des fichiers
182 du disque dur est activée et ne permet donc pas l'écriture sur le
183 disque. Pour désactiver cette protection, tout au moins
184 temporairement, voici les deux procédures correspondantes :
185
186 \begin{description}
187
188 \item[Linux : ] le conseil de Jean-Michel Sarlat : le plus
189 simple est donc d'utiliser ghostscript directement, en console. Comme
190 il n'y a rien à attendre comme image :
191
192 \$> gs -dNOSAFER lissatest.ps quit.ps
193 \item[Windows : ] dans le menu \textsf{Options}, l'option \textsf{Protection des fichiers} ne doit pas être cochée.
194 \end{description}}
195
196 \subsubsection {Lecture des données et dessin de la géode}
197
198 %% \begin{LTXexample}[pos=t]
199 %% \psset{unit=2}
200 %% \psset{lightsrc=10 0 10,viewpoint=50 -20 30 rtp2xyz,Decran=100}
201 %% \begin{pspicture}(-2,-2)(2,2)
202 %% \psframe(-2,-2)(2,2)
203 %% \psSolid[object=datfile,file=geodedual44]
204 %% \end{pspicture}
205 %% \end{LTXexample}
206
207 L'avantage de cette méthode vous paraîtra plus évident en faisant la
208 comparaison suivante : compilation de deux fichiers qui produisant le
209 même résultat avec les deux méthodes en concurrence.
210
211 Le fichier \texttt{geode42\_direct.tex} fait le calcul du solide et
212 son affichage. Le fichier \texttt{geode42\_precalcul.tex} utilise les
213 fichiers \texttt{.dat} de données pré-calculées par
214 \texttt{calc\_geode42.tex}. Ces trois fichiers sont inclus dans la documentation.
215
216 \subsection{D'autres exemples}
217 Vous trouverez de nombreux autres exemples de géodes sur la page :
218
219 \centerline{\url{http://melusine.eu.org/lab/bpst/pst-solides3d/geodes}}
220

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.