summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pst-solides3d/doc/par-nommersolide.tex
blob: 0cea32e3b669ceea5656c2b0cdeec0734e7dacab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
\section {Nommer un solide}

Pour certaines utilisations, on a besoin de stocker un solide en
mémoire afin de pouvoir y faire référence par la suite. Pour ce faire
on dispose du booléen \verb+solidmemory+, qui permet la transmission
d'une variable tout au long de la scène.

En revanche, l'activation de ce booléen désactive le dessin immédiat
des macros \verb+\psSolid+, \verb+\psSurface+ et
\verb+\psProjection+. Pour obtenir ce dessin, on utilise la macro
\verb+\composeSolid+ à la fin de la scène.

Lorsque l'activation \Cadre{$\backslash $psset\{solidmemory\}} est faite, on peut
alors utiliser l'option \Cadre{[name=...]} de la macro \verb+\psSolid+.

Dans l'exemple ci-dessous, on construit un solide coloré, que l'on
sauvagarde sous le nom $A1$. On le dessine ensuite, après coup, en
utilisant l'objet \Cadre{[object=load]} avec le paramètre
\Cadre{[load=$name$]}. 

\`A noter que l'instruction \verb+linecolor=blue+ utilisée lors de la
construction de notre cube n'a pas d'impact sur le dessin~: seule la
structure du solide a été sauvegardé (sommets, faces, couleurs des
faces), pas l'épaisseur de la ligne de tracé ou sa couleur ou la
position de la source lumineuse. C'est au moment du dessin du solide
considéré qu'il faut régler ces paramètres.

Enfin, on remarquera l'utilisation de l'option
\Cadre{[deactivatecolor]} qui permet au cube de garder sa couleur
rouge d'origine (sinon les couleurs par défaut auraient repris le
dessus dans l'objet \verb+load+).

\begin{multicols}{2}
\bgroup
\psset{unit=0.75}
\psset{lightsrc=10 0 10,viewpoint=50 -20 10 rtp2xyz,Decran=50}
\begin{pspicture*}(-4,-4)(5,4)
\psframe(-4,-4)(5,4)
\psset{solidmemory}
\psSolid[object=cube,
      linecolor=blue,
      a=4,fillcolor=red!50,
      ngrid=3,
      action=none,
      name=A,
      ](0,0,0)
\psSolid[object=load,
   deactivatecolor,
   load=A]
\composeSolid
\end{pspicture*}
\egroup

\columnbreak

\begin{verbatim}
\psset{solidmemory}
\psSolid[object=cube,
      linecolor=blue,
      a=4,fillcolor=red!50,
      ngrid=3,
      action=none,
      name=A,
      ](0,0,0)
\psSolid[object=load,
   deactivatecolor,
   load=A]
\composeSolid
\end{verbatim}
\end{multicols}


\llap {\dbend } 
Avec l'option \verb+solidmemory+, les noms de variables sont
relativement bien encapsulés, et il n'y a pas de conflit avec les
variables de dvips par exemple. Il reste par contre le risque de
surcharge des noms utilisés par \verb+solides.pro+. On peut utiliser
tous les noms de variables à un seul carctère alphabétique, mais il
faut éviter d'utiliser des noms comme 
\verb+vecteur+,
\verb+distance+,
\verb+droite+, etc\dots qui sont déjà définis par le package.