Retour

geode-doc.tex

Télécharger le fichier Fichier PDF
\documentclass{article}
\usepackage{pst-solides3d}
%\usepackage{pst-eucl,pst-map3d}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[garamond]{mathdesign}
\renewcommand{\ttdefault}{lmtt}
%\definecolor{darkblue}{rgb}{0,0,0.5}
%\usepackage[hyperfootnotes=false,
%              colorlinks,urlcolor=darkblue,linkcolor=black]%
%             {hyperref}
\usepackage[colorlinks=true]{hyperref}
\usepackage[a4paper]{geometry}
\usepackage{showexpl}
\usepackage[french]{babel}
\newcommand\Cadre[1]{\psframebox[fillstyle=solid,fillcolor=yellow,linecolor={[cmyk]{0,0,1,0.1}}]{\texttt{#1}}}
\newcommand\encadre[1]{\begin{center}
\psframebox[fillstyle=solid,fillcolor=green!33,linecolor=green,linewidth=0.5mm]{
  \begin{minipage}{0.95\textwidth}
  {#1}
  \end{minipage}}
  \end{center}}
\title{\texttt{pst-solides3d} :\\
       les géodes et leurs duales}
\date{\today }
\begin{document}
\maketitle
\tableofcontents
\section{Présentation mathématique}
D'excellentes études sur les géodes et leurs duales sont disponibles sur les sites suivants~:
 
\centerline{\url{http://fr.wikipedia.org/wiki/G\%C3\%A9ode}}
 
Le paramétrage d'une géode est fidèle aux indications de la page :
 
\centerline{\url{http://hypo.ge-dip.etat-ge.ch/www/math/html/amch104.html}}
 
<< \textit{On peut définir une géode à partir de deux paramètres : un numéro $N$ indiquant le type de polyèdre initial ($N = 3$ pour le tétraèdre, $N = 4$ pour l'octaèdre et $N = 5$ pour l'icosaèdre) et un nombre $n$ indiquant le nombre de divisions le long de l'arête.}
>>
 
L'article \textit{Indexing the Sphere with the Hierarchical Triangular Mesh}
décrit une méthode permettant d'obtenir une représentation des géodes :
 
\centerline{\url{http://research.microsoft.com/research/pubs/view.aspx?msr_tr_id=MSR-TR-2005-123}}
\section{Quelques exemples de géodes et de duales}
\begin{LTXexample}[pos=t]
\psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100}
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\codejps{5 0 newgeode drawsolid**}
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}}
\end{pspicture}
\hfill
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\codejps{5 0 newdualgeode drawsolid**}
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=0}}}
\end{pspicture}
\end{LTXexample}
 
\begin{LTXexample}[pos=t]
\psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100}
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\codejps{5 1 newgeode drawsolid**}
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}}
\end{pspicture}
\hfill
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\codejps{5 1 newdualgeode drawsolid**}
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}}
\end{pspicture}
\end{LTXexample}
 
\section{Les paramètres des géodes}
Le rayon de la sphère est fixé à 1, pour augmenter la taille des géodes on jouera sur l'un ou l'autre des deux paramètres suivants~:
\begin{itemize}
  \item l'unité : \verb+\psset{unit=2}+
  \item la position de l'écran : \verb+viewpoint=50 -20 30,Decran=100+, si la distance de l'écran est deux fois plus grande que la distance
  à laquelle se trouve l'observateur l'échelle de la scène est multipliée par~2.
\end{itemize}
\encadre{De façon simple, le paramétrage de la géode s'effectue pour la géode dans le \textbackslash{}codejps\{\textbf{N n newgeode}\} et pour sa duale dans \textbackslash{}codejps\{\textbf{N n newdualgeode}\}.}
 
Les options de couleurs et de transparence sont bien sûr possibles avec les géodes.
 
\begin{LTXexample}[pos=t]
\psset{unit=2}
\psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100,linewidth=2pt}
\begin{pspicture}(-3,-3)(3,3)
\psframe*(-3,-3)(3,3)
\codejps{
/geode42{4 2 newdualgeode} def
.7 setfillopacity
orange
/geodetransparente{
geode42
dup videsolid
dup (orange) inputcolors
dup [.1 .9] solidputhuecolors} def
geodetransparente
drawsolid**}
\end{pspicture}
\end{LTXexample}
 
\section{Conseils pour la construction `rapide' des géodes}
Le temps de calcul des géodes et de leurs duales dépend du nombre de divisions sur une arête (le deuxième paramètre $n$) et il devient rapidement très grand, ce qui est vraiment une gêne lorsqu'on est obligé d'attendre, plus ou moins patiemment, le résultat de la transformation \Cadre{dvips->ps2pdf}.
 
Heureusement pour que cette durée ne soit pas rédhibitoire, le concepteur du code \textsf{postscript} du package, Jean-Paul Vignault, a prévu la possibilité de stocker dans des fichiers tous les paramètres nécessaires à la construction des géodes souhaitées ou bien utilisées fréquemment sans avoir, une fois cette opération faite, besoin de les calculer à nouveau et le gain de temps est alors très appréciable~!
 
Il faut opérer en deux étapes :
\subsection {Sauvegarde en fichier \texttt{.dat} des paramètres de la géode}
\begin{verbatim}
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\codejps{
4 4 newdualgeode
 dup {[.5 .6]} exec solidputhuecolors
(geodedual44) writesolidfile
}
\end{document}
\end{verbatim}
\Cadre{LaTeX->dvips->GSview (Windows)ou gv (Linux)}
 
Cette dernière opération va créer 4 fichiers  :
\begin{itemize}
  \item \texttt{geodedual44.dat} -> les couleurs des faces ;
  \item \texttt{geodedual44.dat} -> la liste des faces ;
  \item \texttt{geodedual44.dat} -> la liste des sommets ;
  \item \texttt{geodedual44-io.dat} -> le nombre de faces et de sommets.
\end{itemize}
 
\encadre{Par défaut, sous Windows et Linux, la protection des fichiers du disque dur est activée et ne permet donc pas l'écriture sur le disque. Pour désactiver cette protection, tout au moins temporairement, voici les deux procédures correspondantes :
\begin{description}
  \item[Linux : ] le conseil de Jean-Michel Sarlat : le plus
simple est donc d'utiliser ghostscript directement, en console. Comme
il n'y a rien à attendre comme image :
 
\$> gs  -dNOSAFER  lissatest.ps quit.ps
  \item[Windows : ] dans le menu \textsf{Options}, l'option \textsf{Protection des fichiers} ne doit pas être cochée.
\end{description}}
\subsection {Lecture des données et dessin de la géode}
\begin{LTXexample}[pos=t]
\psset{unit=2}
\psset{lightsrc=10 0 10,SphericalCoor=true,viewpoint=50 -20 30,Decran=100}
\begin{pspicture}(-2,-2)(2,2)
\psframe(-2,-2)(2,2)
\psSolid[object=datfile,file=geodedual44]
\end{pspicture}
\end{LTXexample}
 
L'avantage de cette méthode vous paraîtra plus évident en faisant la comparaison suivante : compilation de deux fichiers qui produisant le même résultat avec les deux méthodes en concurrence.
 
Le fichier \texttt{geode42\_direct.tex} fait le calcul du solide et son affichage. Le fichier \texttt{geode42\_precalcul.tex} utilise les fichiers \texttt{.dat} de données pré-calculées par \texttt{calc\_geode42.tex}.
\section{D'autres exemples}
\begin{LTXexample}[pos=t]
\psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100}
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\psSolid[object=datfile,file=geode51]
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}}
\end{pspicture}
\hfill
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\psSolid[object=datfile,file=geodedual51]
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=1}}}
\end{pspicture}
\end{LTXexample}
 
\begin{LTXexample}[pos=t]
\psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100}
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\psSolid[object=datfile,file=geode52]
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=2}}}
\end{pspicture}
\hfill
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\psSolid[object=datfile,file=geodedual52]
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=2}}}
\end{pspicture}
\end{LTXexample}
 
\begin{LTXexample}[pos=t]
\psset{SphericalCoor=true,viewpoint=50 -20 30,Decran=100}
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\psSolid[object=datfile,file=geode53]
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=3}}}
\end{pspicture}
\hfill
\begin{pspicture}(-3,-3)(3,3)
\psframe(-3,-3)(3,3)
\psSolid[object=datfile,file=geodedual53]
\psframe*(-2,-2.8)(2,-2.2)
\rput(0,-2.5){\textcolor{white}{\textsf{N=5 n=3}}}
\end{pspicture}
\end{LTXexample}
\end{document}