Retour

par-eclairageponctuel.tex

Télécharger le fichier
\section {\'Eclairage par une source lumineuse ponctuelle}
 
Deux paramètres, l'un positionne la source, l'autre fixe l'intensité
lumineuse :
\begin{itemize}
  \item \Cadre{[lightsrc=20 30 50]} en coordonnées cartésiennes, ou
\Cadre{[lightsrc=viewpoint]} pour faire coïncider la source lumineuse
avec l'observateur.
  \item \Cadre{[lightintensity=2]} (valeur par défaut).
\end{itemize}
 
\begin{center}
\newcommand\LIGHTSRC[3]{%
\pstVerb{
         /xLIGHTSRC #1 def
         /yLIGHTSRC #2 def
         /zLIGHTSRC #3 def
         /RADIUS 4 def
         /THETA yLIGHTSRC xLIGHTSRC atan def
         /DISTANCE xLIGHTSRC dup mul  yLIGHTSRC dup mul add zLIGHTSRC dup mul add sqrt def
         /PHI zLIGHTSRC DISTANCE div arcsin def
         /ALPHA RADIUS DISTANCE div arccos def
         /OH ALPHA cos RADIUS mul def
         /radius_cone ALPHA sin RADIUS mul def
         /Hauteur_cone DISTANCE OH sub def
         /X_C xLIGHTSRC OH mul DISTANCE div def
         /Y_C yLIGHTSRC OH mul DISTANCE div def
         /Z_C zLIGHTSRC OH mul DISTANCE div def
         /rotX_axe_cone PHI 90 sub def
         /rotZ_axe_cone THETA 90 sub def
         }
\psset{Decran=50,viewpoint=50 10 15}
\psSolid[object=sphere,r=RADIUS,fillcolor=blue,ngrid=18 36,
        lightsrc=xLIGHTSRC yLIGHTSRC zLIGHTSRC](0,0,0)
\psPoint(xLIGHTSRC,yLIGHTSRC,zLIGHTSRC){LS}
\psset{lightsrc=}
\psSolid[object=cone,r=radius_cone,h=Hauteur_cone,fillcolor=yellow!50,
       ngrid=1 36,RotX=rotX_axe_cone,RotZ=rotZ_axe_cone,opacity=0.5,
       linecolor=yellow](X_C,Y_C,Z_C)
\psdot(LS)}
 
\begin{pspicture}(-2,-2.5)(5,5)
\psset{unit=0.5}
\LIGHTSRC{0}{8}{8}
\uput[45](LS){Light Source}
\axesIIID(4,4,4)(6,6,6)
\end{pspicture}
\begin{pspicture}(-4,-2.5)(5,2.5)
\psset{unit=0.5}
\LIGHTSRC{2}{-5}{0}
\uput[l](LS){Light Source}
\axesIIID(4,4,4)(6,6,6)
\end{pspicture}
 
\begin{pspicture}(-1,-2.5)(9,2.5)
\psset{unit=0.5}
\LIGHTSRC{0}{20}{0}
\uput[r](LS){Light Source}
\axesIIID(4,4,4)(6,6,6)
\end{pspicture}
\end{center}
 
 
Comme vous pouvez le voir, l'intersection la sphère avec le cône de lumière divise l'objet en deux demi-espaces~: le premier demi-espace (du côté de la source lumineuse) est éclairé et l'autre est dans l'ombre.
 
 
Maintenant, il est clair que, si le point de vue est configuré avec les mêmes coordonnées que la source lumineuse, la totalité de la partie de l'objet qui est représentée est éclairée.
 
 
\encadre{Afin d'obtenir certaines régions ombrées --- mettant ainsi en évidence le caractère 3D --- nous suggérons de choisir la source lumineuse et le point de vue différents.}
 
%\newpage
Voici quelques exemples:
 
\begin{pspicture}(-3,-2)(3,2.5)
\psset{unit=0.3}
\psset{Decran=1e3,
    viewpoint=500 0 1000,
    lightsrc=10 20 30,mode=3}
\psSolid[object=sphere,r=5,fillcolor=blue](0,0,8)
\rput(0,-3.5){\texttt{lightsrc=10 20 30}}
\end{pspicture}
\begin{pspicture}(-3,-2)(3,2.5)
\psset{unit=0.3}
\psset{Decran=1e3,
    viewpoint=500 0 1000,
    lightsrc=-10 -20 30,mode=3}
\psSolid[object=sphere,r=5,fillcolor=blue](0,0,8)
\rput(0,-3.5){\texttt{lightsrc=-10 -20 30}}
\end{pspicture}
\begin{pspicture}(-3,-2)(3,2.5)
\psset{unit=0.3}
\psset{Decran=1e3,
    viewpoint=500 0 1000,
    lightsrc=30 -20 30,mode=3}
\psSolid[object=sphere,r=5,fillcolor=blue](0,0,8)
\rput(0,-3.5){\texttt{lightsrc=30 -20 30}}
\end{pspicture}
 
\textdbend{} Si l'option \texttt{[lightsrc=}\textsl{value1}~\textsl{value2}~\textsl{value3}\texttt{]}
n'est pas spécifiée, l'objet est uniformément éclairé.
 
\begin{center}
 \begin{pspicture}(-6,-4)(6,4)
\psframe(-6,-4)(6,4)
 \psset{Decran=15}
 \psSolid[object=datfile,file=tore1836,deactivatecolor]
 \axesIIID(0,4.5,0)(6,6,4)
 \end{pspicture}
\end{center}
\begin{verbatim}
 \psSolid[r1=3.5,r0=1,object=tore,ngrid=18 36,fillcolor={[rgb]{.372 .62 .628}}]%
\end{verbatim}
 
Voici quelques exemples, où nous conservons le même objet, le même point de vue, la même source lumineuse et faisons varier la valeur de \texttt{lightintensity}~:
 
\begin{pspicture}(-3,-2)(3,3)
\psset{unit=0.3}
\psset{Decran=1e3,
    viewpoint=500 0 1000,
    lightsrc=-10 -20 30,mode=4,lightintensity=1}
\psSolid[object=sphere,r=5,fillcolor=green](0,0,8)
\rput(0,-3.5){\texttt{lightintensity=2}}
\end{pspicture}
\begin{pspicture}(-3,-2)(3,3)
\psset{unit=0.3}
\psset{Decran=1e3,
       viewpoint=500 0 1000,
       lightsrc=-10 -20 30,mode=4,lightintensity=3}
\psSolid[object=sphere,r=5,fillcolor=green](0,0,8)
\rput(0,-3.5){\texttt{lightintensity=3}}
\end{pspicture}
\begin{pspicture}(-3,-2)(3,3)
\psset{unit=0.3}
\psset{Decran=1e3,
    viewpoint=500 0 1000,
    lightsrc=-10 -20 30,mode=4,lightintensity=8}
\psSolid[object=sphere,r=5,fillcolor=green](0,0,8)
\rput(0,-3.5){\texttt{lightintensity=8}}
\end{pspicture}
 
Ici nous pouvons voir que plus la valeur de \texttt{lightintensity} est grande, et plus les nuances de l'ombre du solide s'estompent.