Retour

exemples_anamorphose_cylindrique_verticale.tex

Télécharger le fichier Fichier PDF
\documentclass[12pt]{article}
\usepackage{pst-anamorphosis-add,pst-3d}
\usepackage[nomessages]{fp}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amsmath,amssymb}
\usepackage[a4paper,margin=2cm]{geometry}
\pagestyle{empty}
\def\spectateur{
%la pupille
    \SpecialCoor
    \pscurve(1;160)(0.8;180)(1;200)
%colorer la pupille
    \pscustom[linewidth=0.05]{\gsave\psarc(0,0){1}{165}{195}
              \pscurve(1;195)(0.85;180)(1;165)
              \fill[fillstyle=solid,fillcolor=blue]\grestore}
              \pscurve[linewidth=.4pt](1;195)(0.85;180)(1;165)
    %les cils
    {\psset{linewidth=0.05}
    \psarc(0,1){1}{180}{270}
    \psarc(0,-1){1}{90}{180}}
    \psarc(0,0){1}{150}{210}
\pscurve[linewidth=0.075](-.5,3.7)(-1,3)(-1.2,2.5)(-1.3,2)
(-1.4,1)(-1.35,0.5)(-1.2,-.2)(-1.3,-.5)
(-1.4,-1)(-1.5,-1.5)(-1.8,-2)(-1.8,-2.3)%
 (-1.65,-2.5)(-1.35,-2.55)(-.95,-2.8)
(-.95,-3.35)(-1,-3.65)(-.8,-4)(-.4,-4.1)
\pscurve[linewidth=0.075](-0.5,3.7)(0.5,4.3)(2.2,4.7)(4,4.5)(5.6,3.5)(6.3,2)(6.2,0)(5.8,-1.2)(5.1,-2.4)(4.9,-4.2)(5.5,-6)
\pscurve[linewidth=0.075](-.8,-4)(-.8,-4.2)(-.5,-4.5)(-.4,-5)(-.25,-5.5)(0,-5.8)(.5,-6)(1.6,-5.8)(2.1,-5.6)(2.7,-6.5)(3.1,-7.2)
\pscurve[linewidth=0.1](-1.4,1)(-1,1.5)(0.2,1)
\pscurve[linewidth=0.075](2.8,0.2)(3.4,0.7)(4,0.2)(4.2,-0.8)(4,-1.5)(3,-2)(2.8,-1.5)
\pscurve[linewidth=0.075](-1.5,-2.5)(-1.2,-2.45)(-0.8,-2.6)(-0.5,-2.5)(-0.7,-2)}
 
\begin{document}
\psscalebox{0.5}{
\begin{pspicture}(-14,-12)(14,11)
\psframe[linecolor=red](-16,-12)(20,11)
\newcommand\Rmirror{2}
\newcommand\vx{-1}
\newcommand\vy{-1}
\newcommand\vz{1}
\pstVerb{/ANGLE \vy\space \vx\space atan def
         /XC1 \Rmirror\space ANGLE -90 add cos mul def
         /YC1 \Rmirror\space ANGLE 90 add sin mul neg def
         /XC2 \Rmirror\space ANGLE -90 add cos mul neg def
         /YC2 \Rmirror\space ANGLE 90 add sin mul def}%
\psset{viewpoint={\vx} {\vy} {\vz}}
\ThreeDput[normal=0 0 1](0,0,0){%
\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=lightgray,griddots=10](-13,-14)(13,10)
\psset{Yv=-20,Xv=0,Zv=15,type=cylindricalV,Rmirror=\Rmirror}
\psframe[linecolor=red](-13,10)(13,-14)
\multido{\n=-2.0+0.5}{9}{%
    \pnode(! \n\space 0){A}
    \pnode(! \n\space 5){B}
%    \psline(A)(B)
    \pslineA(A)(B)
    }
\multido{\N=0+0.5}{11}{%
    \pnode(!-2 \N){A}
    \pnode(!2 \N){B}
    \pslineA(A)(B)
%    \psline(A)(B)
    }
\psanamorphosis[drawanamorphosis=true,image](0,2.5){sylvestre.eps}
\psarcn[linecolor=blue,linewidth=0.05](0,0){\Rmirror}{! ANGLE 90 add}{! ANGLE 90 sub}
\psarc[linestyle=dashed](0,0){\Rmirror}{! ANGLE 90 add}{! ANGLE 90 sub}
\pnode(!XC1 YC1){A1}
\pnode(!XC2 YC2){A2}
}
\ThreeDput[normal=0 -1 0](0,0,0){%
\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=lightgray,griddots=10](-13,0)(13,6)
\psframe[linecolor=red](-13,0)(13,6)
\psframe[fillstyle=solid](-2,0)(2,5)
\multido{\n=-2.0+0.5}{9}{%
    \pnode(! \n\space 0){A}
    \pnode(! \n\space 5){B}
    \psline(A)(B)
    }
\multido{\N=0+0.5}{11}{%
    \pnode(!-2 \N){A}
    \pnode(!2 \N){B}
    \psline(A)(B)
    }
\psanamorphosis[drawanamorphosis=false,image=true](0,2.5){sylvestre.eps}
    }
\ThreeDput[normal=0 0 1](0,0,6){%
\pscircle[linecolor=blue,linewidth=0.05](0,0){\Rmirror}
\pnode(!XC1 YC1){B1}
\pnode(!XC2 YC2){B2}
}
\psline[linecolor=blue,linewidth=0.05](A1)(B1)
\psline[linecolor=blue,linewidth=0.05](A2)(B2)
\ThreeDput[normal=-1 0 0](0,0,0){%
\pnode(20,15){V}
%\pnode(20,0){Vx}
%\pnode(0,15){Vy}
\rput{30}(V){\psscalebox{0.5}{\spectateur}}
}
%\psline[linestyle=dashed](Vy)(V)(Vx)
%\psline[linestyle=dashed](0,0)(Vx)
%\psline[linestyle=dashed](Vy)(0,0)
\end{pspicture}}
 
La position du spectateur est déterminée par les paramètres \verb+\psset{Yv=-20,Xv=0,Zv=15}+. On pourra placer l'\oe{}il de l'observateur dans le schéma avec les commandes suivantes :
\begin{verbatim}
\ThreeDput[normal=-1 0 0](0,0,0){%
\pnode(20,15){V}
\rput{30}(V){\psscalebox{0.5}{\spectateur}}
}
\end{verbatim}
Un autre personnage et un autre point de vue :
 
\psscalebox{0.5}{
\begin{pspicture}(-14,-8)(14,11)
\psframe[linecolor=red](-18,-8)(21,9)
\newcommand\Rmirror{2}
\newcommand\vx{-1}
\newcommand\vy{-1}
\newcommand\vz{0.5}
\pstVerb{/ANGLE \vy\space \vx\space atan def
         /XC1 \Rmirror\space ANGLE -90 add cos mul def
         /YC1 \Rmirror\space ANGLE 90 add sin mul neg def
         /XC2 \Rmirror\space ANGLE -90 add cos mul neg def
         /YC2 \Rmirror\space ANGLE 90 add sin mul def}%
\psset{viewpoint={\vx} {\vy} {\vz}}
\ThreeDput[normal=0 0 1](0,0,0){%
\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=lightgray,griddots=10](-15,-15)(14,11)
\psset{Yv=-20,Xv=0,Zv=10,type=cylindricalV,Rmirror=\Rmirror}
\psframe[linecolor=red](-15,11)(14,-15)
\pslineA[fillstyle=solid,fillcolor=yellow!20](-2,0)(2,0)(2,3.5)(-2,3.5)(-2,0)
\multido{\n=-2.0+0.5}{9}{%
    \pnode(! \n\space 0){A}
    \pnode(! \n\space 3.5){B}
%    \psline(A)(B)
    \pslineA(A)(B)
    }
\multido{\N=0+0.5}{8}{%
    \pnode(!-2 \N){A}
    \pnode(!2 \N){B}
    \pslineA(A)(B)
%    \psline(A)(B)
    }
\psanamorphosis[drawanamorphosis=true,image](0,0){mickey2.eps}
\psarcn[linecolor=blue,linewidth=0.05](0,0){\Rmirror}{! ANGLE 90 add}{! ANGLE 90 sub}
\psarc[linestyle=dashed](0,0){\Rmirror}{! ANGLE 90 add}{! ANGLE 90 sub}
\pnode(!XC1 YC1){A1}
\pnode(!XC2 YC2){A2}
}
\ThreeDput[normal=0 -1 0](0,0,0){%
\psgrid[gridlabels=0pt,subgriddiv=0,gridcolor=lightgray,griddots=10](-15,0)(14,6)
\psframe[linecolor=red](-15,0)(14,6)
\psframe[fillstyle=solid,fillcolor=yellow!20](-2,0)(2,3.5)
\multido{\n=-2.0+0.5}{9}{%
    \pnode(! \n\space 0){A}
    \pnode(! \n\space 3.5){B}
    \psline(A)(B)
    }
\multido{\N=0+0.5}{8}{%
    \pnode(!-2 \N){A}
    \pnode(!2 \N){B}
    \psline(A)(B)
    }
\psanamorphosis[drawanamorphosis=false,image=true](0,0){mickey2.eps}
    }
\ThreeDput[normal=0 0 1](0,0,5){%
\pscircle[linecolor=blue,linewidth=0.05](0,0){\Rmirror}
\pnode(!XC1 YC1){B1}
\pnode(!XC2 YC2){B2}
}
\psline[linecolor=blue,linewidth=0.05](A1)(B1)
\psline[linecolor=blue,linewidth=0.05](A2)(B2)
\ThreeDput[normal=-1 0 0](0,0,0){%
\pnode(20,10){V}
%\pnode(20,0){Vx}
%\pnode(0,15){Vy}
\rput{30}(V){\psscalebox{0.5}{\spectateur}}
}
%\psline[linestyle=dashed](Vy)(V)(Vx)
%\psline[linestyle=dashed](0,0)(Vx)
%\psline[linestyle=dashed](Vy)(0,0)
\end{pspicture}}
\end{document}