Début de la mise en ligne de la documentation et des exemples
[pst-anamorphosis.git] / doc / fig3d-anacon.tex
diff --git a/doc/fig3d-anacon.tex b/doc/fig3d-anacon.tex
new file mode 100644 (file)
index 0000000..7a16c85
--- /dev/null
@@ -0,0 +1,135 @@
+\def\oeil{\psarc[linewidth=2pt](0,2.5){2.5}{215}{270}%
+\psarc[linewidth=2pt](0,-2.5){2.5}{90}{140}%
+\psarc(-2.5,0){1}{-30}{30}%
+\psarc(0,0){1.75}{160}{200}
+\psclip{%
+\pscircle[linestyle=none](0,0){1.75}}
+\pscircle[fillstyle=solid,fillcolor=lightgray](-2.5,0){0.9}
+\endpsclip}%
+\begin{center}
+\psscalebox{0.8}{
+\begin{pspicture}(-7,-7)(7,10)
+\newcommand\R{3}
+\newcommand\hauteur{5}
+\newcommand\pas{10}
+\FPeval{\pasrad}{\pas*\FPpi/180}
+ \FPmul{\Largeur}{\R}{\pasrad}
+ \FPdiv{\largeur}{\Largeur}{2}
+%Les coordonnées de viewpoint
+\def\vx{1}\def\vy{-0.8}\def\vz{1}
+\FPeval{\RH}{(\R)/(\hauteur)}
+ \FParctan{\phy}{\RH}
+ \FPeval{\OH}{sin(\phy)*\hauteur}
+ \FPeval{\zH}{sin(\phy)*\OH}
+ \FPeval{\OK}{cos(\phy)*\OH}
+ \FPeval{\generatrice}{root(2,(\hauteur*\hauteur)+(\R*\R))}
+\psset{viewpoint={\vx} {\vy} {\vz}}
+\ThreeDput[normal=0 0 1](0,0,0){%%
+\psframe*[linecolor=gray!25](-10,-10)(10,10)
+\psaxes(0,0)(-10,-10)(10,10)
+\pscircle[doubleline=true]{3}
+\psset{type=conical}
+\multido{\n=-1.50+0.50}{7}{%
+    \pnode(! \n\space -2.50){A}
+    \pnode(! \n\space -0.50){B}
+    \psline[linecolor=green](A)(B)
+    \pslineA[linecolor=green](A)(B)
+    }
+\multido{\N=-2.50+0.50}{5}{%
+    \pnode(!-1.50 \N){A}
+    \pnode(!1.50 \N){B}
+    \pslineA[linecolor=green](A)(B)
+    \psline[linecolor=green](A)(B)
+    }
+%
+\multido{\n=-1.50+0.50}{7}{%
+    \pnode(! \n\space 2.50){A}
+    \pnode(! \n\space 0.50){B}
+    \psline[linecolor=green](A)(B)
+    \pslineA[linecolor=green](A)(B)
+    }
+\multido{\N=2.50+-0.50}{5}{%
+    \pnode(!-1.50 \N){A}
+    \pnode(!1.50 \N){B}
+    \pslineA[linecolor=green](A)(B)
+    \psline[linecolor=green](A)(B)
+    }
+\multido{\n=-1.50+0.50}{7}{%
+    \pnode(! \n\space -2.50){A}
+    \pnode(! \n\space -0.50){B}
+    \psline(A)(B)
+    \pslineA(A)(B)
+    }
+\multido{\N=-2.50+0.50}{5}{%
+    \pnode(!-1.50 \N){A}
+    \pnode(!1.50 \N){B}
+    \pslineA(A)(B)
+    \psline(A)(B)
+    }
+\multido{\n=-1.50+0.50}{7}{%
+    \pnode(! \n\space 2.50){A}
+    \pnode(! \n\space 0.50){B}
+    \psline(A)(B)
+    \pslineA(A)(B)
+    }
+\multido{\N=2.50+-0.50}{5}{%
+    \pnode(!-1.50 \N){A}
+    \pnode(!1.50 \N){B}
+    \pslineA(A)(B)
+    \psline(A)(B)
+    }
+\psanamorphosis[type=conical,scale=-0.7 -0.7](0,1.5){tiger.eps}
+\pstextA[fontsize=15,fillcolor=green,scale=1 -1](0,-0.5){Anamorphose}
+\pscircle[doubleline=true]{3}}
+\newcount\n \n=0
+     \loop
+     \FPmul{\tempa}{\FPpi}{\the\n}
+     \FPdiv{\angle}{\tempa}{180}
+     \FPsin{\SIN}{\angle}\FPcos{\COS}{\angle}
+     \FPmul{\xH}{\COS}{\OK}
+     \FPmul{\yH}{\SIN}{\OK}
+     \FPdiv{\grise}{\the\n}{360}
+     \FPsub{\gris}{1}{\grise}
+     \FPdiv{\teinte}{\grise}{2}
+\definecolor{gris}{cmyk}{\teinte,\teinte,\teinte,0}
+%tester les faces visibles
+%le produit scalaire du vecteur viewpoint et du vecteur normal à la face >0 ?
+\FPeval{\costest}{(\vx)*\xH+(\vy)*\yH+(\vz)*\zH}
+   \FPifpos{\costest}
+   \ThreeDput[normal={\xH} {\yH} \zH](0,0,\hauteur){%
+        \pspolygon[linecolor=BleuCiel]%[fillstyle=solid,fillcolor=gris,dimen=outer]%
+        (0,0)(-\largeur,-\generatrice)(\largeur,-\generatrice)}\else{}\fi
+   \FPifneg{\costest}
+   \ThreeDput[normal={\xH} {\yH} \zH](0,0,\hauteur){%
+   \psline[linestyle=dashed,linecolor=gray](0,0)(\largeur,-\generatrice)}\else{}\fi
+     \ifnum\n<360 \advance\n by \pas
+\repeat
+%Dessin des faces de dessus et de dessous
+%\FPifneg\vz
+%face de dessous
+%\ThreeDput[normal=0 0 -1](0,0,0){%
+%\pscircle[fillstyle=solid,fillcolor=lightgray](0,0){\R}\rput(0,0){\Large\textbf{\textsf{Dessous}}}}\fi
+\ThreeDput[normal=1 0 0](0,0,0){%
+\psaxes(1,10)
+\rput{90}(0,12){\oeil}%
+{\boldmath
+\red
+\pnode(0,10){V}
+\uput[0](V){$V$}
+\pnode(0,5){S}
+\uput[0](S){$S$}
+\pnode(-1.5,2.5){I}
+\uput[180](I){$I$}
+\qdisk(I){2pt}
+\pnode(-2,0){P}
+\uput[135](P){$P$}
+\pnode(-4.545,0){P'}
+\uput[135](P'){$P'$}
+\psset{linecolor=red}
+\psline(V)(I)(P')
+\pcline[nodesepB=2,nodesepA=1,linecolor=red,arrowsize=0.175,arrowinset=0.075]{->}(P')(I)
+\pcline[nodesepB=4,nodesepA=1,linecolor=red,arrowsize=0.175,arrowinset=0.075]{->}(I)(V)
+\psline[linestyle=dashed](I)(P)}}%
+\end{pspicture}
+}
+\end{center} 
\ No newline at end of file

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.