Initialisation du projet pst-solides3d.git (SVN revision 142)
[pst-solides3d.git] / doc / par-projectiontexte.tex
1 \section {Texte}
2
3 L'objet \Cadre{\texttt{texte}} de la macro \verb+\psProjection+ permet
4 de projeter des chaînes de caractères sur des plans quelconques.
5
6 \subsection {Les paramètres et les options}
7
8 Il y a $3$ paramètres : \Cadre{\texttt{[text]}} qui définit la chaîne à afficher,
9 \Cadre{\texttt{[fontsize]}}, qui donne la taille de la fonte en
10 points (rappelons qu'une taille de 28,45~pts correspond à 1~cm), et
11 enfin \Cadre{\texttt{[pos]}}, qui définit la position
12 du texte par rapport au point visé. Par défaut le texte est centré sur
13 l'origine du plan.
14
15 Ce dernier paramètre nécessite un peu d'explications. Considérons la
16 chaîne de caractères \texttt{petit texte} représentée ci-dessous.
17 \begin{center}
18 \begin{pspicture}(-5,-2)(5,2)
19 \rput(0,0){\psframebox[linestyle=none,fillstyle=solid,
20 fillcolor=yellow!50,framesep=0pt]{\phantom{\timesnormal petit texte}}}
21 \rput(0,0){\rnode[lb]{A}{\rnode[rb]{B}{\rnode[rt]{C}{%
22 \rnode[lt]{D}{\rnode[l]{E}{\rnode[r]{F}{%
23 \rnode[t]{G}{\rnode[b]{H}{\timesnormal petit texte}}}}}}}}}
24 %\psset{nodesep=5pt}
25 \ncline{A}{B}\ncline{B}{C}\ncline{C}{D}\ncline{D}{A}
26 \pnode({A}){A'}
27 \pnode({B}){B'}
28 \pnode({C}){C'}
29 \pnode({D}){D'}
30 \pnode({E}){E'}
31 \pnode({F}){F'}
32 \pnode({G}){G'}
33 \pnode({H}){H'}
34 \rput(A){\pnode(0,\baselineskip){B1}}
35 \rput(B){\pnode(0,\baselineskip){B2}}
36 \psdots(A')(B')(C')(D')(E')(F')(G')(H')(B1)(B2)(0,0)
37 \psline(B1)(B2)
38 \pnode(! \GetCenter{A} A.x 0.5 sub A.y 0.5 sub){A1}
39 \ncline{->}{A}{A1}
40 \uput[dl](A1){\texttt{dl}}
41 \pnode(! \GetCenter{B1} B1.x 0.5 sub B1.y){B1l}
42 \ncline{->}{B1}{B1l}
43 \uput[l](B1l){\texttt{bl}}
44 \pnode(! \GetCenter{E} E.x 0.5 sub E.y){El}
45 \ncline{->}{E}{El}
46 \uput[l](El){\texttt{cl}}
47 \pnode(! \GetCenter{D} D.x 0.5 sub D.y 0.5 add){Dl}
48 \ncline{->}{D}{Dl}
49 \uput[ul](Dl){\texttt{ul}}
50 \pnode(! \GetCenter{G} G.x G.y 0.5 add){Gu}
51 \ncline{->}{G}{Gu}
52 \uput[u](Gu){\texttt{uc}}
53 \pnode(! \GetCenter{H} H.x H.y 0.5 sub){Hd}
54 \ncline{->}{H}{Hd}
55 \uput[d](Hd){\texttt{dc}}
56 \pnode(! \GetCenter{C} C.x 0.5 add C.y 0.5 add){Cr}
57 \ncline{->}{C}{Cr}
58 \uput[ur](Cr){\texttt{ur}}
59 \pnode(! \GetCenter{B} B.x 0.5 add B.y 0.5 sub){Br}
60 \ncline{->}{B}{Br}
61 \uput[dr](Br){\texttt{dr}}
62 \pnode(! \GetCenter{B2} B2.x 0.5 add B2.y){B2r}
63 \ncline{->}{B2}{B2r}
64 \uput[r](B2r){\texttt{br}}
65 \pnode(! \GetCenter{F} F.x 0.5 add F.y){Fr}
66 \ncline{->}{F}{Fr}
67 \uput[r](Fr){\texttt{cr}}
68 \end{pspicture}
69 \end{center}
70
71 Nous avons $4$~lignes horizontales de références~: la ligne
72 inférieure \verb+(d)own+, la ligne de base \verb+(b)aseline+, la
73 ligne médiane, ou ligne centrale \verb+(c)enter+, et la ligne
74 supérieure \verb+(u)p+.
75
76 Il y a également $4$~lignes de référence sur l'axe vertical~: la ligne
77 de gauche \verb+(l)eft+, la ligne de base \verb+(b)aseline+, la ligne
78 centrale \verb+(c)enter+ et la ligne de droite \verb+(r)ight+. Dans le
79 cas d'une chaîne de caractère, les $2$ lignes verticales \verb+l+ et
80 \verb+b+ sont confondues.
81
82 L'intersection de ces $4$ lignes horizontales avec ces $4$ lignes
83 verticales nous donne $16$~points appelés
84 \verb+dl+,
85 \verb+bl+,
86 \verb+cl+,
87 \verb+ul+,
88 \verb+db+,
89 \verb+bb+,
90 \verb+cb+,
91 \verb+ub+,
92 \verb+dc+,
93 \verb+bc+,
94 \verb+cc+,
95 \verb+uc+,
96 \verb+dr+,
97 \verb+br+,
98 \verb+cr+,
99 \verb+ur+.
100
101 Parmi ceux-ci, $4$~sont considérés comme \textsl {points
102 intérieurs\/}~: \verb+bb+, \verb+bc+, \verb+cb+ et \verb+cc+.
103
104 Lorsque le paramètre \verb+[pos]+ de \verb+\psProjection+ est affecté à
105 l'un de ces $4$~points, cela signifie que ce dernier doit être
106 positionné au point d'origine du plan de projection.
107
108 Lorsque le paramètre \verb+[pos]+ de \verb+\psProjection+ est affecté à
109 l'un des $12$~points restant, cela indique une direction dans laquelle
110 doit être positionné le texte par rapport au point d'origine du plan
111 de projection.
112
113 Par exemple, \verb+\psProjection[...,pos=uc](0,0)+ indique que le
114 texte doit être centré par rapport au point $(0,0)$ et affiché
115 au-dessus.
116
117 %% Le plan doit être défini par son origine
118 %% \Cadre{$\mathtt{(x_0ny_0,z_0)}$} et la normale
119 %% \Cadre{\texttt{[normal=1 0 0 90]}}. Pour les particularités
120 %% de la définition de la normale, car il y a trois façons de le faire !
121 %% Tous les détails sont dans la partie \Cadre{\texttt{``Choisir un plan
122 %% par son origine et une normale''}} de la documentation de
123 %% \texttt{doc-psProjection}.
124
125 %% La taille de la fonte doit être fixée en points avec l'option
126 %% . .
127
128
129 \subsection {Exemples de projetés sur un plan quelconque}
130
131 \subsubsection {Exemple 1 : projection sur Oxy, avec l'option \texttt{pos=bc}}
132
133 \begin{LTXexample}[width=8cm]
134 \begin{pspicture}(-4,-1.5)(4,1.5)
135 \psset{solidmemory}
136 \psset{lightsrc=10 0 10,
137 viewpoint=50 -90 90 rtp2xyz,Decran=50}
138 \psSolid[object=plan,definition=normalpoint,plangrid,
139 base=-4 4 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
140 \psProjection[object=texte,
141 fontsize=20,linecolor=red,
142 pos=bc,plan=monplan,
143 text=j'aimerais tant voir Syracuse,
144 ](0,0)%
145 \axesIIID(0,0,0)(4,2,1)
146 \composeSolid
147 \end{pspicture}
148 \end{LTXexample}
149
150 \subsubsection{Exemple 2 : projection Oxy, texte centré}
151
152 \begin{LTXexample}[width=8cm]
153 \begin{pspicture}(-4,-1.5)(4,1.5)
154 \psset{solidmemory}
155 \psset{lightsrc=10 0 10,
156 viewpoint=50 -90 90 rtp2xyz,Decran=50}
157 \psSolid[object=plan,definition=normalpoint,plangrid,
158 base=-4 4 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
159 \psProjection[object=texte,
160 fontsize=20,linecolor=red,
161 text= L'île de Pâques et Kairouan,
162 plan=monplan]%
163 \axesIIID(0,0,0)(4,2,1)
164 \end{pspicture}
165 \end{LTXexample}
166
167
168
169 \subsubsection {Exemple 3 : projection Oxy, avec différentes options \texttt{pos=dl, etc.}}
170
171 \begin{center}
172 \psset{unit=.8}
173 \begin{pspicture}(-4,-1.5)(4,1.5)
174 \psset{solidmemory}
175 \psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
176 \psSolid[object=plan,definition=normalpoint,plangrid,
177 base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
178 \psProjection[object=texte,
179 fontsize=20,linecolor=red,
180 text=Et les grands oiseaux qui s'amusent,
181 pos=dl,
182 plan=monplan]%
183 \axesIIID(0,0,0)(8,1,1)
184 \rput(0,-1.5){\Cadre{\texttt{[pos=dl]}}}
185 \end{pspicture}
186 \end{center}
187
188 \begin{center}
189 \psset{unit=.8}
190 \begin{pspicture}(-4,-1.5)(4,1.5)
191 \psset{solidmemory}
192 \psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
193 \psSolid[object=plan,definition=normalpoint,plangrid,
194 base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
195 \psProjection[object=texte,
196 fontsize=20,linecolor=red,
197 text= A glisser l'aile sous le vent.,
198 pos=dr,
199 plan=monplan]%
200 \axesIIID(0,0,0)(8,1,1)
201 \rput(0,-1.5){\Cadre{\texttt{[pos=dr]}}}
202 \end{pspicture}
203 \end{center}
204
205 \begin{center}
206 \psset{unit=.8}
207 \begin{pspicture}(-4,-1.5)(4,1.5)
208 \psset{solidmemory}
209 \psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
210 \psSolid[object=plan,definition=normalpoint,plangrid,
211 base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
212 \psProjection[object=texte,
213 fontsize=20,linecolor=red,
214 text=Avant que ma jeunesse s'use,
215 pos=ur,
216 plan=monplan]%
217 \axesIIID(0,0,0)(8,1,1)
218 \rput(0,-1.5){\Cadre{\texttt{[pos=ur]}}}
219 \end{pspicture}
220 \end{center}
221
222 \begin{center}
223 \psset{unit=.8}
224 \begin{pspicture}(-4,-1.5)(4,1.5)
225 \psset{solidmemory}
226 \psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
227 \psSolid[object=plan,definition=normalpoint,plangrid,
228 base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
229 \psProjection[object=texte,
230 fontsize=20,linecolor=red,
231 text=Et que mes printemps soient partis,
232 pos=ul,
233 plan=monplan]%
234 \axesIIID(0,0,0)(8,1,1)
235 \rput(0,-1.5){\Cadre{\texttt{[pos=ul]}}}
236 \end{pspicture}
237 \end{center}
238
239 \begin{center}
240 \psset{unit=.8}
241 \begin{pspicture}(-4,-1.5)(4,1.5)
242 \psset{solidmemory}
243 \psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
244 \psSolid[object=plan,definition=normalpoint,plangrid,
245 base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
246 \psProjection[object=texte,
247 fontsize=20,linecolor=red,
248 text=J'aimerais tant voir Syracuse,
249 pos=uc,
250 plan=monplan]%
251 \axesIIID(0,0,0)(8,1,1)
252 \rput(0,-1.5){\Cadre{\texttt{[pos=uc]}}}
253 \end{pspicture}
254 \end{center}
255
256 \begin{center}
257 \psset{unit=.8}
258 \begin{pspicture}(-4,-1.5)(4,1.5)
259 \psset{solidmemory}
260 \psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
261 \psSolid[object=plan,definition=normalpoint,plangrid,
262 base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
263 \psProjection[object=texte,
264 fontsize=20,linecolor=red,
265 text=Pour m'en souvenir à Paris.,
266 pos=dc,
267 plan=monplan]%
268 \axesIIID(0,0,0)(8,1,1)
269 \rput(0,-1.5){\Cadre{\texttt{[pos=dc]}}}
270 \end{pspicture}
271 \end{center}
272
273 \subsubsection {Exemple 4 : projection Oxy avec rotation du texte}
274
275 \begin{LTXexample}[width=8cm]
276 \begin{pspicture}(-4,-3)(4,3)
277 \psset{solidmemory}
278 \psset{lightsrc=10 0 10,
279 viewpoint=50 -90 90 rtp2xyz,Decran=50}
280 \psSolid[object=plan,definition=normalpoint,plangrid,
281 base=-4 4 -3 3,args={0 0 0 [0 0 1 90]},name=monplan,]
282 \psset{plan=monplan}
283 \psProjection[object=texte,
284 fontsize=28.45,linecolor=gray!50,
285 text=Tournez manèges]%
286 \psProjection[object=texte,
287 fontsize=28.45,linecolor=red,
288 text=Tournez manèges,
289 phi=60]%
290 \axesIIID(0,0,0)(4,3,1)
291 \end{pspicture}
292 \end{LTXexample}
293 La rotation du texte s'introduit avec le paramètre \Cadre{\texttt{phi=60}}.
294
295 \subsubsection{Exemple 5 : positionnement du texte en un point quelconque}
296
297 \begin{LTXexample}[width=8cm]
298 \begin{pspicture}(-4,-3)(4,3)
299 \psset{solidmemory}
300 \psset{viewpoint=50 -90 90 rtp2xyz,
301 Decran=50}
302 \psSolid[object=plan,definition=normalpoint,plangrid,
303 base=-4 4 -3 3,args={0 0 0 [0 0 1 90]},name=monplan,]
304 \psset{fontsize=28.45,plan=monplan}
305 \psProjection[object=texte,
306 linecolor=green,
307 text=ici](-2,-2)
308 \psProjection[object=texte,
309 linecolor=red,
310 text=ou]%
311 \psProjection[object=texte,
312 linecolor=blue,
313 text=là](2,2)
314 \psPoint(0,0,0){O}
315 \psPoint(-2,-2,0){O1}
316 \psPoint(2,2,0){O2}
317 \psdots[dotsize=0.2](O)(O1)(O2)
318 \axesIIID(0,0,0)(4,4,1)
319 \end{pspicture}
320 \end{LTXexample}
321
322 \subsection{Exemples de projections sur une face d'un solide}
323
324 \subsubsection {Méthode}
325
326 Le solide doit être mémorisé avec l'option générale
327 \Cadre{$\backslash$psset$\{$solidmemory$\}$}. La première chose à faire est de
328 repérer les numéros des faces du solide
329 avec l'option \Cadre{\texttt{[numfaces=all]}}.
330 \begin{LTXexample}[width=8cm]
331 \psset{viewpoint=50 20 30 rtp2xyz,Decran=100}
332 \begin{pspicture}(-4,-4)(4,4)
333 \psframe(-4,-4)(4,4)
334 \psSolid[object=cube,a=2,action=draw,
335 linecolor=red,numfaces=all]%
336 \axesIIID(1,1,1)(2,2,2)
337 \end{pspicture}
338 \end{LTXexample}
339
340 Puis on définit le plan de projection par la face choisie, ici on affiche
341 \Cadre{\texttt{A}} sur la face de numéro $0$~:
342 \begin{gbar}
343 \begin{verbatim}
344 \psSolid[object=plan,definition=solidface,args=A 0,name=P0]
345 \psProjection[object=texte,linecolor=red,text=A,plan=P0]%
346 \end{verbatim}
347 \end{gbar}
348
349 \begin{LTXexample}[width=8cm]
350 \psset{viewpoint=50 20 30 rtp2xyz,Decran=50}
351 \begin{pspicture}(-3,-4)(4,5)
352 \psset{unit=0.5}
353 \psset{solidmemory}
354 \psSolid[object=cube,a=8,action=draw,name=A,linecolor=red]%
355 \psset{fontsize=100}
356 \psSolid[object=plan,action=none,
357 definition=solidface,args=A 0,name=P0]
358 \psProjection[object=texte,linecolor=red,text=A,plan=P0]%
359 \psSolid[object=plan,action=none,
360 definition=solidface,args=A 1,name=P1]
361 \psProjection[object=texte,linecolor=red,text=B,plan=P1]%
362 \psSolid[object=plan,action=none,
363 definition=solidface,args=A 4,name=P4]
364 \psProjection[object=texte,linecolor=red,text=E,plan=P4]%
365 \axesIIID(4,4,4)(6,6,6)
366 \end{pspicture}
367 \end{LTXexample}
368
369 \subsubsection {Rotation du texte avec l'option \texttt{phi}}
370
371 \begin{LTXexample}[width=8cm]
372 \psset{viewpoint=50 20 30 rtp2xyz,Decran=50}
373 \psset{unit=0.5}
374 \begin{pspicture}(-3,-4)(4,5)
375 \psset{solidmemory}
376 \psSolid[object=cube,a=8,action=draw,linecolor=red,name=A]%
377 \psset{fontsize=200}
378 \psSolid[object=plan,action=none,
379 definition=solidface,args=A 0,name=P0]
380 \psProjection[object=texte,linecolor=gray,text=A,plan=P0]%
381 \psset{phi=90}
382 \psProjection[object=texte,linecolor=red,text=A,plan=P0]%
383 \axesIIID(4,4,4)(6,6,6)
384 \end{pspicture}
385 \end{LTXexample}
386
387
388 \subsection{Exemples de projections sur différentes faces d'un solide}
389
390 \definecolor{rose}{rgb}{1,0.75,0.74}
391
392 \def\JuangJie{%
393 \begin{pspicture}(-3.5,-2)(3.5,4)
394 \psframe[fillcolor=cyan!50,fillstyle=solid](-3.5,-2)(3.5,4)%
395 \psSolid[object=cylindre,r=8,h=0.2,ngrid=1 36,action=draw**,hue=0.5 0.6]%
396 \psSolid[object=cube,a=8,h=0.2,ngrid=1 36,action=draw**,color1=magenta!50,
397 color2=red!20,color3=yellow!50,color4=green!50,
398 fcol=0 (color1) 1 (color2) 2 (color3) 3 (color4) 4(White)](0,0,4.2)%
399 \psset{solidmemory}%
400 \psSolid[object=cube,a=8,
401 name=A,
402 action=none](0,0,4.2)%
403 %% la face 0
404 \psSolid[object=plan,action=none,definition=solidface,
405 base=-4 4 -4 4,args=A 0,name=P0]%
406 %\psSolid[object=plan,definition=plan,action=none,args=P0,planmarks,action=none,]%
407 \psset{fontsize=30,plan=P0}%
408 \psProjection[object=texte,text=poème](0,3)%
409 \psProjection[object=texte,text=de](0,2)%
410 \psset{fontsize=55}
411 \psProjection[object=texte,linecolor=red,text=Juang Jie]
412 %% la face 4
413 \psSolid[object=plan,action=none,definition=solidface,base=-4 4 -4 4,args=A 4,phi=-90,name=P4]%
414 %\psSolid[object=plan,definition=plan,action=none,args=P4,fontsize=10,planmarks,action=none]%
415 \psset{fontsize=28.45,pos=bc,plan=P4}
416 \psProjection[object=texte,text={Dans ma jeunesse,}](0,3)%
417 \psset{fontsize=20}
418 \psProjection[object=texte,text=j'écoutais le son de la pluie](0,2)%
419 \psProjection[object=texte,text=dans les maisons de plaisir](0,1)%
420 \psProjection[object=texte,text=les tentures frissonnaient]%
421 \psProjection[object=texte,text=sous la lumière rouge](0,-1)%
422 \psProjection[object=texte,text=des candélabres](0,-2)%
423 %% la face 1
424 \psSolid[object=plan,action=none,definition=solidface,base=-4 4 -4 4,args=A 1,phi=180,name=P1]%
425 %\psSolid[object=plan,definition=plan,action=none,args=P1,fontsize=10,planmarks,action=none]%
426 \psset{plan=P1}
427 \psProjection[object=texte,fontsize=25,text=Dans mon âge mûr](0,3)%
428 \psProjection[object=texte,text=j'ai écouté le son de la pluie](0,2)%
429 \psProjection[object=texte,fontsize=18,text={en voyage, à bord d'un bateau}](0,1)%
430 \psProjection[object=texte,text=les nuages pesaient bas]%
431 \psProjection[object=texte,text=sur l'immensité du fleuve](0,-1)%
432 \psProjection[object=texte,text=une oie sauvage ](0,-2)%
433 \psProjection[object=texte,text=séparée de ses soeurs](0,-3)%
434 %% la face 2
435 \psSolid[object=plan,action=none,definition=solidface,base=-4 4 -4 4,args=A 2,phi=180,name=P2]%
436 %\psSolid[object=plan,definition=plan,action=none,args=P2,fontsize=10,planmarks,action=none]%
437 \psset{plan=P2}
438 \psProjection[object=texte,text=appelait dans le vent d'ouest](0,3)%
439 \psProjection[object=texte,text={Aujourd'hui,}](0,2)%
440 \psProjection[object=texte,text=j'écoute le son de la pluie](0,1)%
441 \psProjection[object=texte,text=sous le charme]%
442 \psProjection[object=texte,text=d'un ermitage monastique](0,-1)%
443 \psProjection[object=texte,text=Ma tête est chenue](0,-2)%
444 \psProjection[object=texte,text=chagrins et bonheurs](0,-3)%
445 %% la face 3
446 \psSolid[object=plan,action=none,definition=solidface,args=A 3,phi=180,name=P3]%
447 %\psSolid[object=plan,definition=plan,action=none,args=P3,fontsize=10,planmarks,action=none]%
448 \psset{plan=P3}
449 \psProjection[object=texte,text=séparations et retrouvailles](0,3)%
450 \psProjection[object=texte,text=tout est vanité](0,2)%
451 \psProjection[object=texte,text={Dehors, sur les marches}](0,1)%
452 \psProjection[object=texte,text=les gouttes tambourinent]%
453 \psProjection[object=texte,text= jusqu'à l'aube](0,-1)%
454 \psProjection[object=texte,text=Juang Jie ](0,-3)%
455 \composeSolid
456 \end{pspicture}}
457
458 \def\MollyBloom{%
459 %\psset{lightsrc=-15 -9 5}
460 %\psset{viewpoint=20 -150 30 rtp2xyz,Decran=11}
461 \psset{solidmemory,visibility}
462 %% le plan de base
463 \psSolid[object=plan,
464 definition=equation,
465 ngrid=1. 1.,
466 args={[0 0 1 0]},linecolor=red,
467 base=-8 10 -8 8,
468 linecolor=red,
469 name=G]%
470 \psset{fontsize=25,,pos=bc,plan=G}
471 \psProjection[object=texte,
472 phi=-90,
473 text=le monologue de Molly,
474 pos=bc,
475 ](-5,0)
476 \psProjection[object=texte,text=dans Ulysse de James Joyce](1,-5,0)
477 \psset{h=1,fillcolor=yellow!50,incolor=rose,hollow}
478 \psset{fontsize=20,pos=cc}
479 %
480 \psSolid[object=ruban,name=ruban1,base=9 8 9 -8]
481 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
482 \psProjection[object=texte,plan=R0,
483 text=O cet effrayant torrent tout au fond O et la mer écarlate]
484 %
485 \psSolid[object=ruban,name=ruban1,base=9 -8 -8 -8]
486 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
487 \psProjection[object=texte,plan=R0,
488 text=quelquefois comme du feu et les glorieux couchers de soleil et]
489 %
490 \psSolid[object=ruban,name=ruban1,base=-8 7 7 7]
491 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
492 \psProjection[object=texte,plan=R0,fontsize=18,
493 text=les ruelles bizarres les maisons roses et bleues et jaunes,]
494 %
495 \psSolid[object=ruban,name=ruban1,base=7 7 7 -6]
496 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
497 \psProjection[object=texte,plan=R0,
498 text=et les roseraies et les jasmins et les géraniums,]
499 %
500 \psSolid[object=ruban,name=ruban1,base=7 -6 -6 -6]
501 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
502 \psProjection[object=texte,plan=R0,
503 text=et les cactus de Gibraltar quand j'étais jeune fille,]
504 %
505 \psSolid[object=ruban,name=ruban1,base=-6 5 5 5]
506 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
507 \psProjection[object=texte,plan=R0,fontsize=18,
508 text=quand j'ai mis la rose dans mes cheveux,]
509 %
510 \psSolid[object=ruban,name=ruban1,base=5 5 5 -4]
511 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
512 \psProjection[object=texte,plan=R0,
513 text=comme les filles Andalouses,]
514 %
515 \psSolid[object=ruban,name=ruban1,base=5 -4 -3 -4]
516 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
517 \psProjection[object=texte,plan=R0,
518 text=ou en mettrai-je une rouge oui,]
519 %
520 \psSolid[object=ruban,name=ruban1,base=-3 4 3 4]
521 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
522 \psProjection[object=texte,plan=R0,fontsize=18,
523 text=sous le mur mauresque,]
524 %
525 \psSolid[object=ruban,name=ruban1,base=3 4 3 -2]
526 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
527 \psProjection[object=texte,plan=R0,
528 text=je me suis dit après,]
529 %
530 \psSolid[object=ruban,name=ruban1,base=3 -2 -1.5 -2]
531 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
532 \psProjection[object=texte,plan=R0,
533 text=tout aussi bien,]
534 %
535 \psSolid[object=ruban,name=ruban1,base=-1.5 3 2 3]
536 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
537 \psProjection[object=texte,plan=R0,
538 text=et alors je,]
539 \psSolid[object=ruban,name=ruban1,base=-8 -8 -8 7]
540 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
541 \psProjection[object=texte,plan=R0,
542 text=les figuiers dans les jardins de l'Alameda et toutes,]
543 %
544 \psSolid[object=ruban,name=ruban1,base=-6 -6 -6 5]
545 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
546 \psProjection[object=texte,plan=R0,
547 text=et une Fleur de la montagne oui,]
548 %
549 \psSolid[object=ruban,name=ruban1,base=-3 -4 -3 4]
550 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
551 \psProjection[object=texte,plan=R0,
552 text=et comme il m'a embrassée,]
553 %
554 \psSolid[object=ruban,name=ruban1,base=-1.5 -2 -1.5 3]
555 \psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
556 \psProjection[object=texte,plan=R0,
557 text=lui qu'un autre,]
558 %
559 \composeSolid
560 }
561
562
563 Nous projetons un poème, vers après vers, sur 4 faces d'un cube.
564 Il est nécessaire de passer l'option \Cadre{solidmemory} au début des
565 commandes. On définit ensuite le cube, que l'on mémorise à l'aide de la
566 commande \Cadre{name=A}~:
567 \begin{verbatim}
568 \psset{solidmemory}
569 \psSolid[object=cube,a=8,name=A1](0,0,4.2)%
570 \end{verbatim}
571
572 Le numéro de chaque face ayant été repéré dans un essai préalable avec
573 l'option \Cadre{numfaces=all}, les commandes suivantes~:
574 \begin{verbatim}
575 \psSolid[object=plan,action=none,definition=solidface,args=A 0,name=P0]%
576 \psProjection[object=texte,text=poème,fontsize=30,plan=P0](0,3)%
577 \end{verbatim}
578 définissent tout d'abord le plan $P0$ comme étant le plan orienté défini par la face
579 d'indice $0$ du solide $A$, avant de demander
580 l'impression du mot \texttt{poème} sur le plan $P0$, avec une fonte de
581 taille \Cadre{30~pts}, au point de coordonnées \Cadre{(0,3)} (dans le
582 repère lié à ce plan). On aurait pu changer l'orientation du texte
583 avec \Cadre{phi=-90} par exemple, dans l'une ou l'autre de ces commandes.
584
585 Par défaut, si la face n'est pas visible le texte reste caché. En
586 écrivant \Cadre{visibility} dans les options, le texte apparaîtra
587 même s'il est caché comme dans l'exemple suivant.
588
589 On n'oubliera pas d'écrire à la fin des commandes d'écriture des
590 textes\Cadre{$\backslash$composeSolid}, pour que tous ces tracés
591 soient pris en compte.
592 Toute autre commande de \texttt{PStricks} aura le même effet et
593 \verb+composeSolid+ sera superflu.
594
595 \begin{center}
596 \psset{viewpoint=40 20 30 rtp2xyz,Decran=16}
597 \JuangJie \hfil
598 \psset{viewpoint=40 110 30 rtp2xyz,Decran=16}
599 \JuangJie
600 \end{center}
601 \begin{center}
602 \psset{viewpoint=40 200 30 rtp2xyz,Decran=16}
603 \JuangJie\hfil
604 \psset{viewpoint=40 290 30 rtp2xyz,Decran=16}
605 \JuangJie
606 \end{center}
607
608
609 \begin{center}
610 \begin{pspicture}(-8,-6)(8,3)
611 \psset{lightsrc=-15 -9 5}
612 \psframe(-8,-6)(8,3)
613 \psset{viewpoint=20 -150 30 rtp2xyz,Decran=11}\MollyBloom
614 \end{pspicture}
615 \end{center}
616 \begin{center}
617 \begin{pspicture}(-8,-6)(8,7)
618 \psset{lightsrc=0 0 3}
619 \psframe(-8,-6)(8,7)
620 \psset{viewpoint=6 -150 90 rtp2xyz,Decran=2.8}\MollyBloom
621 \end{pspicture}
622 \end{center}

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.