???
[pst-anamorphosis.git] / doc / pst-anamorphosis-doc-part2.tex
1 \listfiles
2 \documentclass[a4paper,fleqn]{article}
3 \usepackage[utf8]{inputenc}
4 \usepackage[T1]{fontenc}
5 \usepackage{amsmath,amssymb}
6 \usepackage[frenchb]{babel}
7 %\usepackage{mathptmx}
8 \usepackage[charter]{mathdesign}
9 \usepackage[margin=2.5cm]{geometry}
10 \usepackage{multicol}
11 \usepackage{listings}
12 \usepackage[svgnames]{xcolor}
13 \usepackage{showexpl}
14 \usepackage[nomessages]{fp}
15 \usepackage{xspace}
16 \usepackage{pst-plot,pst-solides3d,pst-anamorphosis-add,pst-3d}
17 \usepackage{pst-grad}
18 \usepackage[absolute,notitlepage]{pst-abspos}
19 \usepackage{url}
20
21 \psset{path=C:/Dokumente und Einstellungen/Besitzer/Desktop/bergen/bergen/}
22 %\def\epsRoot{C:/Dokumente und Einstellungen/Besitzer/Desktop/bergen/bergen/}
23
24 \renewcommand{\ttdefault}{lmtt}
25
26 \definecolor{syracuseGRIS}{HTML}{C1C1C1}
27 \definecolor{syracuseVERT}{HTML}{029235}
28
29 \definecolor{sepia}{rgb}{1,0.8,0.8}
30 \definecolor{grisclair}{rgb}{0.8,0.8,0.8}
31 \definecolor{BleuCiel}{cmyk}{0.2,0,0,0}
32 \definecolor{OrangePale}{cmyk}{0,0.2,0.4,0}
33
34 \lstset{%
35 language=[LaTeX]TeX,%
36 float=hbp,%
37 basicstyle=\ttfamily\small, %
38 texcsstyle=*\color{blue},%
39 identifierstyle=\color{black}, %
40 keywordstyle=\color{syracuseVERT}, %
41 otherkeywords={$, \{, \}, \[, \]},
42 stringstyle=\color{syracuseVERT}, %
43 commentstyle=\color{syracuseVERT}, %
44 backgroundcolor=\color{syracuseGRIS!30},%
45 columns=flexible, %
46 tabsize=4, %
47 frame=single, %
48 %frame=shadowbox, %
49 %rulesepcolor=\color{syracuseGRIS!30},%
50 extendedchars=true, %
51 showspaces=false, %
52 showstringspaces=false, %
53 numbers=left,
54 numbersep=0.8em,
55 numberstyle=\tiny, %
56 breaklines=true, %
57 breakautoindent=true,%
58 captionpos=b,%
59 xleftmargin=1em,%
60 sensitive=true,%
61 morekeywords=[6]{pspicture,center},%
62 keywordstyle=[6]\color{FireBrick},%
63 %morekeywords=[7]{(,)},%
64 %keywordstyle=[7]\color{syracuseVERT}
65 }
66
67 \renewcommand{\lstlistingname}{Source}
68 \renewcommand{\labelitemi}{$\bullet$}
69
70
71 \newcommand\cs[1]{\texttt{\char`\\#1}}
72 \newcommand\file[1]{\texttt{#1}}
73
74 \parindent0pt
75 \parskip5pt
76
77 \def\syracuseTitle{Les anamorphoses : liste des macros et des options}
78 %\def\syracuseGraphic{eiffel2}
79
80
81 \begin{document}
82
83 %% === BEGIN == Page de garde =================================================
84
85 \thispagestyle{empty}
86
87 \pstPutAbs(0,-29.7){%
88 \begin{pspicture}(0,0)(21,29.7)
89 \pspolygon[fillstyle=solid,linecolor=syracuseVERT,fillcolor=syracuseVERT](0,0)(10.5,14.85)(21,0)
90 \pspolygon[fillstyle=solid,linecolor=syracuseGRIS,fillcolor=syracuseGRIS](0,0)(21,29.7)(0,29.7)
91 \pspolygon[fillstyle=solid,linecolor=syracuseGRIS!50,fillcolor=syracuseGRIS!50](21,0)(10.5,14.85)(21,29.7)
92 \end{pspicture}
93 }
94 \pstPutAbs(2.5,-3.75){%
95 \includegraphics[scale=1]{pst-anamorphosis}
96 }
97 \pstPutAbs(2.5,-5.25){%
98 \LARGE \textbf{\syracuseTitle}
99 }
100 \pstPutAbs(2.5,-13.5){%
101 \begin{pspicture}(0,0)(8,8)
102 \rput(4,4){\includegraphics[height=8cm]{eiffel}}
103 %\rput(4,4){\includegraphics[height=8cm]{\syracuseGraphic}}
104 %\psframe(0,0)(8,8)
105 \end{pspicture}
106 }
107 \pstPutAbs(12.5,-15){%
108 \parbox{0.4\textwidth}{\Large\raggedleft
109 {\LARGE\textbf{Contributeurs}}\\[0.2cm]
110 J\"{u}rgen \textsc{Gilg}\\
111 Manuel \textsc{Luque}\\
112 Jean-Michel \textsc{Sarlat}
113 }}
114 \vfill
115 \begin{center}
116 \textcolor{white}{\textbf{\today}}\\[0.3cm]
117 \textcolor{white}{\url{http://melusine.eu.org/syracuse/G/pst-anamorphosis/}}\\
118 \includegraphics[scale=0.4]{logo_syracuse}
119 \end{center}
120
121 %% == END == Page de garde ====================================================
122
123 \newpage
124
125
126
127 \begin{abstract}
128 Le package `\textsf{pst-anamorphosis}' est compos\'{e}, actuellement, de \mbox{deux~parties~:}
129 \begin{itemize}
130 \item `\textsf{pst-anamorphosis}' qui permet d'afficher l'anamorphose d'un fichier au format \textsf{.eps} ;
131 \item `\textsf{pst-anamorphosis-add}' qui est son compl\'{e}ment et qui adapte certaines macros de \textsf{PSTricks} comme \verb+\psline+ et d'autres d\'{e}taill\'{e}es par la suite, au trac\'{e} d'anamorphoses personnelles dessin\'{e}es avec ces commandes. De plus, cette partie permet l'affichage de texte anamorphos\'{e} et de dessins au format \textsf{.pst} c'est-\`{a}-dire compos\'{e} de commandes \textsf{PSTricks}.
132 \end{itemize}
133 Ce package permet de calculer et dessiner les images anamorphiques planes obtenues par les anamorphoses suivantes :
134 \begin{enumerate}
135 \item cylindrique ;
136 \item conique ;
137 \item sph\'{e}rique ;
138 \item perspective ;
139 \item perspective invers\'{e}e.
140 \end{enumerate}
141 \end{abstract}
142
143
144 \section{\textbackslash{}psanamorphosis}
145 \verb+\psanamorphosis[options](x,y){fichier.eps}+ dessine l'image et l'image anamorphique au point de coordonn\'{e}es $(x,y)$. Si les coordonn\'{e}es ne sont pas pr\'{e}cis\'{e}es l'origine est $(0,0)$.
146
147 Les \textbf{options}, avec leurs valeurs par d\'{e}faut :
148 \begin{itemize}
149 \item Le type d'anamorphose \textsf{[type=cylindrical] }, voici les autres :
150 %
151 \begin{itemize}
152 \item \textsf{conical}
153 \item \textsf{spherical}
154 \item \textsf{perspective}
155 \item \textsf{inverseperspective}
156 \end{itemize}
157 %
158 \item le rayon du cylindre, de la sph\`{e}re et de la base du c\^{o}ne : \textsf{Rmirror=3} ;
159 \item la hauteur du c\^{o}ne, la cote du sommet : \textsf{Zs=5}
160 \item l'abscisse de l'observateur (du point de vue, d'o\`{u} la lettre \textsf{v}) : \textsf{Xv=0} ;
161 \item l'ordonn\'{e}e de l'observateur : \textsf{Yv=-10} ;
162 \item la cote de l'observateur : \textsf{Zv=10} ;
163 \item l'ordonn\'{e}e du point de fuite principal $F$ : \textsf{F=10} ;
164 \item la distance de $F$ \`{a} $F'$ : \textsf{D=4} ;
165 \item l'unit\'{e} du quadrillage ou plut\^{o}t le demi-c\^{o}t\'{e} du carr\'{e} : \textsf{ua=2}.
166 \item Un bool\'{e}en \textsf{[drawanamorphosis=true]} qui dessine l'image anamorphique et qui positionn\'{e} \`{a} \textsf{[false]} permet de faire des essais de dimensions et de cadrage par rapport au \textit{cercle} de base du miroir ;
167 \item un facteur d'\'{e}chelle \textsf{[scale=1 1]} suivant $x$ et $y$ pour adapter les dimensions de l'image au miroir.
168 \item Une option permettant de choisir, \'{e}ventuellement, le chemin du r\'{e}pertoire contenant les images au format eps :\textsf{[path=]}, il est vide par d\'{e}faut, ce qui implique que les images sont dans le m\^{e}me r\'{e}pertoire que le fichier de travail. Il faut signaler une particularit\'{e} li\'{e}e \`{a} l'interpr\'{e}teur postscript, que ce soit sous Windows ou Linux il ne doit pas comporter de \textbackslash{}. On pourra utiliser par exemple :
169
170 \verb+\psset{path=C:/Dokumente und Einstellungen/Besitzer/Desktop/workfolder/}+
171 \end{itemize}
172
173
174 \section{pst-anamorphosis-add}
175
176 \subsection{Les macros \textbackslash{}pscircleA, \textbackslash{}pscurveA, \textbackslash{}psccurveA, \textbackslash{}psbezierA, \mbox{\textbackslash{}pnodeA} et \textbackslash{}movetoA}
177
178 Ces commandes sont calqu\'{e}es sur celles de PStricks, elles ont donc les m\^{e}mes options, elles s'adaptent automatiquement au type d'anamorphose choisi.
179
180
181 \subsection{Un texte}
182 \verb+\pstextA[options](x,y){texte}+ permet de placer le texte centr\'{e} au point de coordonn\'{e}es~$(x,y)$.
183
184 Les options de texte :
185 \begin{itemize}
186 \item le type de fonte \textsf{[PSfont=Times-Roman]} ;
187 \item la taille en pts \textsf{[fontsize=40]} ;
188 \item un facteur d'\'{e}chelle \textsf{[scale=1 1]}, comme pour les images.
189 \end{itemize}
190
191
192 \subsection{Un fichier \textsf{.pst}}
193
194 Une commande sp\'{e}cifique permet le calcul et l'affichage des fichiers au format \textbf{.pst} : \mbox{\textbf{\textbackslash{}AFP\{fichier.pst\}}.} Cette image peut \^{e}tre mise \`{a} une \'{e}chelle diff\'{e}rente ou d\'{e}plac\'{e}e si le type d'anamorphose choisie le n\'{e}cessite, comme dans l'exemple suivant :
195 \begin{lstlisting}
196 \psset{Rmirror=3,scale=-0.5 -0.5,translate=0 1.5,type=conical}
197 \AFP{tiger.pst}
198 \end{lstlisting}
199
200 \newpage
201
202 \section{Exemples}
203
204 \subsection{Anamorphose cylindrique}
205
206 L'anamorphose cylindrique est celle qui est trac\'{e}e par d\'{e}faut si aucun type n'est sp\'{e}cifi\'{e}. Comme options, elle ne n\'{e}cessite que le rayon du cylindre, l'abscisse et l'ordonn\'{e}e du point de vue, comme nous l'avons vu dans la partie th\'{e}orique la cote du point de vue n'intervient pas. Comme tous les autres types d'anamorphoses, le dessin pourra \^{e}tre mis \`{a} l'\'{e}chelle, si n\'{e}cessaire, avec l'option \textsf{[scale=sx sy]}.
207 \begin{center}
208 \psscalebox{0.8}{
209 \begin{pspicture}[showgrid](-8,-4)(8,10)
210 \pscircle[doubleline=true]{3}
211 \psset{Yv=100,linestyle=dotted}
212 \psanamorphosis[scale=1 -1]{mickey.eps}
213 \multido{\n=-2.00+0.50}{9}{%
214 \pnode(! \n\space -2.00){A}
215 \pnode(! \n\space 2.00){B}
216 \psline(A)(B)
217 \pslineA(A)(B)
218 }
219 \multido{\N=-2.00+0.50}{9}{%
220 \pnode(!-2.0 \N){A}
221 \pnode(!2.0 \N){B}
222 \pslineA(A)(B)
223 \psline(A)(B)
224 }
225 \pstextA[fontsize=25,scale=1.5 -1,fillcolor=black](0,-3){Mickey}
226 \end{pspicture}
227 }
228 \end{center}
229 \begin{lstlisting}
230 \begin{pspicture}[showgrid](-8,-4)(8,10)
231 \pscircle[doubleline=true]{3}
232 \psset{Yv=100,linestyle=dotted}
233 \psanamorphosis[scale=1 -1]{mickey.eps}
234 \multido{\n=-2.00+0.50}{9}{%
235 \pnode(! \n\space -2.00){A}
236 \pnode(! \n\space 2.00){B}
237 \psline(A)(B)
238 \pslineA(A)(B)
239 }
240 \multido{\N=-2.00+0.50}{9}{%
241 \pnode(!-2.0 \N){A}
242 \pnode(!2.0 \N){B}
243 \pslineA(A)(B)
244 \psline(A)(B)
245 }
246 \pstextA[fontsize=25,scale=1.5 -1,fillcolor=black](0,-3){Mickey}
247 \end{pspicture}
248 \end{lstlisting}
249
250
251 \subsection{Anamorphose conique}
252
253 Comme options, l'anamorphose conique ne n\'{e}cessite que le rayon de la base du c\^{o}ne \textsf{Rmirror=3}, la hauteur du c\^{o}ne et la cote \textsf{Zv=10} du point de vue.
254 \begin{center}
255 \begin{pspicture}[showgrid](-6,-6)(6,6)
256 \pscircle[doubleline=true]{3}
257 \psset{type=conical}
258 \psanamorphosis[scale=0.25 0.25](0,-1.5){parrot.eps}
259 \psanamorphosis[scale=-0.25 -0.25](0,1.5){parrot.eps}
260 \psset{linestyle=dotted}
261 \multido{\n=-1.50+0.50}{7}{%
262 \pnode(! \n\space -2.50){A}
263 \pnode(! \n\space -0.50){B}
264 \psline(A)(B)
265 \pslineA(A)(B)
266 }
267 \multido{\N=-2.50+0.50}{5}{%
268 \pnode(!-1.50 \N){A}
269 \pnode(!1.50 \N){B}
270 \pslineA(A)(B)
271 \psline[linecolor=green](A)(B)
272 }
273 \multido{\n=-1.50+0.50}{7}{%
274 \pnode(! \n\space 2.50){A}
275 \pnode(! \n\space 0.50){B}
276 \psline(A)(B)
277 \pslineA(A)(B)
278 }
279 \multido{\N=2.50+-0.50}{5}{%
280 \pnode(!-1.50 \N){A}
281 \pnode(!1.50 \N){B}
282 \pslineA(A)(B)
283 \psline(A)(B)
284 }
285 \pstextA[fontsize=10,fillcolor=green,scale=1.5 1](0,-0.75){Le perroquet}
286 \pstextA[fontsize=10,fillcolor=green,scale=1.5 -1](0,0.75){Le perroquet}
287 \end{pspicture}
288 \end{center}
289 \begin{lstlisting}
290 \begin{pspicture}[showgrid](-6,-6)(6,6)
291 \pscircle[doubleline=true]{3}
292 \psset{type=conical}
293 \psanamorphosis[scale=0.25 0.25](0,-1.5){parrot.eps}
294 \psanamorphosis[scale=-0.25 -0.25](0,1.5){parrot.eps}
295 \psset{linestyle=dotted}
296 \multido{\n=-1.50+0.50}{7}{%
297 \pnode(! \n\space -2.50){A}
298 \pnode(! \n\space -0.50){B}
299 \psline(A)(B)
300 \pslineA(A)(B)
301 }
302 \multido{\N=-2.50+0.50}{5}{%
303 \pnode(!-1.50 \N){A}
304 \pnode(!1.50 \N){B}
305 \pslineA(A)(B)
306 \psline[linecolor=green](A)(B)
307 }
308 \multido{\n=-1.50+0.50}{7}{%
309 \pnode(! \n\space 2.50){A}
310 \pnode(! \n\space 0.50){B}
311 \psline(A)(B)
312 \pslineA(A)(B)
313 }
314 \multido{\N=2.50+-0.50}{5}{%
315 \pnode(!-1.50 \N){A}
316 \pnode(!1.50 \N){B}
317 \pslineA(A)(B)
318 \psline(A)(B)
319 }
320 \pstextA[fontsize=10,fillcolor=green,scale=1.5 1](0,-0.75){Le perroquet}
321 \pstextA[fontsize=10,fillcolor=green,scale=1.5 -1](0,0.75){Le perroquet}
322 \end{pspicture}
323 \end{lstlisting}
324
325
326 \subsection{Anamorphose h\'{e}misph\'{e}rique}
327
328 L'anamorphose sph\'{e}rique poss\`{e}de comme options le rayon du la sph\`{e}re et les 3 coordonn\'{e}es du point de vue. C'est la plus d\'{e}licate \`{a} mettre au point pour que tous les rayons r\'{e}fl\'{e}chis par le miroir parviennent \`{a} l'\oe{}il.
329 \begin{center}
330 \psscalebox{0.75}{
331 \begin{pspicture}[showgrid](-7,-19)(7,5)
332 \pscircle[doubleline=true]{5}
333 \psset{type=spherical,Rmirror=5}
334 \psanamorphosis[scale=0.4 0.4](0,-4){tiger.eps}
335 {\psset{linewidth=0.5\pslinewidth}
336 \multido{\n=-1.00+0.20}{11}{%
337 \pnode(! \n\space -4.80){A}
338 \pnode(! \n\space -3.20){B}
339 \psline(A)(B)
340 \pslineA(A)(B)
341 }%
342 \multido{\N=-4.80+0.20}{9}{%
343 \pnode(!-1.0 \N){A}
344 \pnode(!1.0 \N){B}
345 \pslineA(A)(B)
346 \psline(A)(B)
347 }%
348 }
349 \psbezier[linecolor=red,showpoints=true](-2,-4)(-1,-3.2)(1,-4)(2,-3)
350 \psbezierA[showpoints=true,linecolor=red](-2,-4)(-1,-3.2)(1,-4)(2,-3)
351 \end{pspicture}
352 }
353 \end{center}
354 \begin{lstlisting}
355 \begin{pspicture}[showgrid](-7,-19)(7,5)
356 \pscircle[doubleline=true]{5}
357 \psset{type=spherical,Rmirror=5}
358 \psanamorphosis[scale=0.4 0.4](0,-4){tiger.eps}
359 {\psset{linewidth=0.5\pslinewidth}
360 \multido{\n=-1.00+0.20}{11}{%
361 \pnode(! \n\space -4.80){A}
362 \pnode(! \n\space -3.20){B}
363 \psline(A)(B)
364 \pslineA(A)(B)
365 }%
366 \multido{\N=-4.80+0.20}{9}{%
367 \pnode(!-1.0 \N){A}
368 \pnode(!1.0 \N){B}
369 \pslineA(A)(B)
370 \psline(A)(B)
371 }%
372 }
373 \psbezier[linecolor=red,showpoints=true](-2,-4)(-1,-3.2)(1,-4)(2,-3)
374 \psbezierA[showpoints=true,linecolor=red](-2,-4)(-1,-3.2)(1,-4)(2,-3)
375 \end{pspicture}
376 \end{lstlisting}
377
378
379 \subsection{Anamorphose oblique ou perspective}
380
381 Les options sont particuli\`{e}res :
382 \begin{itemize}
383 \item l'ordonn\'{e}e du point de fuite principal $F$ : \textsf{F=10} ;
384 \item la distance de $F$ \`{a} $F'$ : \textsf{D=4}
385 \item l'unit\'{e} du quadrillage ou plut\^{o}t le demi-c\^{o}t\'{e} du carr\'{e} : \textsf{ua=2}.
386 \item Un bool\'{e}en \textsf{perpsective=true} qui repr\'{e}sente l'objet trait\'{e} en perspective et qui positionn\'{e} \`{a} \textsf{false} donne la repr\'{e}sentation invers\'{e}e c'est-\`{a}-dire l'anamorphose oblique.
387 \end{itemize}
388 \begin{center}
389 \begin{pspicture}(-4,-3)(4,11)
390 \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=4pt](-3,-3)(3,3)
391 \psset{ua=3,F=12,D=2}
392 \psanamorphosis[type=perspective,scale=0.75 0.75](0,0){parrot.eps}
393 \psset{type=perspective}
394 \multido{\i=-3+1}{7}{%
395 \pnode(! \i\space -3){A}
396 \pnode(! \i\space 3){B}
397 \psline(A)(B)
398 \pslineA[linecolor=red](A)(B)
399 }%
400 \multido{\i=-3+1}{7}{%
401 \pnode(!-3 \i){A}
402 \pnode(!3 \i){B}
403 \pslineA[linecolor=blue](A)(B)
404 \psline(A)(B)
405 }%
406 \pstextA[fontsize=35,fillcolor=green](-2.5,2){P}
407 \pstextA[fontsize=35,fillcolor=green](-2.5,1){A}
408 \pstextA[fontsize=35,fillcolor=green](-2.5,0){R}
409 \pstextA[fontsize=35,fillcolor=green](-2.5,-1){R}
410 \pstextA[fontsize=35,fillcolor=green](-2.5,-2){O}
411 \pstextA[fontsize=35,fillcolor=green](-2.5,-3){T}
412 \end{pspicture}
413 \end{center}
414 \begin{lstlisting}
415 \begin{pspicture}(-4,-3)(4,12)
416 \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=4pt](-3,-3)(3,3)
417 \psset{ua=3,F=12,D=2}
418 \psanamorphosis[type=perspective,scale=0.75 0.75](0,0){parrot.eps}
419 \psset{type=perspective}
420 \multido{\i=-3+1}{7}{%
421 \pnode(! \i\space -3){A}
422 \pnode(! \i\space 3){B}
423 \psline(A)(B)
424 \pslineA[linecolor=red](A)(B)
425 }%
426 \multido{\i=-3+1}{7}{%
427 \pnode(!-3 \i){A}
428 \pnode(!3 \i){B}
429 \pslineA[linecolor=blue](A)(B)
430 \psline(A)(B)
431 }%
432 \pstextA[fontsize=35,fillcolor=green](-2.5,2){P}
433 \pstextA[fontsize=35,fillcolor=green](-2.5,1){A}
434 \pstextA[fontsize=35,fillcolor=green](-2.5,0){R}
435 \pstextA[fontsize=35,fillcolor=green](-2.5,-1){R}
436 \pstextA[fontsize=35,fillcolor=green](-2.5,-2){O}
437 \pstextA[fontsize=35,fillcolor=green](-2.5,-3){T}
438 \end{pspicture}
439 \end{center}
440 \end{lstlisting}
441
442
443 \subsection{Perspective invers\'{e}e}
444
445 Ceci est extrait de la page 59 du Baltru\v{s}a\"{\i}tis :
446 \begin{quote}\itshape
447 <<~L'arrangement peut fonctionner dans les deux sens. Si le carr\'{e} en perspective se pr\'{e}sente comme un trap\`{e}ze, le trap\`{e}ze y appara\^{\i}t comme un carr\'{e}.
448 Un renversement du point de vue ramen\'{e} au dessus du point principal (\`{a} une hauteur \'{e}gale \`{a} l'\'{e}loignement de la distance) et install\'{e} en quelque sorte dans le tableau, aboutit \`{a} un effet contraire. Les m\^{e}mes r\'{e}tr\'{e}cissements corrigent les formes et les rapprochent au lieu de les \'{e}loigner et de les alt\'{e}rer, comme dans un film \`{a} l'envers. La perspective est \`{a} rebours.~>>
449 \end{quote}
450 \begin{center}
451 \psscalebox{1.5}{
452 \begin{pspicture}(-3,-5)(3,3)
453 \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=6pt](-3,-3)(3,-5)
454 \psset{ua=3,F=14,D=3,type=inverseperspective,linewidth=0.5\pslinewidth}
455 \multido{\i=-3+1}{7}{%
456 \pnode(! \i\space -3){A}
457 \pnode(! \i\space 3){B}
458 \psline(A)(B)
459 \pslineA(A)(B)
460 }%
461 \multido{\i=-3+1}{7}{%
462 \pnode(!-3 \i){A}
463 \pnode(!3 \i){B}
464 \pslineA(A)(B)
465 \psline(A)(B)
466 }%
467 \psanamorphosis{tiger.eps}
468 \psset{fillcolor={[cmyk]{0.2 0.55 0.85 0.0}},linecolor={[cmyk]{0.2 0.55 0.85 0.0}},fontsize=40,scale=1.32 1}
469 \pstextA(0,2){TIGRE*}
470 \pstextA(-2.48,1){I}
471 \pstextA(-2.48,0){G}
472 \pstextA(-2.48,-1){R}
473 \pstextA(-2.48,-2){E}
474 \pstextA(-2.48,-3){*}
475 \end{pspicture}
476 }
477 \end{center}
478 \begin{lstlisting}
479 \begin{pspicture}(-3,-4)(3,3)
480 \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=6pt](-3,-3)(3,-6)
481 \psset{ua=3,F=14,D=3,type=inverseperspective,linewidth=0.5\pslinewidth}
482 \multido{\i=-3+1}{7}{%
483 \pnode(! \i\space -3){A}
484 \pnode(! \i\space 3){B}
485 \psline(A)(B)
486 \pslineA(A)(B)
487 }%
488 \multido{\i=-3+1}{7}{%
489 \pnode(!-3 \i){A}
490 \pnode(!3 \i){B}
491 \pslineA(A)(B)
492 \psline(A)(B)
493 }%
494 \psanamorphosis{tiger.eps}
495 \psset{fillcolor={[cmyk]{0.2 0.55 0.85 0.0}},linecolor={[cmyk]{0.2 0.55 0.85 0.0}},fontsize=40,scale=1.32 1}
496 \pstextA(0,2){TIGRE*}
497 \pstextA(-2.48,1){I}
498 \pstextA(-2.48,0){G}
499 \pstextA(-2.48,-1){R}
500 \pstextA(-2.48,-2){E}
501 \pstextA(-2.48,-3){*}
502 \end{pspicture}
503 \end{lstlisting}
504
505
506 \section{Les fichiers \textsf{pst}}
507
508 \begin{center}
509 \begin{pspicture}[showgrid](-5,-6)(5,3)
510 \rput(0,-1.3333){%
511 \psscalebox{0.6667}{%
512 \begin{pspicture}(-6,-8)(6,4)
513 \psset{Xv=0,Yv=-100}
514 \pscircle[doubleline=true,linecolor=black]{3}
515 \input{luckyluke.pst}
516 \AFP{luckyluke.pst}
517 \psset{linewidth=0.5\pslinewidth}
518 \multido{\n=-2.00+0.50}{9}{%
519 \pnode(! \n\space -2.00){A}
520 \pnode(! \n\space 2.00){B}
521 \psline(A)(B)
522 \pslineA(A)(B)
523 }
524 \multido{\N=-2.00+0.50}{9}{%
525 \pnode(!-2.0 \N){A}
526 \pnode(!2.0 \N){B}
527 \pslineA(A)(B)
528 \psline(A)(B)
529 }
530 \end{pspicture}
531 }}
532 \end{pspicture}
533 \end{center}
534 \begin{lstlisting}
535 \begin{pspicture}(-6,-8)(6,4)
536 \psset{Xv=0,Yv=-100}
537 \pscircle[doubleline=true,linecolor=black]{3}
538 \input{luckyluke.pst}
539 \AFP{luckyluke.pst}
540 \psset{linewidth=0.5\pslinewidth}
541 \multido{\n=-2.00+0.50}{9}{%
542 \pnode(! \n\space -2.00){A}
543 \pnode(! \n\space 2.00){B}
544 \psline(A)(B)
545 \pslineA(A)(B)
546 }
547 \multido{\N=-2.00+0.50}{9}{%
548 \pnode(!-2.0 \N){A}
549 \pnode(!2.0 \N){B}
550 \pslineA(A)(B)
551 \psline(A)(B)
552 }
553 \end{pspicture}
554 \end{lstlisting}
555 Les fichiers \textsf{.pst} sont des fichiers de commandes PSTricks obtenues par conversion d'un fichier \textsf{.eps} au moyen d'un script \'{e}crit par Jean-Michel \textsc{Sarlat}.
556
557 L'anamorphose d'une telle image est obtenue \`{a} l'aide d'une seule commande \verb+\AFP{luckyluke.pst}+ (AFP $=$ \textbf{A}namorphose \`{a} partir d'un \textbf{F}ichier \textbf{P}STricks). De tels fichiers pourront donc \^{e}tre obtenues au moyen du script ou bien directement sur le serveur de \textsf{syracuse} (adresse \`{a} pr\'{e}ciser).
558
559 En fonction de la complexit\'{e} du fichier (du nombre de lignes de commandes qu'il contient) il sera n\'{e}cessaire d'allouer un suppl\'{e}ment de m\'{e}moire \`{a} \TeX. Par exemple, sous Windows, \`{a} partir de MiK\TeX~2.8, Alexander \textsc{Grahn} donne la proc\'{e}dure \`{a} suivre dans la documentation de son package : `\textsf{animate}'
560 \begin{lstlisting}
561 1. Open a DOS command prompt window (execute `cmd.exe' via `Start'! `Run').
562 2. At the DOS prompt, enter
563 initexmf --edit-config-file=latex
564 3. Type
565 main_memory=10000000
566 into the editor window that opens, save the file and quit the editor.
567 4. To rebuild the format, enter
568 initexmf --dump=latex
569 5. Repeat steps 2-4 with config
570
571 initexmf --edit-config-file=pdflatex
572 main_memory=10000000
573 initexmf --dump=pdflatex
574
575 initexmf --edit-config-file=xelatex
576 main_memory=10000000
577 initexmf --dump=xelatex
578 \end{lstlisting}
579
580 \section{Normalisation d'une image au format \textsf{.eps}}
581
582 Il est souvent n\'{e}cessaire de ``pr\'{e}parer'' l'image \`{a} anamorphoser. Voici le d\'{e}tail de la proc\'{e}dure suivie \`{a} partir d'une image de Donald Duck captur\'{e}e sur un site de coloriage.
583
584 \url{http://www.waouo.com/wp-content/uploads/2011/06/coloriagedonaldduck.jpg}
585
586 \begin{enumerate}
587 \item Transformer l'image au format \textsf{bmp} avec \textsf{The Gimp} (par exemple).
588 \item Vectoriser l'image avec \textsf{Potrace}, en ligne de commande : \textsf{potrace donald.bmp -o donald2.eps}
589 \item Avec \textsf{pstoedit} convertir au format vectoriel ps simplifi\'{e} avec courbes. On peut op\'{e}rer en ligne de commande : \textsf{pstoedit -f ps donald2.eps donald1.eps} ou bien avec \textsf{GSview} dans le menu Edition, cliquer sur \textsf{Conversion vers un format vectoriel} et choisir \textsf{ps : Simplified Postscript with curves}, on enregistre sous le nom \textsf{donald1.eps}.
590 \item Avec votre \'{e}diteur de texte rechercher \`{a} la fin du fichier la ligne qui donne les dimensions de la bo\^{\i}te : \verb+%%BoundingBox: 4 7 453 640+ .
591 \item La hauteur de l'image eps est $640-7 =633$\,pts, c'est la plus grande dimension. Supposons que votre image finale doive poss\'{e}der une longueur de 4\,cm dans sa plus grande dimension. Sachant que 1\,cm vaut 28.45274\,pts, il faut donc lui appliquer un facteur d'\'{e}chelle \'{e}gal \`{a} $\dfrac{4\times28.45274}{633}$.
592 \item Ensuite il faut d\'{e}placer cette image pour que le centre de celle-ci soit \`{a} l'origine $(0,0)$, il faut donc appliquer la translation $-\dfrac{453+4}{2},\,-\dfrac{640+7}{2}$, ce qui convertit en postscript se traduira par l'ajout de ces deux lignes dans le fichier \textsf{donald1.eps}, au d\'{e}but du fichier juste apr\`{e}s la ligne : \verb+%%Page: 1 1+
593 \begin{lstlisting}
594 4 28.45274 mul 633 div dup scale
595 4 453 add 2 div neg 640 7 add 2 div neg translate
596 \end{lstlisting}
597 On enregistre ce fichier.
598 \item \textsf{pstoedit} intervient \`{a} nouveau, avec les m\^{e}mes options, et on enregistre le fichier final sous le nom : \textsf{donald.eps}.
599 \end{enumerate}
600 \begin{center}
601 \psscalebox{0.9}{
602 \begin{pspicture}[showgrid](-8,-5)(8,10)
603 \pscircle[doubleline=true]{3}
604 \psset{Yv=100,linestyle=dotted}
605 \psanamorphosis[scale=1 -1](0,0){donald.eps}
606 \multido{\n=-2.00+0.50}{9}{%
607 \pnode(! \n\space -2.00){A}
608 \pnode(! \n\space 2.00){B}
609 \psline(A)(B)
610 \pslineA(A)(B)
611 }
612 \multido{\N=-2.00+0.50}{9}{%
613 \pnode(!-2.0 \N){A}
614 \pnode(!2.0 \N){B}
615 \pslineA(A)(B)
616 \psline(A)(B)
617 }
618 \pstextA[fontsize=25,scale=1.5 -1,fillcolor=black](0,-2.5){Donald}
619 \end{pspicture}
620 }
621 \end{center}
622 \begin{lstlisting}
623 \begin{pspicture}[showgrid](-8,-5)(8,10)
624 \pscircle[doubleline=true]{3}
625 \psset{Yv=100,linestyle=dotted}
626 \psanamorphosis[scale=1 -1](0,0){donald.eps}
627 \multido{\n=-2.00+0.50}{9}{%
628 \pnode(! \n\space -2.00){A}
629 \pnode(! \n\space 2.00){B}
630 \psline(A)(B)
631 \pslineA(A)(B)
632 }
633 \multido{\N=-2.00+0.50}{9}{%
634 \pnode(!-2.0 \N){A}
635 \pnode(!2.0 \N){B}
636 \pslineA(A)(B)
637 \psline(A)(B)
638 }
639 \pstextA[fontsize=25,scale=1.5 -1,fillcolor=black](0,-2.5){Donald}
640 \end{pspicture}
641 \end{lstlisting}
642 \end{document}

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.