\section {Texte}

L'objet \Cadre{\texttt{texte}} de la macro \verb+\psProjection+  permet
de projeter des chaînes de caractères sur des plans quelconques.

\subsection {Les paramètres et les options}

Il y a $3$ paramètres : \Cadre{\texttt{[text]}} qui définit la chaîne à afficher,
\Cadre{\texttt{[fontsize]}}, qui donne la taille de la fonte en
points (rappelons qu'une taille de 28,45~pts correspond à 1~cm), et
enfin \Cadre{\texttt{[pos]}}, qui définit la position
du texte par rapport au point visé. Par défaut le texte est centré sur
l'origine du plan.

Ce dernier paramètre nécessite un peu d'explications. Considérons la
chaîne de caractères \texttt{petit texte} représentée ci-dessous.
\begin{center}
\begin{pspicture}(-5,-2)(5,2)
\rput(0,0){\psframebox[linestyle=none,fillstyle=solid,
   fillcolor=yellow!50,framesep=0pt]{\phantom{\timesnormal petit texte}}}
\rput(0,0){\rnode[lb]{A}{\rnode[rb]{B}{\rnode[rt]{C}{%
    \rnode[lt]{D}{\rnode[l]{E}{\rnode[r]{F}{%
    \rnode[t]{G}{\rnode[b]{H}{\timesnormal petit texte}}}}}}}}}
%\psset{nodesep=5pt}
\ncline{A}{B}\ncline{B}{C}\ncline{C}{D}\ncline{D}{A}
\pnode({A}){A'}
\pnode({B}){B'}
\pnode({C}){C'}
\pnode({D}){D'}
\pnode({E}){E'}
\pnode({F}){F'}
\pnode({G}){G'}
\pnode({H}){H'}
\rput(A){\pnode(0,\baselineskip){B1}}
\rput(B){\pnode(0,\baselineskip){B2}}
\psdots(A')(B')(C')(D')(E')(F')(G')(H')(B1)(B2)(0,0)
\psline(B1)(B2)
\pnode(! \GetCenter{A} A.x 0.5 sub A.y 0.5 sub){A1}
\ncline{->}{A}{A1}
\uput[dl](A1){\texttt{dl}}
\pnode(! \GetCenter{B1} B1.x 0.5 sub B1.y){B1l}
\ncline{->}{B1}{B1l}
\uput[l](B1l){\texttt{bl}}
\pnode(! \GetCenter{E} E.x 0.5 sub E.y){El}
\ncline{->}{E}{El}
\uput[l](El){\texttt{cl}}
\pnode(! \GetCenter{D} D.x 0.5 sub D.y 0.5 add){Dl}
\ncline{->}{D}{Dl}
\uput[ul](Dl){\texttt{ul}}
\pnode(! \GetCenter{G} G.x G.y 0.5 add){Gu}
\ncline{->}{G}{Gu}
\uput[u](Gu){\texttt{uc}}
\pnode(! \GetCenter{H} H.x H.y 0.5 sub){Hd}
\ncline{->}{H}{Hd}
\uput[d](Hd){\texttt{dc}}
\pnode(! \GetCenter{C} C.x 0.5 add C.y 0.5 add){Cr}
\ncline{->}{C}{Cr}
\uput[ur](Cr){\texttt{ur}}
\pnode(! \GetCenter{B} B.x 0.5 add B.y 0.5 sub){Br}
\ncline{->}{B}{Br}
\uput[dr](Br){\texttt{dr}}
\pnode(! \GetCenter{B2} B2.x 0.5 add B2.y){B2r}
\ncline{->}{B2}{B2r}
\uput[r](B2r){\texttt{br}}
\pnode(! \GetCenter{F} F.x 0.5 add F.y){Fr}
\ncline{->}{F}{Fr}
\uput[r](Fr){\texttt{cr}}
\end{pspicture}
\end{center}

Nous avons $4$~lignes horizontales de références~: la ligne
inférieure \verb+(d)own+, la ligne de base \verb+(b)aseline+, la
ligne médiane, ou ligne centrale \verb+(c)enter+, et la ligne
supérieure \verb+(u)p+.

Il y a également $4$~lignes de référence sur l'axe vertical~: la ligne
de gauche \verb+(l)eft+, la ligne de base \verb+(b)aseline+, la ligne
centrale \verb+(c)enter+ et la ligne de droite \verb+(r)ight+. Dans le
cas d'une chaîne de caractère, les $2$ lignes verticales \verb+l+ et
\verb+b+ sont confondues.

L'intersection de ces $4$ lignes horizontales avec ces $4$ lignes
verticales nous donne $16$~points appelés
\verb+dl+,
\verb+bl+,
\verb+cl+,
\verb+ul+,
\verb+db+,
\verb+bb+,
\verb+cb+,
\verb+ub+,
\verb+dc+,
\verb+bc+,
\verb+cc+,
\verb+uc+,
\verb+dr+,
\verb+br+,
\verb+cr+,
\verb+ur+.

Parmi ceux-ci, $4$~sont considérés comme \textsl {points
intérieurs\/}~: \verb+bb+, \verb+bc+, \verb+cb+ et \verb+cc+.

Lorsque le paramètre \verb+[pos]+ de \verb+\psProjection+ est affecté à
l'un de ces $4$~points, cela signifie que ce dernier doit être
positionné au point d'origine du plan de projection.

Lorsque le paramètre \verb+[pos]+ de \verb+\psProjection+ est affecté à
l'un des $12$~points restant, cela indique une direction dans laquelle
doit être positionné le texte par rapport au point d'origine du plan
de projection.

Par exemple, \verb+\psProjection[...,pos=uc](0,0)+ indique que le
texte doit être centré par rapport au point $(0,0)$ et affiché
au-dessus.

%% Le plan doit être défini par son origine
%% \Cadre{$\mathtt{(x_0ny_0,z_0)}$} et la normale
%% \Cadre{\texttt{[normal=1 0 0 90]}}. Pour les particularités
%% de la définition de la normale, car il y a trois façons de le faire !
%% Tous les détails sont dans la partie \Cadre{\texttt{``Choisir un plan
%%     par son origine et une normale''}} de la documentation de
%% \texttt{doc-psProjection}.

%% La taille de la fonte doit être fixée en points avec l'option
%% . .


\subsection {Exemples de projetés sur un plan quelconque}

\subsubsection {Exemple 1 : projection sur Oxy, avec l'option \texttt{pos=bc}}

\begin{LTXexample}[width=8cm]
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,
   viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-4 4 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   pos=bc,plan=monplan,
   text=j'aimerais tant voir Syracuse,
](0,0)%
\axesIIID(0,0,0)(4,2,1)
\composeSolid
\end{pspicture}
\end{LTXexample}

\subsubsection{Exemple 2 : projection Oxy, texte centré}

\begin{LTXexample}[width=8cm]
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,
   viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-4 4 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   text= L'île de Pâques et Kairouan,
   plan=monplan]%
\axesIIID(0,0,0)(4,2,1)
\end{pspicture}
\end{LTXexample}



\subsubsection {Exemple 3 : projection Oxy,  avec différentes options \texttt{pos=dl, etc.}}

\begin{center}
\psset{unit=.8}
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   text=Et les grands oiseaux qui s'amusent,
   pos=dl,
   plan=monplan]%
\axesIIID(0,0,0)(8,1,1)
\rput(0,-1.5){\Cadre{\texttt{[pos=dl]}}}
\end{pspicture}
\end{center}

\begin{center}
\psset{unit=.8}
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   text= A glisser l'aile sous le vent.,
   pos=dr,
   plan=monplan]%
\axesIIID(0,0,0)(8,1,1)
\rput(0,-1.5){\Cadre{\texttt{[pos=dr]}}}
\end{pspicture}
\end{center}

\begin{center}
\psset{unit=.8}
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   text=Avant que ma jeunesse s'use,
   pos=ur,
   plan=monplan]%
\axesIIID(0,0,0)(8,1,1)
\rput(0,-1.5){\Cadre{\texttt{[pos=ur]}}}
\end{pspicture}
\end{center}

\begin{center}
\psset{unit=.8}
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   text=Et que mes printemps soient partis,
   pos=ul,
   plan=monplan]%
\axesIIID(0,0,0)(8,1,1)
\rput(0,-1.5){\Cadre{\texttt{[pos=ul]}}}
\end{pspicture}
\end{center}

\begin{center}
\psset{unit=.8}
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   text=J'aimerais tant voir Syracuse,
   pos=uc,
   plan=monplan]%
\axesIIID(0,0,0)(8,1,1)
\rput(0,-1.5){\Cadre{\texttt{[pos=uc]}}}
\end{pspicture}
\end{center}

\begin{center}
\psset{unit=.8}
\begin{pspicture}(-4,-1.5)(4,1.5)
\psset{solidmemory}
\psset{lightsrc=10 0 10,viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-10 10 -1 1,args={0 0 0 [0 0 1 90]},name=monplan,]
\psProjection[object=texte,
   fontsize=20,linecolor=red,
   text=Pour m'en souvenir à Paris.,
   pos=dc,
   plan=monplan]%
\axesIIID(0,0,0)(8,1,1)
\rput(0,-1.5){\Cadre{\texttt{[pos=dc]}}}
\end{pspicture}
\end{center}

\subsubsection {Exemple 4 : projection Oxy avec rotation du texte}

\begin{LTXexample}[width=8cm]
\begin{pspicture}(-4,-3)(4,3)
\psset{solidmemory}
\psset{lightsrc=10 0 10,
   viewpoint=50 -90 90 rtp2xyz,Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-4 4 -3 3,args={0 0 0 [0 0 1 90]},name=monplan,]
\psset{plan=monplan}
\psProjection[object=texte,
   fontsize=28.45,linecolor=gray!50,
   text=Tournez manèges]%
\psProjection[object=texte,
   fontsize=28.45,linecolor=red,
   text=Tournez manèges,
   phi=60]%
\axesIIID(0,0,0)(4,3,1)
\end{pspicture}
\end{LTXexample}
La rotation du texte s'introduit avec le paramètre \Cadre{\texttt{phi=60}}.

\subsubsection{Exemple 5 : positionnement du texte en un point quelconque}

\begin{LTXexample}[width=8cm]
\begin{pspicture}(-4,-3)(4,3)
\psset{solidmemory}
\psset{viewpoint=50 -90 90 rtp2xyz,
   Decran=50}
\psSolid[object=plan,definition=normalpoint,plangrid,
   base=-4 4 -3 3,args={0 0 0 [0 0 1 90]},name=monplan,]
\psset{fontsize=28.45,plan=monplan}
\psProjection[object=texte,
   linecolor=green,
   text=ici](-2,-2)
\psProjection[object=texte,
   linecolor=red,
   text=ou]%
\psProjection[object=texte,
   linecolor=blue,
   text=là](2,2)
\psPoint(0,0,0){O}
\psPoint(-2,-2,0){O1}
\psPoint(2,2,0){O2}
\psdots[dotsize=0.2](O)(O1)(O2)
\axesIIID(0,0,0)(4,4,1)
\end{pspicture}
\end{LTXexample}

\subsection{Exemples de projections sur une face d'un solide}

\subsubsection {Méthode}

Le solide doit être mémorisé avec l'option générale
\Cadre{$\backslash$psset$\{$solidmemory$\}$}. La première chose à faire est de
repérer les numéros des faces du solide
avec l'option \Cadre{\texttt{[numfaces=all]}}.
\begin{LTXexample}[width=8cm]
\psset{viewpoint=50 20 30 rtp2xyz,Decran=100}
\begin{pspicture}(-4,-4)(4,4)
\psframe(-4,-4)(4,4)
\psSolid[object=cube,a=2,action=draw,
   linecolor=red,numfaces=all]%
\axesIIID(1,1,1)(2,2,2)
\end{pspicture}
\end{LTXexample}

Puis on définit le plan de projection par la face choisie, ici on affiche
\Cadre{\texttt{A}} sur la face de numéro $0$~:
\begin{gbar}
\begin{verbatim}
\psSolid[object=plan,definition=solidface,args=A 0,name=P0]
\psProjection[object=texte,linecolor=red,text=A,plan=P0]%
\end{verbatim}
\end{gbar}

\begin{LTXexample}[width=8cm]
\psset{viewpoint=50 20 30 rtp2xyz,Decran=50}
\begin{pspicture}(-3,-4)(4,5)
\psset{unit=0.5}
\psset{solidmemory}
\psSolid[object=cube,a=8,action=draw,name=A,linecolor=red]%
\psset{fontsize=100}
\psSolid[object=plan,action=none,
   definition=solidface,args=A 0,name=P0]
\psProjection[object=texte,linecolor=red,text=A,plan=P0]%
\psSolid[object=plan,action=none,
   definition=solidface,args=A 1,name=P1]
\psProjection[object=texte,linecolor=red,text=B,plan=P1]%
\psSolid[object=plan,action=none,
   definition=solidface,args=A 4,name=P4]
\psProjection[object=texte,linecolor=red,text=E,plan=P4]%
\axesIIID(4,4,4)(6,6,6)
\end{pspicture}
\end{LTXexample}

\subsubsection {Rotation du texte avec l'option \texttt{phi}}

\begin{LTXexample}[width=8cm]
\psset{viewpoint=50 20 30 rtp2xyz,Decran=50}
\psset{unit=0.5}
\begin{pspicture}(-3,-4)(4,5)
\psset{solidmemory}
\psSolid[object=cube,a=8,action=draw,linecolor=red,name=A]%
\psset{fontsize=200}
\psSolid[object=plan,action=none,
   definition=solidface,args=A 0,name=P0]
\psProjection[object=texte,linecolor=gray,text=A,plan=P0]%
\psset{phi=90}
\psProjection[object=texte,linecolor=red,text=A,plan=P0]%
\axesIIID(4,4,4)(6,6,6)
\end{pspicture}
\end{LTXexample}


\subsection{Exemples de projections sur différentes faces d'un solide}

\definecolor{rose}{rgb}{1,0.75,0.74}

\def\JuangJie{%
\begin{pspicture}(-3.5,-2)(3.5,4)
\psframe[fillcolor=cyan!50,fillstyle=solid](-3.5,-2)(3.5,4)%
\psSolid[object=cylindre,r=8,h=0.2,ngrid=1 36,action=draw**,hue=0.5 0.6]%
\psSolid[object=cube,a=8,h=0.2,ngrid=1 36,action=draw**,color1=magenta!50,
  color2=red!20,color3=yellow!50,color4=green!50,
  fcol=0 (color1) 1 (color2) 2 (color3) 3 (color4) 4(White)](0,0,4.2)%
\psset{solidmemory}%
\psSolid[object=cube,a=8,
   name=A,
   action=none](0,0,4.2)%
%% la face 0
\psSolid[object=plan,action=none,definition=solidface,
   base=-4 4 -4 4,args=A 0,name=P0]%
%\psSolid[object=plan,definition=plan,action=none,args=P0,planmarks,action=none,]%
\psset{fontsize=30,plan=P0}%
\psProjection[object=texte,text=poème](0,3)%
\psProjection[object=texte,text=de](0,2)%
\psset{fontsize=55}
\psProjection[object=texte,linecolor=red,text=Juang Jie]
%% la face 4
\psSolid[object=plan,action=none,definition=solidface,base=-4 4 -4 4,args=A 4,phi=-90,name=P4]%
%\psSolid[object=plan,definition=plan,action=none,args=P4,fontsize=10,planmarks,action=none]%
\psset{fontsize=28.45,pos=bc,plan=P4}
\psProjection[object=texte,text={Dans ma jeunesse,}](0,3)%
\psset{fontsize=20}
\psProjection[object=texte,text=j'écoutais le son de la pluie](0,2)%
\psProjection[object=texte,text=dans les maisons de plaisir](0,1)%
\psProjection[object=texte,text=les tentures frissonnaient]%
\psProjection[object=texte,text=sous la lumière rouge](0,-1)%
\psProjection[object=texte,text=des candélabres](0,-2)%
%% la face 1
\psSolid[object=plan,action=none,definition=solidface,base=-4 4 -4 4,args=A 1,phi=180,name=P1]%
%\psSolid[object=plan,definition=plan,action=none,args=P1,fontsize=10,planmarks,action=none]%
\psset{plan=P1}
\psProjection[object=texte,fontsize=25,text=Dans mon âge mûr](0,3)%
\psProjection[object=texte,text=j'ai écouté le son de la pluie](0,2)%
\psProjection[object=texte,fontsize=18,text={en voyage, à bord d'un bateau}](0,1)%
\psProjection[object=texte,text=les nuages pesaient bas]%
\psProjection[object=texte,text=sur l'immensité du fleuve](0,-1)%
\psProjection[object=texte,text=une oie sauvage ](0,-2)%
\psProjection[object=texte,text=séparée de ses soeurs](0,-3)%
%% la face 2
\psSolid[object=plan,action=none,definition=solidface,base=-4 4 -4 4,args=A 2,phi=180,name=P2]%
%\psSolid[object=plan,definition=plan,action=none,args=P2,fontsize=10,planmarks,action=none]%
\psset{plan=P2}
\psProjection[object=texte,text=appelait dans le vent d'ouest](0,3)%
\psProjection[object=texte,text={Aujourd'hui,}](0,2)%
\psProjection[object=texte,text=j'écoute le son de la pluie](0,1)%
\psProjection[object=texte,text=sous le charme]%
\psProjection[object=texte,text=d'un ermitage monastique](0,-1)%
\psProjection[object=texte,text=Ma tête est chenue](0,-2)%
\psProjection[object=texte,text=chagrins et bonheurs](0,-3)%
%% la face 3
\psSolid[object=plan,action=none,definition=solidface,args=A 3,phi=180,name=P3]%
%\psSolid[object=plan,definition=plan,action=none,args=P3,fontsize=10,planmarks,action=none]%
\psset{plan=P3}
\psProjection[object=texte,text=séparations et retrouvailles](0,3)%
\psProjection[object=texte,text=tout est vanité](0,2)%
\psProjection[object=texte,text={Dehors, sur les marches}](0,1)%
\psProjection[object=texte,text=les gouttes tambourinent]%
\psProjection[object=texte,text= jusqu'à l'aube](0,-1)%
\psProjection[object=texte,text=Juang Jie ](0,-3)%
\composeSolid
\end{pspicture}}

\def\MollyBloom{%
%\psset{lightsrc=-15 -9 5}
%\psset{viewpoint=20 -150 30 rtp2xyz,Decran=11}
\psset{solidmemory,visibility}
%% le plan de base
\psSolid[object=plan,
   definition=equation,
   ngrid=1. 1.,
   args={[0 0 1 0]},linecolor=red,
   base=-8 10 -8 8,
   linecolor=red,
   name=G]%
\psset{fontsize=25,,pos=bc,plan=G}
\psProjection[object=texte,
   phi=-90,
   text=le monologue de Molly,
   pos=bc,
   ](-5,0)
\psProjection[object=texte,text=dans Ulysse de James Joyce](1,-5,0)
\psset{h=1,fillcolor=yellow!50,incolor=rose,hollow}
\psset{fontsize=20,pos=cc}
%
\psSolid[object=ruban,name=ruban1,base=9 8 9 -8]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=O cet effrayant torrent tout au fond O et la mer écarlate]
%
\psSolid[object=ruban,name=ruban1,base=9 -8 -8 -8]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=quelquefois comme du feu et les glorieux couchers de soleil et]
%
\psSolid[object=ruban,name=ruban1,base=-8 7 7 7]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,fontsize=18,
   text=les ruelles bizarres les maisons roses et bleues et jaunes,]
%
\psSolid[object=ruban,name=ruban1,base=7 7 7 -6]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=et les roseraies et les jasmins et les géraniums,]
%
\psSolid[object=ruban,name=ruban1,base=7 -6 -6 -6]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=et les cactus de Gibraltar quand j'étais jeune fille,]
%
\psSolid[object=ruban,name=ruban1,base=-6 5 5 5]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,fontsize=18,
   text=quand j'ai mis la rose dans mes cheveux,]
%
\psSolid[object=ruban,name=ruban1,base=5 5 5 -4]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=comme les filles Andalouses,]
%
\psSolid[object=ruban,name=ruban1,base=5 -4 -3 -4]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=ou en mettrai-je une rouge oui,]
%
\psSolid[object=ruban,name=ruban1,base=-3 4 3 4]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,fontsize=18,
   text=sous le mur mauresque,]
%
\psSolid[object=ruban,name=ruban1,base=3 4 3 -2]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=je me suis dit après,]
%
\psSolid[object=ruban,name=ruban1,base=3 -2 -1.5 -2]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=tout aussi bien,]
%
\psSolid[object=ruban,name=ruban1,base=-1.5 3 2 3]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=et alors je,]
\psSolid[object=ruban,name=ruban1,base=-8 -8 -8 7]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=les figuiers dans les jardins de l'Alameda et toutes,]
%
\psSolid[object=ruban,name=ruban1,base=-6 -6 -6 5]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=et une Fleur de la montagne oui,]
%
\psSolid[object=ruban,name=ruban1,base=-3 -4 -3 4]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=et comme il m'a embrassée,]
%
\psSolid[object=ruban,name=ruban1,base=-1.5 -2 -1.5 3]
\psSolid[object=plan,action=none,definition=solidface,args=ruban1 0,name=R0,phi=-90]
\psProjection[object=texte,plan=R0,
   text=lui qu'un autre,]
%
\composeSolid
}


Nous projetons un poème, vers après vers, sur 4 faces d'un cube.
Il est nécessaire de passer l'option \Cadre{solidmemory} au début des
commandes. On définit ensuite le cube, que l'on mémorise à l'aide de la
commande \Cadre{name=A}~:
\begin{verbatim}
\psset{solidmemory}
\psSolid[object=cube,a=8,name=A1](0,0,4.2)%
\end{verbatim}

Le numéro de chaque face ayant été repéré dans un essai préalable avec
l'option \Cadre{numfaces=all}, les commandes suivantes~:
\begin{verbatim}
\psSolid[object=plan,action=none,definition=solidface,args=A 0,name=P0]%
\psProjection[object=texte,text=poème,fontsize=30,plan=P0](0,3)%
\end{verbatim}
définissent tout d'abord le plan $P0$ comme étant le plan orienté défini par la face
d'indice $0$ du solide $A$, avant de demander
l'impression du  mot \texttt{poème} sur le plan $P0$, avec une fonte de
taille \Cadre{30~pts}, au point de coordonnées  \Cadre{(0,3)} (dans le
repère lié à ce plan). On aurait pu changer l'orientation du texte
avec \Cadre{phi=-90} par exemple, dans l'une ou l'autre de ces commandes.

Par défaut, si la face n'est pas visible le texte reste caché. En
écrivant \Cadre{visibility} dans les options, le texte apparaîtra
même s'il est caché comme dans l'exemple suivant.

On n'oubliera pas d'écrire à la fin des commandes d'écriture des
textes\Cadre{$\backslash$composeSolid}, pour que tous ces tracés
soient pris en compte.
Toute autre commande de \texttt{PStricks} aura le même effet et
\verb+composeSolid+ sera superflu.

\begin{center}
\psset{viewpoint=40 20 30 rtp2xyz,Decran=16}
\JuangJie \hfil
\psset{viewpoint=40 110 30 rtp2xyz,Decran=16}
\JuangJie
\end{center}
\begin{center}
\psset{viewpoint=40 200 30 rtp2xyz,Decran=16}
\JuangJie\hfil
\psset{viewpoint=40 290 30 rtp2xyz,Decran=16}
\JuangJie
\end{center}


\begin{center}
\begin{pspicture}(-8,-6)(8,3)
\psset{lightsrc=-15 -9 5}
\psframe(-8,-6)(8,3)
\psset{viewpoint=20 -150 30 rtp2xyz,Decran=11}\MollyBloom
\end{pspicture}
\end{center}
\begin{center}
\begin{pspicture}(-8,-6)(8,7)
\psset{lightsrc=0 0 3}
\psframe(-8,-6)(8,7)
\psset{viewpoint=6 -150 90 rtp2xyz,Decran=2.8}\MollyBloom
\end{pspicture}
\end{center}
