Début de la mise en ligne de la documentation et des exemples
[pst-anamorphosis.git] / doc / fig3d-anacon.tex
1 \def\oeil{\psarc[linewidth=2pt](0,2.5){2.5}{215}{270}%
2 \psarc[linewidth=2pt](0,-2.5){2.5}{90}{140}%
3 \psarc(-2.5,0){1}{-30}{30}%
4 \psarc(0,0){1.75}{160}{200}
5 \psclip{%
6 \pscircle[linestyle=none](0,0){1.75}}
7 \pscircle[fillstyle=solid,fillcolor=lightgray](-2.5,0){0.9}
8 \endpsclip}%
9 \begin{center}
10 \psscalebox{0.8}{
11 \begin{pspicture}(-7,-7)(7,10)
12 \newcommand\R{3}
13 \newcommand\hauteur{5}
14 \newcommand\pas{10}
15 \FPeval{\pasrad}{\pas*\FPpi/180}
16 \FPmul{\Largeur}{\R}{\pasrad}
17 \FPdiv{\largeur}{\Largeur}{2}
18 %Les coordonnées de viewpoint
19 \def\vx{1}\def\vy{-0.8}\def\vz{1}
20 \FPeval{\RH}{(\R)/(\hauteur)}
21 \FParctan{\phy}{\RH}
22 \FPeval{\OH}{sin(\phy)*\hauteur}
23 \FPeval{\zH}{sin(\phy)*\OH}
24 \FPeval{\OK}{cos(\phy)*\OH}
25 \FPeval{\generatrice}{root(2,(\hauteur*\hauteur)+(\R*\R))}
26 \psset{viewpoint={\vx} {\vy} {\vz}}
27 \ThreeDput[normal=0 0 1](0,0,0){%%
28 \psframe*[linecolor=gray!25](-10,-10)(10,10)
29 \psaxes(0,0)(-10,-10)(10,10)
30 \pscircle[doubleline=true]{3}
31 \psset{type=conical}
32 \multido{\n=-1.50+0.50}{7}{%
33 \pnode(! \n\space -2.50){A}
34 \pnode(! \n\space -0.50){B}
35 \psline[linecolor=green](A)(B)
36 \pslineA[linecolor=green](A)(B)
37 }
38 \multido{\N=-2.50+0.50}{5}{%
39 \pnode(!-1.50 \N){A}
40 \pnode(!1.50 \N){B}
41 \pslineA[linecolor=green](A)(B)
42 \psline[linecolor=green](A)(B)
43 }
44 %
45 \multido{\n=-1.50+0.50}{7}{%
46 \pnode(! \n\space 2.50){A}
47 \pnode(! \n\space 0.50){B}
48 \psline[linecolor=green](A)(B)
49 \pslineA[linecolor=green](A)(B)
50 }
51 \multido{\N=2.50+-0.50}{5}{%
52 \pnode(!-1.50 \N){A}
53 \pnode(!1.50 \N){B}
54 \pslineA[linecolor=green](A)(B)
55 \psline[linecolor=green](A)(B)
56 }
57 \multido{\n=-1.50+0.50}{7}{%
58 \pnode(! \n\space -2.50){A}
59 \pnode(! \n\space -0.50){B}
60 \psline(A)(B)
61 \pslineA(A)(B)
62 }
63 \multido{\N=-2.50+0.50}{5}{%
64 \pnode(!-1.50 \N){A}
65 \pnode(!1.50 \N){B}
66 \pslineA(A)(B)
67 \psline(A)(B)
68 }
69 \multido{\n=-1.50+0.50}{7}{%
70 \pnode(! \n\space 2.50){A}
71 \pnode(! \n\space 0.50){B}
72 \psline(A)(B)
73 \pslineA(A)(B)
74 }
75 \multido{\N=2.50+-0.50}{5}{%
76 \pnode(!-1.50 \N){A}
77 \pnode(!1.50 \N){B}
78 \pslineA(A)(B)
79 \psline(A)(B)
80 }
81 \psanamorphosis[type=conical,scale=-0.7 -0.7](0,1.5){tiger.eps}
82 \pstextA[fontsize=15,fillcolor=green,scale=1 -1](0,-0.5){Anamorphose}
83 \pscircle[doubleline=true]{3}}
84 \newcount\n \n=0
85 \loop
86 \FPmul{\tempa}{\FPpi}{\the\n}
87 \FPdiv{\angle}{\tempa}{180}
88 \FPsin{\SIN}{\angle}\FPcos{\COS}{\angle}
89 \FPmul{\xH}{\COS}{\OK}
90 \FPmul{\yH}{\SIN}{\OK}
91 \FPdiv{\grise}{\the\n}{360}
92 \FPsub{\gris}{1}{\grise}
93 \FPdiv{\teinte}{\grise}{2}
94 \definecolor{gris}{cmyk}{\teinte,\teinte,\teinte,0}
95 %tester les faces visibles
96 %le produit scalaire du vecteur viewpoint et du vecteur normal à la face >0 ?
97 \FPeval{\costest}{(\vx)*\xH+(\vy)*\yH+(\vz)*\zH}
98 \FPifpos{\costest}
99 \ThreeDput[normal={\xH} {\yH} \zH](0,0,\hauteur){%
100 \pspolygon[linecolor=BleuCiel]%[fillstyle=solid,fillcolor=gris,dimen=outer]%
101 (0,0)(-\largeur,-\generatrice)(\largeur,-\generatrice)}\else{}\fi
102 \FPifneg{\costest}
103 \ThreeDput[normal={\xH} {\yH} \zH](0,0,\hauteur){%
104 \psline[linestyle=dashed,linecolor=gray](0,0)(\largeur,-\generatrice)}\else{}\fi
105 \ifnum\n<360 \advance\n by \pas
106 \repeat
107 %Dessin des faces de dessus et de dessous
108 %\FPifneg\vz
109 %face de dessous
110 %\ThreeDput[normal=0 0 -1](0,0,0){%
111 %\pscircle[fillstyle=solid,fillcolor=lightgray](0,0){\R}\rput(0,0){\Large\textbf{\textsf{Dessous}}}}\fi
112 \ThreeDput[normal=1 0 0](0,0,0){%
113 \psaxes(1,10)
114 \rput{90}(0,12){\oeil}%
115 {\boldmath
116 \red
117 \pnode(0,10){V}
118 \uput[0](V){$V$}
119 \pnode(0,5){S}
120 \uput[0](S){$S$}
121 \pnode(-1.5,2.5){I}
122 \uput[180](I){$I$}
123 \qdisk(I){2pt}
124 \pnode(-2,0){P}
125 \uput[135](P){$P$}
126 \pnode(-4.545,0){P'}
127 \uput[135](P'){$P'$}
128 \psset{linecolor=red}
129 \psline(V)(I)(P')
130 \pcline[nodesepB=2,nodesepA=1,linecolor=red,arrowsize=0.175,arrowinset=0.075]{->}(P')(I)
131 \pcline[nodesepB=4,nodesepA=1,linecolor=red,arrowsize=0.175,arrowinset=0.075]{->}(I)(V)
132 \psline[linestyle=dashed](I)(P)}}%
133 \end{pspicture}
134 }
135 \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.